今天早些时候,我将 LXC 容器升级到 Ubuntu 22.04,名称解析停止工作。按名称 ping 任何内容都会失败。当然,我可以添加nameserver 8.8.8.8
,/etc/resolv.conf
这样可以解决问题。但当然,每当我重新启动时,文件都会发出警告:DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
... 确实如此。它还指出,run "systemd-resolve --status" to see details
但是... 没有这样的命令!句号。
下一个要查看的地方是/etc/network/interfaces
该文件自 2015 年 6 月以来没有改变,并且包含应该使用的 DNS 服务器。
下一个要看的地方是/usr/lib/systemd/resolv.conf
,对我来说,包含
nameserver 127.0.0.53
options edns0 trust-ad
search .
根据网上搜索,这似乎是正确的。它确实说明了:Run "resolvectl status" to see details
这确实有效:
# resolvectl status
Global
Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: foreign
Link 2 (eth0)
Current Scopes: none
Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
DNS Domain: DOMAINS
但上面的信息不足以表明问题是什么。我在任何错误日志中都找不到任何错误/var/log
。
困惑了。
答案1
有一个解决方法。有一个全新的配置文件位于/etc/systemd/resolved.conf
,将名称服务器复制到/etc/network/interfaces
这个新配置文件中,名称解析就可以正常工作了!(运行后service systemd-resolved restart
)
我不喜欢现在有两个配置文件保存 DNS 信息,并且必须手动同步这两个文件的想法。这只会给系统管理员带来未来的调试难题。因此,被/etc/network/interfaces
忽略的核心问题仍然存在。