resolvconf 更新后,localhost 子域的 DNS 解析停止工作

resolvconf 更新后,localhost 子域的 DNS 解析停止工作

多年来,我一直使用 Ubuntu(目前为 18.10)在域上开发 PHP 应用程序,例如foo.bar.localhost用于本地测试。这些域被解析为 127.0.0.1 并由 Apache 2.4 处理。这始终有效。这条线一直都127.0.0.1 localhost在我这里,/etc/hosts就像往常一样。

今天早上我打开设备,发现它不再起作用了。ping localhost仍在工作,但ping foo.bar.localhost现在不行了(昨天还在工作)。令人惊讶的是,Chromium 仍在解析foo.bar.localhost,我猜它没有使用操作系统进行 DNS 解析。但我主要使用 Firefox,它也停止解析 localhost 子域。

我昨天没有更改任何与系统相关的设置,但我记得昨天有一些软件包更新,所以我假设一些与网络相关的内容发生了一些变化。有没有办法列出dpgk安装/更新日期,以便我可以找到更新的确切软件包?

我可以检查哪些设置来使子域名解析在整个系统范围内再次起作用?是否有任何已知错误?

附加信息:在/var/log/dpkg.log我发现了一个upgrade resolvconf:all 1.79ubuntu10 1.79ubuntu10.18.10.1听起来相关的最新条目。此行和随后的行是唯一包含术语“resolv”的行(使用 找到cat /var/log/dpkg.log | grep resolv)。因此,在过去的几个小时里,这个与 DNS 相关的包已更新。

另一个信息:手册中man systemd-resolved有以下一行:

主机名“localhost”和“localhost.localdomain”(以及以“.localhost”或“.localhost.localdomain”结尾的任何主机名)解析为 IP 地址 127.0.0.1 和 ::1。

所以这种定义明确的行为不再起作用。我也可以不是我记得自己更改过与这个低级 DNS 内容相关的任何内容。

执行时的确切信息ping foo.bar.localhost

ping: foo.bar.localhost: Name or service not known

显然,新版本 resolvconf 中唯一“修复”的错误是这个: https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1817903 这与本地解析有关。

答案1

问题resolveconf在于根本没有安装systemd-resolved。我使用 root 权限将其删除apt-get purge resolvconf。然后一切又恢复正常。

我认为同时安装这两个程序是 Ubuntu 发行版之间某个先前主要版本更新遗留的问题,因此引发了这种奇怪的行为。

相关内容