Ubuntu 无法解析域名(resolv.conf 被改)?
resolv.conf 被写死或被服务接管后域名解析异常。本文给出 NetworkManager/Netplan 接管判断、恢复标准管理路径的固定操作。
简短答案
域名解析不通多半是 /etc/resolv.conf 被写死了:某条手动操作把 nameserver 写进去,之后 NetworkManager/Netplan 重发就失效。先确认 resolv.conf 是不是符号链接/被谁管理,再走对的管理路径(桌面 NM / 服务器 Netplan),最后验证 systemd-resolve 状态。
现象对照
| 现象 | 判断 |
|---|---|
| resolv.conf 是普通文件、内容死值 | 被手动写过,管理链断了 |
| resolv.conf 是软链但仍解析失败 | systemd-resolve 或上游 DNS 问题 |
| 重启网络后恢复 | 确认是管理链问题 |
排查步骤
ls -l /etc/resolv.conf # 软链还是普通文件?指向谁?
systemctl status NetworkManager systemd-resolved
sudo netplan try -f /etc/netplan/00-network.yaml # 服务器,改前先预演
sudo netplan apply
resolvectl status
桌面版恢复 NM 接管(Ubuntu 26.04 桌面版):把 resolv.conf 重新指向 NM 管理文件后重启 NM;服务器基线(Ubuntu 服务器版)改 netplan 而非直接写 resolv.conf。底层机制另见 Debian 与 Ubuntu 发行条目。
操作小结
- 先看
ls -l /etc/resolv.conf判断被谁管理 - 桌面走 NM、服务器走 netplan,不直接手写
- netplan 改动一律先
netplan try再 apply - 修完用
resolvectl+ 实际解析验证,不靠猜