resolvconf可能配置错误。如果您在未真正了解resolvconf和NetworkManager如何工作的情况下使用其配置文件,则这种情况尤其可能发生。
有关背景信息,请阅读resolvconf文档和StéphaneGraber的博客文章。
https://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/
首先,您应该知道默认情况下,Ubuntu Desktop和Ubuntu Server均已安装并激活了resolvconf。Resolvconf提供了一个框架,用于以有序且可逆的方式动态更新/etc/resolv.conf文件。
其次,您应该知道Ubuntu桌面在默认情况下已安装并激活了NetworkManager。默认情况下,NetworkManager启动dnsmasq的实例以充当本地转发名称服务器。此NetworkManager控制的dnsmasq实例侦听127.0.1.1处的查询。当NetworkManager启动dnsmasq实例时,它告诉resolvconf将地址127.0.1.1
插入到resolv.conf中。如另一个答案中所述,如果您将NetworkManager配置为不启动本地转发名称服务器实例,则它将不会启动本地转发名称服务器实例,并且不会告诉resolvconf将地址127.0.1.1
插入到resolv.conf中。
此默认配置正常工作,因此,除非您的情况特殊,否则应恢复默认配置。
要恢复默认配置,请确保
- /etc/resolvconf/resolv.conf.d/head仅包含由两行以一个
#
字符开头的resolvconf标头文本
- /etc/resolvconf/resolv.conf.d/base是一个空文件
- /etc/resolvconf/resolv.conf.d/tail是一个空文件
- /etc/resolv.conf是内容的符号链接
../run/resolvconf/resolv.conf
为此,请执行以下命令。
sudo su
dpkg-reconfigure resolvconf # And answer `Yes` to agree to dynamic updates
cd /etc/resolvconf/resolv.conf.d
echo '# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN' > head
rm -f base tail original
:> base
:> tail
NetworkManager的原始配置是
[main]
...
dns=dnsmasq
...
在/etc/NetworkManager/NetworkManager.conf中。通过注释掉该dns=dnsmasq
行来禁用NetworkManager控制的本地转发名称服务器是一个合理的选择。
[main]
...
#dns=dnsmasq
...
完成所有这些操作后,建议重新启动计算机,以清除过时的名称服务器信息记录。
sudo reboot