解决 Ubuntu DNS 无法解析问题
在使用 Ubuntu 虚拟机(尤其是在国内)时,经常会遇到这样的错误:
Temporary failure resolving 'cn.archive.ubuntu.com'
但是此时又能成功 ping 通 IP,这说明网络是正常的,问题出在 DNS 解析失败 。这通常是因为系统默认启用了 systemd-resolved
,但 DNS 解析不稳定或不生效。解决方案如下:
Ubuntu 默认使用 systemd-resolved
来处理 DNS,它监听 127.0.0.53
,但在某些网络环境中无法正常解析外部域名。
sudo systemctl disable systemd-resolved.service
sudo systemctl stop systemd-resolved.service
Ubuntu 的 /etc/resolv.conf
是一个软链接,指向 systemd 的 DNS 缓存服务,需要删除它:
sudo rm /etc/resolv.conf
创建新的 /etc/resolv.conf
文件,可以选择 Google DNS(适用于国际网络):
echo -e "nameserver 8.8.8.8\nnameserver 8.8.4.4" | sudo tee /etc/resolv.conf
或者选择阿里云 DNS:
echo -e "nameserver 223.5.5.5\nnameserver 223.6.6.6" | sudo tee /etc/resolv.conf
如果系统使用 NetworkManager 等工具,可能会自动覆盖 /etc/resolv.conf
,可以使用 chattr
命令将其锁定:
sudo chattr +i /etc/resolv.conf
执行以下命令测试:
ping cn.archive.ubuntu.com
sudo apt update
如果看到域名成功解析并开始连接软件源,说明问题已解决!