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

Nin*_*ude 8 server networking dns 18.04

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

ping: google.com: Temporary failure in name resolution
Run Code Online (Sandbox Code Playgroud)

然后我会继续跑步

sudo service systemd-resolved start
Run Code Online (Sandbox Code Playgroud)

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

/etc/resolv.conf -> /run/systemd/resolve/stub-resolv.conf
Run Code Online (Sandbox Code Playgroud)

内容如下

# 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
Run Code Online (Sandbox Code Playgroud)

我的问题是运行 sudo service systemd-resolved start 后,它会工作一段时间(也许几个小时),然后当我再次 ping google.com 时,它会给出名称解析错误。如何永久启用我的系统来解析名称解析?我相信这与系统解析有关?这几天一直在经历这个。谢谢

- 更新 -

一种黑客方法是设置 sudo crontab 每隔几个小时重新启动一次服务。

小智 0

您是否尝试过将 DNS 服务器更改为其他服务器(例如 google DNS)8.8.8.8 8.8.4.4并看到问题仍然发生?

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


小智 0

我记得由 NetworkMonitor 引起的相同问题覆盖了我的 DNS 设置并崩溃解决。

那么这里要做的是:

grep resolved /var/log/syslog
Run Code Online (Sandbox Code Playgroud)

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

grep error /var/log/syslog
Run Code Online (Sandbox Code Playgroud)

最后一个命令可能会返回一堆行,因此请对其进行排序。如果您找到什么,请将其发布在这里。

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

感谢lauc.exon.nod

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

nmcli con mod <connectionName> ipv4.dns "8.8.8.8 8.8.4.4"
Run Code Online (Sandbox Code Playgroud)

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

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

nmcli con mod <connectionName> ipv4.ignore-auto-dns yes
Run Code Online (Sandbox Code Playgroud)

最后,要启用更改,请先关闭然后再打开连接:

nmcli con down <connectionName>
nmcli con up <connectionName>
Run Code Online (Sandbox Code Playgroud)

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