一、先确认问题边界
网络问题最怕一上来就改配置。排障前先确认边界:是本机不能访问外部,还是外部不能访问本机;是所有域名都失败,还是只有某个服务失败。
可以先问几个问题:
- 是偶发还是稳定复现。
- 是单台机器还是多台机器。
- 是 IP 不通,还是域名解析失败。
- 是 TCP 连接失败,还是 HTTP 返回错误。
- 最近是否改过防火墙、路由、DNS、代理或容器网络。
边界清楚后,排障速度会快很多。
二、检查网卡和 IP
先看网卡是否存在、是否拿到 IP。
1 | ip addr |
重点关注:
- 网卡状态是否是
UP。 - 是否有正确的 IPv4 或 IPv6 地址。
- 地址是否在预期网段。
- 是否存在多个网卡导致路由混乱。
如果网卡没有 IP,继续检查 DHCP、静态配置或云平台网络配置。如果 IP 明显不对,后面的 DNS 和端口检查意义不大。
三、检查路由
能不能出网,默认路由很关键。
1 | ip route |
常见输出类似:
1 | default via 192.168.1.1 dev eth0 |
需要确认:
- 是否有
default路由。 - 网关地址是否正确。
- 出口网卡是否正确。
- 容器、VPN 或虚拟网卡是否抢了默认路由。
如果默认路由缺失,本机可能只能访问同网段,不能访问外部网络。
四、分层测试连通性
不要只用一个命令判断网络好坏。可以按层级测试。
1 | ping 127.0.0.1 |
判断方式:
127.0.0.1不通,通常是本机网络栈异常。- 网关不通,可能是局域网、网卡或安全组问题。
- 外部 IP 不通,可能是路由或出口问题。
- IP 通但域名不通,重点查 DNS。
有些环境禁用 ICMP,ping 不通不一定代表 TCP 不通。此时要继续用端口工具验证。
五、检查 DNS
域名解析失败时,先看 DNS 配置。
1 | cat /etc/resolv.conf |
常见问题:
- DNS 服务器不可达。
- VPN 或容器覆盖了 DNS。
- 内网域名只能在特定网络解析。
/etc/hosts写了错误映射。- systemd-resolved 缓存异常。
如果 IP 能访问,域名不能访问,优先修 DNS,不要在应用层浪费时间。
六、检查端口监听
外部访问不了本机服务时,先确认服务是否真的监听了端口。
1 | ss -lntp |
重点看:
- 端口是否存在。
- 监听地址是
127.0.0.1还是0.0.0.0。 - 进程是否是预期服务。
- 端口是否被别的进程占用。
如果服务只监听 127.0.0.1,外部机器无法访问。需要调整服务配置,让它监听实际网卡地址或 0.0.0.0。
七、测试 TCP 连接
比 ping 更接近真实应用的是 TCP 连接测试。
1 | nc -vz host 80 |
curl -v 很适合排 HTTP 问题,可以看到:
- DNS 解析结果。
- 连接到哪个 IP。
- TCP 是否建立。
- TLS 握手是否成功。
- 服务返回的状态码。
如果 TCP 连接失败,继续查防火墙、安全组和服务监听。如果 TCP 成功但 HTTP 返回异常,再看应用日志。
八、检查防火墙和安全组
Linux 本机可能有 iptables、nftables、firewalld。云服务器还可能有安全组。
常用命令:
1 | iptables -S |
排查时不要急着清空规则。先确认规则链路,找到是否有明确的 DROP 或未放行端口。
如果是云服务器,还要检查:
- 入站安全组。
- 出站安全组。
- 子网 ACL。
- 负载均衡监听和后端健康检查。
本机放行但云安全组没放行,外部仍然访问不了。
九、必要时抓包
当配置看起来都正确,但连接仍然异常,可以抓包确认数据包是否到达。
1 | tcpdump -i eth0 port 8080 |
抓包能回答几个关键问题:
- 请求是否到达本机。
- 本机是否有响应。
- 三次握手卡在哪一步。
- 是否出现大量重传。
- 返回包是否从正确网卡出去。
如果请求根本没到本机,问题在上游网络、路由、安全组或负载均衡。如果请求到了但本机没回,重点查本机防火墙、服务监听和应用状态。
十、保存排障记录
网络问题经常重复出现。建议记录每次排障过程。
记录内容:
- 故障时间。
- 影响范围。
- 现象和错误信息。
- 执行过的命令。
- 关键输出。
- 最终原因。
- 修复方式。
下一次遇到类似问题时,这份记录比临时搜索更可靠。
Linux 网络排障的核心思路是分层确认:地址、路由、DNS、端口、防火墙、应用。每一步都拿证据说话,问题自然会收敛。
- 本文链接: https://blog.hansong.icu/2026/06/22/Linux_Network_Troubleshooting/
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。