在现代 Ubuntu(如18.04+)上,很多场景使用 systemd-resolved,其本地存根监听 127.0.0.53;直接编辑 /etc/resolv.conf 往往会在重启或网络变更后被覆盖,甚至该文件本身是一个指向 /run/systemd/resolve/stub-resolv.conf 的符号链接,手动改它通常无效。正确做法是修改 /etc/systemd/resolved.conf 或通过 Netplan/NetworkManager 进行持久化配置。另一个常见问题是 Netplan 配置未设置 search 域,导致短名称(如 service 主机名)在企业内网无法解析。建议在企业环境中同时配置 search 并使用 resolvectl status 核对实际生效的 DNS 与搜索域。
二 解析路径与优先级陷阱
多网卡或多网络环境下,DNS 服务器可能来自不同接口,若未正确设置优先级,系统可能优先使用公共 DNS,导致内网域名解析失败。应避免把仅有公网解析能力的 DNS 放在前面,必要时在 /etc/systemd/resolved.conf 中使用 Domains=~company.com 将私有域“粘”在内网 DNS 上,确保私有域名只走内网解析器。验证时可用 resolvectl status 查看 Current DNS Server,并用 dig +trace prefix.company.com 确认首跳是否为内网 DNS,这是判断配置是否生效的“黄金标准”。