多年来,我一直在使用 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 ,它与本地解析有关。