Ubuntu 18.04 DNS解析一段时间后失败

Ubuntu 18.04 DNS解析一段时间后失败

当我在 Ubuntu 18.04 上 ping google.com 时,它给了我

ping: google.com: Temporary failure in name resolution

然后我会继续跑

sudo service systemd-resolved start

我的 /etc/resolv.conf 有一个符号链接,如下所示

/etc/resolv.conf -> /run/systemd/resolve/stub-resolv.conf

内容如下

# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "systemd-resolve --status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 127.0.0.53
options edns0

我的问题是,运行 sudo service systemd-resolved start 后,它会工作一段时间(可能几个小时),然后当我再次 ping google.com 时,它会给出名称解析错误。我如何才能永久启用我的系统来解析名称解析?我认为这与 systemd-resolved 有关?几天来一直遇到这种情况。谢谢

- 更新 -

一种比较简单的方法是设置 sudo crontab 每隔几个小时重启一次服务。

答案1

已解决的存根服务存在已知错误,请参阅https://github.com/systemd/systemd/issues/10298

我发现的解决方法是将符号链接更改为/etc/resolv.conf指向 /run/systemd/resolve/resolv.conf

这似乎是影响静态路由的问题。使用 DHCP 时我没有遇到此问题。

答案2

您是否尝试过将 DNS 服务器更改为其他服务器(如 Google DNS),8.8.8.8 8.8.4.4但问题仍然存在?

永久更改 DNS 服务器DNS 设置为 systemd 的 127.0.0.53 - 如何永久更改?

答案3

我记得有同样的问题,是由 NetworkMonitor 引起的,它覆盖了我的 DNS 设置并崩溃了。

所以这里要做的是:

grep resolved /var/log/syslog

您也可以尝试查看任何错误报告

grep error /var/log/syslog

最后一个命令可能会返回很多行,因此请进行整理。如果您发现某些内容,请在此处发布。

作为一种变体,您可以将 NetworkMonitor 设置为完全忽略 DHCP 的 DNS 并完全使用手动定义的 DNS。

功劳归于外显子基因

这是修改现有连接的命令。

nmcli con mod <connectionName> ipv4.dns "8.8.8.8 8.8.4.4"

connectionName可以通过命令找到:nmcli con。在问题案例中,它可能是“System eth0”

如果您想忽略自动配置的名称服务器和搜索域,即从 DHCP 传递的设置。

nmcli con mod <connectionName> ipv4.ignore-auto-dns yes

最后,为了使更改生效,请关闭连接然后重新打开:

nmcli con down <connectionName>
nmcli con up <connectionName>

使用 进行验证cat /etc/resolv.conf。您不应/etc/resolv.conf手动编辑,因为它是由 NetworkManager 服务生成的,它很可能在任何给定时间被覆盖。

答案4

查看启动板错误 1727237、1805027、1804487。NXDOMAIN 错误发生后(检查 dmesg 输出),DNS 解析将回退到更有限的基于 UDP 的协议,并且可能会随机失败于知名名称。对我有用的解决方法是添加 libnss-resolve 包,它改变了 /etc/nsswitch.conf hosts 行以更好地处理某些查询。

相关内容