从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停止工作。

  1. 临时工作的解决方案是放入/etc/systemd/resolved.conf

     DNS= FallbackDNS= 

    然后通过运行重新启动systemd-resolved

     #sudo systemctl restart systemd-resolved 
  2. 另一种方法是在/etc/NetworkManager/NetworkManager.conf进行更改

     dns=dnsmasq 

     dns=systemd-resolved 

    然后运行以下命令重启NetworkManager:

     #sudo systemctl restart NetworkManager 

你的DNS应该工作。

我发现了一篇很棒的博客文章,介绍了最新的Ubuntu DNS问题,系统解决了这个问题。

步骤是:

  1. /etc/resolv.conf添加一个nameserver 8.8.8.8
  2. 使用sudo apt-get install unbound
  3. 禁用麻烦的守护进程:

    sudo systemctl disable systemd-resolved

    sudo systemctl stop systemd-resolved

  4. /etc/NetworkManager/NetworkManager.conf的[main]部分添加dns=unbound
  5. 启用unbound

    sudo systemctl enable unbound-resolvconf

    sudo systemctl enable unbound

  6. 重新启动计算机

正如@spark所说,您必须编辑/etc/systemd/resolved.conf并在重新启动服务后,所有工作都可以工作,但您在/etc/resolv.conf中看不到任何更改,因为systemd-resolvedresolveconf服务的工作方式不同。

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中的想法:

  1. 通过添加行名称服务器8.8.8.8来编辑resolve.conf
  2. 使用sudo apt-get install unbound安装unbound

在运行2之后,我观察了HAD AN INTERNET CONNECTION! 所以我做了以下事情:

  1. 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再次运行。