每次我重新启动计算机时,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 就不会修改它。