无法解析本地网络上的主机名

无法解析本地网络上的主机名

我在一台机器上遇到了名称解析问题。直到最近,这台机器还在运行带有 KDE 的 Ubuntu 20.04 LTS。我昨天尝试将其升级到 22.04,但在升级过程中发生电源故障,导致机器无法启动。因此,它现在运行的是 Kubuntu 22.04 LTS 的全新安装。新安装后问题依然存在。

具体问题是,机器会定期进入这样一种状态:本地网络上的主机名 DNS 查询失败,并显示以下错误消息。请注意,即使本地名称失败,外部主机名也始终可以正常解析。另请注意,无论我使用短主机名还是 FQDN,都会发生故障:

名称解析暂时失败

乍一看,这似乎是配置错误,但重启后一切正常。运行“sudo systemctl restart systemd-resolved”也会在一段时间内解决问题。但机器运行一段时间后,问题又出现了。

在早期版本中,我经历了十几个麻烦,尝试了不同的方法,最终找到了一个可靠的方法。如果我没有看错自己的笔记,我似乎最终禁用了 systemd-resolved,并将机器配置为使用 NetworkManager。我不太想再这样做,所以我想真正了解问题的根源。

我的 DHCP 服务器分配了两个 DNS 服务器地址,一个分配给我的本地 DNS 服务器,另一个分配给 8.8.8.8。我的理论是,它不知何故进入了仅使用 8.8.8.8 的状态,因此我将 /etc/systemd/resolved.conf.d/dns_servers.conf 配置为仅使用我的本地 DNS 服务器。这没有帮助。

这表明我的内部 DNS 服务器(运行 Windows 2008 R2 作为域控制器)存在问题。问题是,我有大约 20 台设备 - 包括几台其他 Linux 机器 - 它们都运行正常。只有一台机器有这个问题。

我很想知道是否有一种系统的方法来了解名称解析涉及哪些部分,以便我可以准确地确定故障发生的位置,从而永久地纠正它。现在是执行此操作的好时机,因为除了我提到的 dns_servers.conf 更改之外,安装完全与安装时一样。

任何建议,将不胜感激。

谢谢,-韦德

答案1

我找到了一个有效的解决方案。

这是一次令人沮丧的经历,因为我已经阅读了数十篇关于通过配置文件覆盖 DNS 名称服务器的文章。没有一篇奏效。似乎对配置文件的更改适用于全局属性,但不适用于特定链接的属性。我找不到更改特定链接属性的参考。如果有关于解析如何工作的规范参考就好了,但我还没有找到这样的东西。

无论如何,最终有效的方法是使用系统设置应用中的连接 UI。我将 IPV4 属性中的连接方法从“自动”更改为“自动(仅地址)”,并在“DNS 服务器”框中仅添加了我的家庭 DNS 服务器的 IP。

花了一段时间才意识到这是解决方案,因为当您点击“应用”按钮时它似乎没有生效。重新启动 systemd-resolved 似乎也不会使其生效。至少“resolvectl status”仍然显示 8.8.8.8 地址。更改仅在完全重启后出现。我想有一种方法可以在不重启的情况下做到这一点,但我找不到需要重新启动哪个服务或进程。

相关内容