Linux Sniffer排查网络问题的实用流程
一、准备与抓包位置
二、工具选型与基本用法
sudo tcpdump -i eth0 -w capture.pcapsudo tcpdump -i eth0 -c 100 -w capture.pcapsudo tcpdump -i eth0 host 192.168.1.100sudo tcpdump -i eth0 port 80sudo tcpdump -i eth0 host 192.168.1.100 and port 80sudo tcpdump -Xtcpdump -r capture.pcap -nnip.addr == 192.168.1.100、tcp.port == 80、http、dnstshark -i eth0 -f "port 80" -T fields -e http.host -e http.request.uritshark -r capture.pcap -Y dns三、从现象到抓包过滤的对照表
| 现象 | 抓包位置 | 关键过滤 | 判读要点 |
|---|---|---|---|
| 无法访问某主机/端口 | 客户端、服务器、网关 | host <IP>、tcp port <端口> |
看SYN是否到达服务器;服务器是否回SYN-ACK;若客户端见SYN无应答,可能是服务器未监听/ACL/上游过滤;若服务器见SYN但无回包,可能是回程路由或防火墙问题 |
| 访问很慢或时延抖动 | 客户端、服务器 | host <IP> and (tcp or icmp) |
观察RTT、重传(tcp.analysis.retransmission)、重复ACK;长时延+重传常见于链路拥塞/丢包/服务器繁忙 |
| 偶发丢包 | 链路两端 | `icmp or arp or (tcp[tcpflags] & (tcp-syn | tcp-rst) != 0)` |
| 带宽被占满 | 瓶颈链路/网关 | not port 22 and not arp |
统计会话与协议占比,识别异常大流量/突发流量或异常协议,配合iftop/nethogs定位占用进程 |
| DNS 解析异常 | 客户端、DNS 服务器 | udp port 53 or tcp port 53 |
看请求是否发出、是否SERVFAIL/REFUSED、响应是否超时;区分递归与迭代路径问题 |
| HTTP 访问异常 | 客户端、反向代理/源站 | tcp port 80 or tcp port 443 |
观察HTTP 4xx/5xx、TCP 握手与TLS握手是否成功、是否有RST中断连接 |
四、高效分析的关键技巧
tcp.analysis.retransmission、tcp.flags.syn==1 and tcp.flags.ack==0等显示过滤,聚焦问题特征。五、常见问题与处理建议
-c 1000、-G 60 -W 10按时间滚动;优先在问题窗口抓,必要时分片保存。-s 96/--snapshot-length),把深度分析放到离线阶段。