诊断DNS查找问题 – 可能是错误的nsswitch.conf或其他问题
tl:dr我的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
那看起来不错吗? 如果我理解它会检查(按顺序)主机文件,mdns(本地dns?)然后在它检查dns服务器之前失败?
运行命令nmcli dev show | grep 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似乎使用nslookup使用本地DNS服务器( 127.0.1.1
),但显式设置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
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
希望它对你有帮助 :)