環境
* 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