![诊断 DNS 查找问题 - 可能是 nsswitch.conf 错误或其他问题](https://linux22.com/image/900441/%E8%AF%8A%E6%96%AD%20DNS%20%E6%9F%A5%E6%89%BE%E9%97%AE%E9%A2%98%20-%20%E5%8F%AF%E8%83%BD%E6%98%AF%20nsswitch.conf%20%E9%94%99%E8%AF%AF%E6%88%96%E5%85%B6%E4%BB%96%E9%97%AE%E9%A2%98.png)
总结:我的 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
希望可以帮助你 :)