
Ubuntu DNS 解析失败 Bug 排查与解决一、Bug 现象Ubuntu 使用一段时间后所有需要域名解析的程序突然无法正常工作例如pinggitee.com提示ping: gitee.com: Temporary failure in name resolution但是直接访问 IP 地址却正常例如ping8.8.8.8可以正常通信。二、Bug 原因出现该问题说明网络连接正常但 DNS 域名解析失败。DNSDomain Name System的作用是将域名转换为对应的 IP 地址。例如gitee.com │ ▼ DNS服务器 │ ▼ 180.xxx.xxx.xxx如果 DNS 无法正常工作就会导致ping 域名失败Git 无法连接远程仓库浏览器打不开网站wget、curl 等工具无法访问域名但由于 IP 地址无需经过 DNS 解析因此直接访问 IP 仍然正常。三、排查过程1确认网络是否正常首先测试是否能够访问公网 IPping8.8.8.8若能够正常通信则说明网卡正常路由正常网络连接正常问题基本可以确定不是网络故障。2确认是否为 DNS 故障继续测试域名解析pinggitee.com若提示Temporary failure in name resolution则说明DNS 解析失败。3查看当前 DNS 配置查看系统 DNScat/etc/resolv.conf可以看到nameserver 127.0.0.53说明 Ubuntu 使用的是systemd-resolved进行 DNS 解析。4查看真正使用的 DNS 服务器执行resolvectl dns ens34查看网卡当前使用的 DNS。例如192.168.2.2说明 Ubuntu 实际向192.168.2.2发送 DNS 查询请求。5测试 DNS 服务器测试该 DNS 是否正常nslookupgitee.com192.168.2.2如果出现communications error timeout或者解析速度非常慢说明当前 DNS 服务器工作不稳定。6使用公共 DNS 测试例如nslookupgitee.com223.5.5.5如果能够立即解析成功则说明问题出在原来的 DNS 服务器而不是 Ubuntu 系统本身。四、问题原因分析本次问题的根本原因是DHCP 自动分配的 DNS192.168.2.2响应速度慢、稳定性较差。Ubuntu 长时间运行后仍然继续使用该 DNS因此出现Temporary failure in name resolution虽然网络连接正常但域名解析失败。五、解决方法1临时解决重新启动 DNS 服务sudosystemctl restart systemd-resolved或者sudosystemctl restart NetworkManager也可以直接重启 Ubuntu。该方法可以恢复 DNS但不能彻底解决问题。2长期解决推荐不要继续使用 DHCP 自动分配的 DNS。改为固定使用公共 DNS例如阿里 DNS223.5.5.5腾讯 DNS119.29.29.29配置命令sudonmcli connection modifyWired connection 2ipv4.ignore-auto-dnsyessudonmcli connection modifyWired connection 2ipv4.dns223.5.5.5 119.29.29.29sudonmcli connection downWired connection 2sudonmcli connection upWired connection 2最后验证nmcli connection showWired connection 2|grepdns应看到ipv4.dns: 223.5.5.5,119.29.29.29 ipv4.ignore-auto-dns: yes说明以后 Ubuntu 将固定使用公共 DNS不再依赖 DHCP 分配的 DNS。六、总结本次 Bug 并非网络故障而是DNS 服务器不稳定导致的域名解析失败。通过排查网络连通性、DNS 配置和 DNS 服务器响应情况最终定位到 DHCP 分配的 DNS 存在稳定性问题。采用固定公共 DNS如 223.5.5.5 和 119.29.29.29后可以有效避免该问题再次发生提高 Ubuntu 长时间运行时的网络稳定性。