如何用Linux Sniffer排查网络问题
导读:Linux Sniffer排查网络问题的实用流程 一、准备与抓包位置 明确目标:是定位连通性、时延抖动、丢包重传、带宽滥用还是安全事件。 选择观测点:优先在问题路径的近端与远端同时抓包;交换机上若无端口镜像(SPAN/RSPAN),可用集...
Linux Sniffer排查网络问题的实用流程
一、准备与抓包位置
- 明确目标:是定位连通性、时延抖动、丢包重传、带宽滥用还是安全事件。
- 选择观测点:优先在问题路径的近端与远端同时抓包;交换机上若无端口镜像(SPAN/RSPAN),可用集线器临时串接,或把抓包主机接到镜像口。
- 权限与合规:抓包需要原始套接字权限,建议使用sudo或将用户加入wireshark组;务必取得合法授权,避免采集敏感数据。
二、工具选型与基本用法
- 工具组合建议:
- tcpdump:服务器/无图形环境首选,快速抓包与过滤。
- Wireshark:图形化深度分析,适合疑难问题与协议细节。
- tshark:Wireshark 的命令行版,便于脚本化和批量分析。
- 常用命令模板:
- 抓指定网卡并写入文件:
sudo tcpdump -i eth0 -w capture.pcap - 只抓100个包:
sudo tcpdump -i eth0 -c 100 -w capture.pcap - 抓某主机:
sudo tcpdump -i eth0 host 192.168.1.100 - 抓某端口(如 HTTP):
sudo tcpdump -i eth0 port 80 - 组合条件:
sudo tcpdump -i eth0 host 192.168.1.100 and port 80 - 以可读形式显示:
sudo tcpdump -X - 读取分析:
tcpdump -r capture.pcap -nn - Wireshark 显示过滤:
ip.addr == 192.168.1.100、tcp.port == 80、http、dns - tshark 实时看 HTTP 请求:
tshark -i eth0 -f "port 80" -T fields -e http.host -e http.request.uri - tshark 读取 pcap 分析 DNS:
tshark -r capture.pcap -Y dns
- 抓指定网卡并写入文件:
- 可视化补充:可用EtherApe做主机间连接与协议的可视化概览,辅助识别异常热点。
三、从现象到抓包过滤的对照表
| 现象 | 抓包位置 | 关键过滤 | 判读要点 |
|---|---|---|---|
| 无法访问某主机/端口 | 客户端、服务器、网关 | 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中断连接 |
四、高效分析的关键技巧
- 先缩小范围:用BPF 过滤表达式只保留相关主机/端口/协议,避免海量无关数据。
- 双点对比:在客户端与服务器同时抓包,比较SYN/ACK、FIN、RST与重传,快速判断问题发生在请求路径还是回程路径。
- 关注 TCP 状态机:三次握手是否完成、是否存在半开连接、重传/重复ACK/零窗口、连接重置。
- 善用显示过滤:Wireshark 中使用如
tcp.analysis.retransmission、tcp.flags.syn==1 and tcp.flags.ack==0等显示过滤,聚焦问题特征。 - 基线建模:记录正常时段的带宽使用率、协议占比、服务响应时间,出现显著偏差时优先排查异常主机/会话。
五、常见问题与处理建议
- 抓不到对端流量:确认网卡处于混杂模式、抓包点确实在数据路径上;交换机需配置端口镜像;无线/虚拟化环境注意监控端口/VNIC选择。
- 文件过大影响性能:抓包时加计数/时间/大小限制,如
-c 1000、-G 60 -W 10按时间滚动;优先在问题窗口抓,必要时分片保存。 - 权限与合规:抓包涉及隐私与合规,仅限授权范围;生产环境谨慎采集敏感明文流量(如未加密的HTTP、FTP、SMTP)。
- 资源占用:长时间高流量抓包会占用CPU/磁盘/内存,必要时降低抓包粒度或只抓头部(
-s 96/--snapshot-length),把深度分析放到离线阶段。 - 快速处置思路:若确认ICMP 洪水或异常流量导致拥塞,可先在边界临时封禁来源或清洗流量,再结合抓包定位根因。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何用Linux Sniffer排查网络问题
本文地址: https://pptw.com/jishu/753936.html
