在进行 ping 或其他网络通信时,resolv.conf 中的搜索域不会附加到主机

在进行 ping 或其他网络通信时,resolv.conf 中的搜索域不会附加到主机

我试图找出为什么多个搜索域不适用于 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并运行nslookuppingcurlnmapwget任何其他基于 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.localnslookup 后,我删除了它,显然它解决了问题。

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。

相关内容