Ubuntu 22.04 无法连接外部网络的故障排查与解决
我在一次例行巡检中遇到了这样一个棘手的问题:一台 Ubuntu 22.04 服务器无法访问外部网络,但本地网络与内网服务正常,ping 外网 IP OK,却无法解析域名。通过本篇文章,我将结合真实现场数据、命令示例、配置细节以及评测表格,分享'DNS 配置导致无法访问外网'的完整排查思路和解决方案。
一、问题现象描述
在数据中心机房内,我们监控到一台 Ubuntu 22.04 服务器网络异常:
ping 8.8.8.8成功,丢包率 <1%ping www.google.com失败,提示Temporary failure in name resolutioncurl http://example.com报 DNS 解析错误- 内网 DNS 服务器(如 10.0.0.53)可达
初步判断是 DNS 解析问题。
二、现场环境与硬件配置
| 项目 | 配置/参数 |
|---|---|
| 服务器型号 | Dell PowerEdge R650 |
| CPU | 2× Intel Xeon Gold 5318Y @ 2.10GHz |
| 内存 | 64GB DDR4 |
| 存储 | 2× 1TB NVMe SSD(RAID1) |
| 操作系统 | Ubuntu 22.04.3 LTS x86_64 |
| 核心网络 | 2×10Gbps CN2 高速链路 |
| 内网 DNS | 10.0.0.53(Bind9 + 转发) |
| 外网 DNS | 8.8.8.8 / 1.1.1.1 |
| 网络管理 | Netplan + systemd-resolved |
三、故障排查流程
3.1 网络连通性确认
# 验证外网 IP 可以连通
ping -c 5 8.8.8.8
# 检查默认路由
ip route show
现场输出:
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 5 packets transmitted, 5 received, 0% packet loss
确认 外网链路正常。
3.2 DNS 解析测试
# 使用 dig 明确测试 DNS 服务器解析
dig @10.0.0.53 example.com
dig @8.8.8.8 example.com
# 测试 systemd-resolved 当前解析状态
resolvectl status
输出显示:
;; connection timed out; no servers could be reached
表明 DNS 无响应。


