重启时 resolv.conf 被错误的名称服务器覆盖(DNS_PROBE_FINISHED_BAD_CONFIG)

重启时 resolv.conf 被错误的名称服务器覆盖(DNS_PROBE_FINISHED_BAD_CONFIG)

每次我重新启动计算机时,resolv.conf 都会获取:

nameserver 127.0.0.53

放入其中。

当名称服务器设置为此 IP 时,我无法 ping 或访问任何网站(我收到错误 DNS_PROBE_FINISHED_BAD_CONFIG)。

我必须手动将 resolve.conf 更改为:

nameserver 8.8.8.8,然后我的 DNS 查找就可以正常工作了。

我已尝试按照此处接受的建议重置 resolv.conf:Ubuntu 14.04 中的 DNS_PROBE_FINISHED_BAD_CONFIG 错误,但是没有效果。

访问互联网的唯一方法是手动覆盖。

我的问题是:

如何使 resolv.conf 正常工作?我最初手动覆盖它,因为它一度出现故障(不知道原因,可能是 vpn 配置、更新或其他原因...)

答案1

问题不在于设置了“错误”的服务器,而是 18.04 及更高版本现在默认使用 ResolveD,类似于 14.04 及更早版本dnsmasq提供 DNS 缓存客户端的方式。

127.0.0.53 在重启和启动时添加systemd-resolved。ResolveD 的 DNS 配置取决于您在 Netplan 或网络管理器上配置的 Internet 配置。如果您未在 Netplan 配置中正确配置 DNS 服务器,那么这就是 ResolveD 无法工作的原因,如果您未通过 Netplan 或网络管理器通过 DHCP 获取 DNS 服务器,那么它无法工作,因为它没有可指向的 DNS 服务器。

您可以修复您的配置(您还没有分享,所以我不能确定您是如何配置系统的),或者您可以通过更改配置为 ResolveD 提供某些配置选项,作为它的备份配置选项/etc/systemd/resolved.conf

以超级用户身份编辑文件,DNS=通过删除#行开头的 取消注释该行,并将其设置为DNS=8.8.8.8。然后执行sudo systemctl restart systemd-resolved并测试 DNS。它应该可以正常工作,并再次默认查询 8.8.8.8,但resolv.conf仍将查看 127.0.0.53,这是正常行为在现代 Ubuntu 系统中。 systemd-resolve --status将;根据从网络配置或您在中输入的配置中获得的信息,显示从网络选项或全局选项中正在使用的 DNS 服务器/etc/systemd/resolved.conf

答案2

如果 resolvconf(8) 用错误的配置覆盖了你的 /etc/resolv.conf,那么请执行此操作。

sudo nano /etc/resolvconf/resolv.conf.d/head
nameserver 8.8.8.8 
sudo resolvconf -u

答案3

Thomas Ward 的回答是正确的,如果您想继续使用 systemd-resolve,请按照他的指示进行操作。

如果您不想使用 systemd 并且希望通过 /etc/resolv.conf 控制解析,那么解决方案很简单。

删除 /etc/resolv.conf,它是指向 /run/resolvconf/resolv.conf 的符号链接

然后使用你喜欢的编辑器编辑 /etc/resolv.conf,并添加

名称服务器 8.8.8.8

或者从 cmd 行运行:

echo 名称服务器 8.8.8.8 > /etc/resolv.conf

现在 /etc/resolv.conf 是一个静态文件,列出了您的名称服务器和您想要列出的任何其他选项。systemd 不会直接编辑 /etc/resolv.conf,因此如果它没有链接,systemd 就不会修改它。

相关内容