环景:

虚拟机Ubuntu 16.04.7 LTS

问题描述:

sudo vi /etc/resolv.conf,里面是否有nameserver 127.0.1.1,改为公网dns服务器 nameserver 8.8.8.8,重启系统后还是nameserver 127.0.1.1

原因分析:

NetworkManager是(通过resolvconf实用程序)将地址127.0.1.1插入resolv.conf的程序。 NM插入仅在配置为启动dnsmasq程序的实例以用作本地转发名称服务器时才进行寻址。该dnsmasq实例侦听地址127.0.1.1处的查询。

解决方案:

将NetworkManager配置为不启动dnsmasq实例而不插入该地址。在/etc/NetworkManager/NetworkManager.conf中注释掉dns=dnsmasq

sudo nano /etc/NetworkManager/NetworkManager.conf

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

nano操作
(保存所做的修改,按下 ^O命令就是Ctrl+O。想要退出,按下Ctrl+X。如果你退出前没有保存所做的修改,它会提示你是否要保存。如果不要,请按N,反之,则按Y。然后它会让你确认要保存的文件名,选择:Ctrl+T在下一个界面用 “上下左右” 按键 选择要保存的文件名确认或修改后按Enter即可。
如果你没有修改好而不小心按了保存键,您可以在请求确认文件名时按Ctrl+C来取消)

重新启动NetworkManager服务。

sudo service network-manager restart

在此模式下,NetworkManager更新/etc/resolv.conf(仍然通过resolvconf)以包含NetworkManager用于活动连接的名称服务器地址。

如果要禁用resolvconf机制来更新resolv.conf并仅使用静态resolv.conf文件,请执行以下操作

sudo rm -f /etc/resolv.conf  # Delete the symbolic link
sudo nano /etc/resolv.conf # Create static file

编辑 resolv.conf

vi /etc/resolv.conf

nameserver 8.8.8.8

还可以通过vi /etc/network/interfaces,在它的最后增加一句:

dns-nameservers 8.8.8.8