从16.04升级到17.10后的DNS问题:如何将DNS设置重置为默认值
从ubuntu 16.04升级到17.10后,DNS设置似乎不再起作用。 我想这可能与从resolvconf到systemd-resolv的迁移有关。
那么如何确保已安装的软件包和配置处于17.10的默认状态?
例如,我注意到安装了resolvconf并将其删除。 然而,这并没有解决问题,所以我想有更多的步骤,以确保它是在17.10默认设置。
我可以通过在/etc/resolv.conf
明确设置一个名称服务器(例如nameserver 8.8.8.8
)来使其工作(暂时),但这不是预期的方法。
我遇到了同样的问题。 从17.04升级到17.10后,我的DNS停止工作。
-
临时工作的解决方案是放入
/etc/systemd/resolved.conf
DNS=
FallbackDNS= 然后通过运行重新启动
systemd-resolved
#sudo systemctl restart systemd-resolved
-
另一种方法是在
/etc/NetworkManager/NetworkManager.conf
进行更改dns=dnsmasq
至
dns=systemd-resolved
然后运行以下命令重启NetworkManager:
#sudo systemctl restart NetworkManager
你的DNS应该工作。
我发现了一篇很棒的博客文章,介绍了最新的Ubuntu DNS问题,系统解决了这个问题。
步骤是:
- 在
/etc/resolv.conf
添加一个nameserver 8.8.8.8
- 使用
sudo apt-get install unbound
-
禁用麻烦的守护进程:
sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
- 在
/etc/NetworkManager/NetworkManager.conf
的[main]部分添加dns=unbound
-
启用
unbound
:sudo systemctl enable unbound-resolvconf
sudo systemctl enable unbound
- 重新启动计算机
正如@spark所说,您必须编辑/etc/systemd/resolved.conf
并在重新启动服务后,所有工作都可以工作,但您在/etc/resolv.conf
中看不到任何更改,因为systemd-resolved与resolveconf服务的工作方式不同。
systemd-resolved使用中间解析程序( 127.0.0.53
)将所有请求传递给您在/etc/systemd/resolved.conf
DNS部分中指定的DNS服务器。 所以你不应该直接更改/etc/resolv.conf
。 如果要检查更改是否受到影响,可以打开/run/systemd/resolve/resolv.conf
以查看DNS服务器。 这是systemd-resolved用于解析地址的文件。
关于DNS问题,我尝试了上面提到的四个“修复”,没有一个工作。 当我的升级与一些丢失的文件崩溃时,我丢失了eth0连接。 在我可以做任何事情来解决问题之前我需要连接互联网,所以我尝试使用解决方案4中的想法:
- 通过添加行名称服务器8.8.8.8来编辑resolve.conf
- 使用sudo apt-get install unbound安装unbound
在运行2之后,我观察了HAD AN INTERNET CONNECTION! 所以我做了以下事情:
- sudo apt-get update,2 sudo apt-get dist-upgrade。
这重新加载了整个UBUNTU 17.10。 然后我运行了sudo install -f来修复任何损坏的软件包。 最终结果是我12岁的Alathon 3500 64位机器的工作系统。 升技NF-91主板,2GB内存。
步骤1:检查默认路由使用以下命令之一:
route -n
要么
ip r
询问新IP地址并使用下一个命令修改连接:
dhclient -v wlan0
从17.04升级到17.10之后我遇到了同样的问题,虽然对我来说systemd-resolved
很好。
对我来说问题出在/etc/nsswitch.conf
。
评论出hosts: files
条目DNS再次运行。