当我在 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 行以更好地处理某些查询。