诊断 DNS 查找问题 - 可能是 nsswitch.conf 错误或其他问题

诊断 DNS 查找问题 - 可能是 nsswitch.conf 错误或其他问题

总结:我的 ubuntu 16.04 系统经常难以解析 DNS,而我的同事(大多使用 OSX/mac)则没有问题。我们都使用来自同一 wifi 网络的 8.8.8.8。有问题的域是经常创建或更新的 AWS url。阅读后这个问题- 我担心我的 nsswitch.conf 没有意义。

/etc/nsswitch.conf包含以下行:

hosts:          files mdns4_minimal [NOTFOUND=return] dns

看起来对吗?如果我理解正确的话,它会按顺序检查 hosts 文件、mdns(本地 dns?),然后在检查 dns 服务器之前失败?

运行命令nmcli dev show | grep DNS(来自这个问题 -如何知道我正在使用哪个 DNS) 返回以下内容:

IP4.DNS[1]:                             8.8.8.8
IP4.DNS[2]:                             8.8.4.4

我还检查了我的主机文件不包含任何意外的冲突条目。我还应该在哪里寻找线索?

DNS 查找始终失败(即 - 它不是一个速度较慢的 DNS 服务器,在第一次尝试时不会失败,直到缓存了一个值)。

失败的 nslookup 示例(域更改为删除工作域)如下所示:

> nslookup example.somedomain.com:      127.0.1.1
Address:    127.0.1.1#53

Non-authoritative answer:
*** Can't find example.somedomain.com: No answer

在线 nslookup 工具可以正确解析 URL,并显示生存时间为 59 秒,相当短但并不疯狂。

编辑:阅读更多问题后,获得更多信息(我不太明白,但可能对专家有帮助):

上述 nslookup 似乎正在使用本地 DNS 服务器(127.0.1.1),使用 nslookup 但明确设置 dns 服务器可以正确解析 URL:

> nslookup example.somedomain.com 8.8.8.8
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   example.somedomain.com
Address: 10.116.[blah].[blah]
Name:   example.somedomain.com
Address: 10.116.[blah].[blah]

/etc/NetworkManager/NetworkManager.conf如下所示:

[main]
plugins=ifupdown,keyfile,ofono
dns=dnsmasq

[ifupdown]
managed=false

答案1

dnsmasq(在 localhost,127.0.1.1 上运行)提供的本地 DNS 缓存机制似乎存在问题。不确定具体是什么问题,但如果您禁用 dnsmasq 缓存并始终直接询问主(8.8.8.8)和辅助(8.8.4.4)DNS 服务器,它可能会工作得更好。

要禁用 dnsmasq,请编辑文件/etc/NetworkManager/NetworkManager.conf并注释掉,dns=dnsmasq如以下配置所示:

[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq

希望可以帮助你 :)

相关内容