网络问题是最常见的运维故障。掌握一套系统的排查方法,能快速定位是 DNS、网络层还是应用层的问题。

一、分层排查思路

从下往上逐层排除:物理层 → 网络层 → 传输层 → 应用层。

二、网络层:ping

ping 8.8.8.8           # 测试 IP 连通
ping example.com       # 同时验证 DNS 解析

能 ping 通 IP 但 ping 不通域名 → DNS 问题;都 ping 不通 → 网络层/防火墙问题。

三、DNS 诊断

nslookup example.com          # 查解析
nslookup example.com 8.8.8.8   # 指定 DNS 查
dig example.com                # 更详细的查询

四、端口连通性

telnet example.com 80        # 测试端口(旧但好用)
nc -zv example.com 443        # netcat 测试端口

五、应用层:curl

curl -I http://example.com            # 只看响应头
curl -v http://example.com             # 详细过程
curl -w '%{http_code}' -o /dev/null ... # 只取状态码
curl -H 'Host: x' http://127.0.0.1/     # 带 Host 头模拟
排查"打不开"黄金流程:ping 看通不通 → 端口测开没开 → curl 看 HTTP 正不正常。三层逐个排除。

六、抓包分析

复杂问题用 tcpdump 抓包:

tcpdump -i any port 80 -nn      # 抓 80 端口流量
tcpdump -i any host example.com  # 抓指定主机

七、路由追踪

traceroute example.com       # 看每一跳,定位卡在哪一段

八、小结

网络排查的核心是"分层 + 对比":分层定位故障点,对比正常与异常的差异。养成这套思路,90% 的网络问题都能独立解决。