Linux 网络故障排查实战:从 ping 到 tcpdump 的完整诊断流程
网络问题是运维工作中最常见的故障类型之一。从 DNS 解析失败到 TCP 连接超时,从带宽瓶颈到路由异常,每一类问题都需要不同的诊断工具和分析方法。本文将带你建立一套系统化的网络排查方法论。
一、排查方法论
网络故障排查的核心思路是分层诊断,按照 OSI 模型从底层到高层逐一排查。
- 确认故障范围:单台机器还是整个网络
- 检查物理层:网线、交换机、网卡状态
- 检查网络层:IP 配置、路由表、DNS
- 检查传输层:端口监听、TCP 连接
- 检查应用层:HTTP 状态码、API 响应
# 快速诊断清单
ip addr show
ip route show
ping -c 3 $(ip route | grep default | awk '{print $3}')
dig example.com +short
ping -c 3 8.8.8.8
二、常用诊断工具
掌握正确的诊断工具是网络排查的基础。
# ping 高级用法
ping -D -c 100 example.com
traceroute -T -p 443 example.com
mtr --report --report-cycles 10 example.com
# socket 状态
ss -tlnp
ss -t state established | wc -l
ss -s
tcpdump 是网络排查的终极武器:
# 抓包示例
tcpdump -i eth0 port 80 -w capture.pcap
tcpdump -i eth0 host 192.168.1.100
tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0'
三、常见故障场景
DNS 解析失败
能 ping 通 IP 但无法访问域名:
- 检查 /etc/resolv.conf
- 使用 dig 测试不同 DNS
- 检查 DNS 缓存
- 尝试公共 DNS (8.8.8.8)
TCP 连接超时
| 原因 | 诊断 | 解决 |
|---|---|---|
| 防火墙拦截 | 检查 iptables | 添加规则 |
| 路由异常 | traceroute | 修改路由 |
| 服务未监听 | ss -tlnp | 启动服务 |
| 连接耗尽 | ss 看 TIME_WAIT | 调 tcp_tw_reuse |
带宽瓶颈
iftop -i eth0
nethogs eth0
ip -s link show eth0
四、自动化监控
将关键网络指标纳入持续监控:
- ICMP 延迟和丢包率
- TCP 连接数分布
- DNS 解析时间
- 带宽利用率
- 网络错误和丢包计数
结合 Prometheus + Blackbox Exporter 可实现完整网络监控。
五、总结
建立标准化排查流程,熟练使用诊断工具,结合自动化监控,可大幅提升故障处理效率。
本文基于实际生产环境经验编写,配置参数需根据具体情况调整。建议在测试环境验证后再应用于生产。
虾米生活分享

评论前必须登录!
注册