我试图找出为什么多个搜索域不适用于 Debian 8.8.0。如果您在 /etc/resolv.conf 中添加搜索域,它将仅适用于其中一个域,在这种情况下,domain1.local 可以工作,但 domain2.local 则不能。
如果您手动附加 FQDN,则效果很好。这适用于所有基于 CLI 的工具:nslookup、ping、iperf、nmap、curl、wget 等。我以前见过 Debian 不支持 .local 域的情况 - 你必须删除 avahi,我已经这样做了,以使第一个 .local 域正常工作:domain1.local。
我有多个 .local 和其他域可以工作,但在这个版本的 Debian 中8.8.x
它不起作用。
user@host:~$ uname -a
Linux host 3.16.0-4-amd64 #1 SMP Debian 3.16.43-2+deb8u2 (2017-06-26) x86_64 GNU/Linux
user@host:~$ cat /etc/resolv.conf
nameserver 192.16.1.110
### Standard Search domains:
search domain1.local domain2.local domain3.local domain4.local
搜索域-domain1自动附加domain1.local并适用于nslookup、ping等。
user@host:~$ ping host1
PING host1.domain1.local (192.16.1.110) 56(84) bytes of data.
64 bytes from host1.domain1.local (192.16.1.110): icmp_seq=1 ttl=118 time=63.6 ms
user@host:~$ nslookup host1
Server: 192.16.1.110
Address: 192.16.1.110#53
Name: host1.domain1.local
Address: 192.16.1.110
在此示例中,domain2 不会自动附加到主机 (hosty)。它不会nslookup
从 dns 服务器中找到 hosty /etc/resolv.fon
(尽管它确实存在)。但是 - 如果您附加FQDN
并运行nslookup
、ping
、curl
、nmap
或wget
任何其他基于 cli 的 ip 通信,它就可以工作。
user@host:~$ nslookup hosty
;; Got SERVFAIL reply from 192.16.1.110, trying next server
;; Got SERVFAIL reply from 192.16.1.111, trying next server
Server: 192.16.1.110
Address: 192.16.1.110#53
** server can't find hosty: SERVFAIL
user@host:~$ ping hosty
ping: unknown host hosty
如果我们在主机末尾附加domain2.local,它可以 ping、nslookup 或其他。
ping、nslookup 和curl 与 FQDN 一起使用
user@host:~$ ping hosty.domain2.local
PING hosty.domain2.local (192.16.48.20) 56(84) bytes of data.
64 bytes from hosty.domain2.local (192.16.48.20): icmp_seq=1 ttl=119 time=63.6 ms
nslookup with fqdn:
user@host:~$ nslookup hosty.domain2.local
Server: 192.16.1.110
Address: 192.16.1.110#53
Name: hosty.domain2.local
Address: 192.16.48.20
user@host:~$ curl hosty.domain2.local
curl: (7) Failed to connect to hosty.domain2.local port 80: Connection refused
值得一提的是,我在使用大约 7 个搜索域的 Ubuntu 16.04 工作站上具有相同的配置。
新的 Debian 8.8.x 服务器在处理超过 1 个搜索域时存在问题。我肯定缺少 Debian 所需的一些简单的附加配置,它与 Ubuntu 略有不同。
答案1
好吧 - 所以这是我的疏忽,但问题是这样的。我在参数domain1.local
下列出了domain
/etc/resolv.conf
### Standard Search domains:
search domain1.local domain2.local
domain domain1.local # removed this line
在我在 nslookup 上运行调试并注意到它试图附加domain1.local
nslookup 后,我删除了它,显然它解决了问题。
user@host:~$ nslookup hosty
Server: 192.16.1.110
Address: 192.16.1.110#53
Name: hosty.domain2.local
Address: 192.16.48.20
我很愚蠢,但以防万一其他人犯同样的错误,也许这可以帮助他们。
答案2
从解析配置手册, 关于 dns 搜索
dns-nameservers 选项也被接受,与 dns-nameserver 不同,可以给出多个参数,用空格分隔。 dns-domain 选项已弃用,取而代之的是 dns-search。
生成的节可能类似于以下示例。
iface eth0 inet static
address 192.168.1.3
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameserver 192.168.1.254
dns-nameserver 8.8.8.8
dns-search foo.org bar.com
注意:在刚刚安装或即将安装 resolvconf 并且之前依赖于静态 /etc/resolv.conf 文件的计算机上,
• 该静态文件中的名称服务器信息(即有关名称服务器、域、搜索和排序列表行的信息)应迁移到 /etc/network/interfaces(5) 中相应的 iface 节,如上所述。
免责声明:我通常从 Debian 服务器中删除网络管理器、resolvconf 和 systemd。