网络问题是最常见的运维故障。掌握一套系统的排查方法,能快速定位是 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% 的网络问题都能独立解决。