环境
* Ubuntu Desktop 16.04.3
现象
* ping t.cn 需等待数秒钟才开始正常显示ping包列表。
排查
* 确保网络正常,ping <ip>
* Google找答案,可能是 /etc/nsswitch.conf 中hosts字段配置有问题,经多次修改,发现无任何改善,因此可能此处有问题,
hosts: files mdns4_minimal [NOTFOUND=return] dns
* Ubuntu Desktop默认使用NetWork Manager管理网络,因此分析其配置,发现最后一个配置出错。
确保/etc/network/interfaces文件中只有本地环回的内容,例如
auto lo
iface lo inet loopback
保证network-manager处于开启状态,打开配置文件/etc/NetworkManager/NetworkManager.conf, 配置文件的内容为:
[main]
plugins=ifupdown,keyfile
dns=dnsmasq
[ifupdown]
managed=true # true 说明处于开启状态,false表明处于未开启状态。本次问题就出在此,需要将其设置为true
修改后重启网络相关。
sudo systemctl restart NetworkManager.service
sudo systemctl restart networking.service #非必需
背景知识
dnsmasq的作用
因为 ubuntu下有一个本地的dns服务叫做dnsmasq,它是由NetworkManager控制的
ps -ef | grep dnsmasq
你就可以看到它监听的本地地址,--listen-address=127.0.1.1 (ubuntu12.04及之前的版本 是 127.0.0.1), 这个地址是一个本地回环地址
而你真实的dns服务器地址,是被这个服务管理维护着的
local process -> local dnsmasq -> router -> ISP dns