Ubuntu Core无法解析主机名问题技术求助
我之前在Ubuntu Core上碰到过几乎一模一样的DNS解析问题,给你几个针对性的排查和修复步骤,应该能解决:
先确认系统实际使用的DNS服务器
Ubuntu Core默认用systemd-resolved管理DNS,就算你在NetworkManager里设了8.8.8.8,也可能没同步生效。执行下面的命令检查当前生效的DNS配置:resolvectl status # 或者直接查看实际生效的resolv.conf内容 cat /run/systemd/resolve/stub-resolv.conf如果输出里看不到8.8.8.8,说明NetworkManager的配置没同步到systemd-resolved,可以手动添加:
sudo resolvectl dns <你的网卡名称> 8.8.8.8 # 比如网卡是eth0的话,命令就是:sudo resolvectl dns eth0 8.8.8.8检查snapd的DNS独立配置
Snap应用的DNS是由snapd单独管理的,可能和系统DNS不同步。先检查这个关键开关:snap get system network.disable-resolve-conf如果返回
true,说明snapd没有使用系统的resolv.conf,需要把它改成false并重启snapd:sudo snap set system network.disable-resolve-conf=false sudo systemctl restart snapd重启关键服务恢复进程状态
有时候服务进程卡住会导致解析异常,重启这两个核心服务试试:sudo systemctl restart systemd-resolved sudo systemctl restart snapd直接验证DNS解析能力
绕开系统配置,用指定DNS服务器测试解析,确认网络层面没问题:dig www.nasa.gov @8.8.8.8如果这个命令能返回正确的IP,说明DNS服务本身没问题,只是系统没正确调用;如果还是失败,要检查是不是防火墙或者网络规则挡住了53端口的UDP请求。
修复resolv.conf软链接
Ubuntu Core里/etc/resolv.conf通常是软链接到systemd-resolved的配置文件,如果链接失效也会引发问题:ls -l /etc/resolv.conf # 如果不是链接到/run/systemd/resolve/stub-resolv.conf,重新建立链接: sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
做完这些步骤后,再试试snap find ntpserver和ping www.nasa.gov,应该就能正常工作了。
内容的提问来源于stack exchange,提问作者Nick Paraschou

