tcpdump与Wireshark组合是Linux网络排障和安全审计最基础有效的方案,核心在于明确抓包目标、合理过滤及精准分析流量特征。

用 tcpdump 抓包、用 Wireshark 分析,是 Linux 网络故障排查和安全审计最基础也最有效的组合。关键不在工具本身多难,而在清楚抓什么、为什么抓、怎么看出问题。
一、tcpdump:精准捕获网络流量
tcpdump 是命令行下的“流量快门”,适合服务器环境或远程诊断。重点不是抓全部,而是缩小范围,减少干扰:
-
按端口过滤:比如只看 HTTP 流量:
tcpdump -i eth0 port 80 -
按主机过滤:定位某台设备通信:
tcpdump -i eth0 host 192.168.1.100 -
保存为 pcap 文件(供 Wireshark 后续分析):
tcpdump -i eth0 -w capture.pcap port 443 -
避免截断数据包:加
-s 0抓完整帧(默认只取前 68 字节):tcpdump -i eth0 -s 0 -w full.pcap
二、Wireshark:从原始数据中读出真实行为
打开 pcap 文件后,别急着翻包。先用显示过滤器(Display Filter)聚焦关键线索:
- 查 DNS 异常:
dns && !dns.flags.response(只看 DNS 请求,排查域名解析失败) - 找重传或丢包:
tcp.analysis.retransmission || tcp.analysis.lost_segment - 识别可疑连接:
ip.src == 10.0.0.5 && tcp.port == 22(检查某 IP 是否异常连 SSH) - 追踪 TCP 流:右键某个 TCP 包 → Follow → TCP Stream,直接看到完整会话内容(如 HTTP 请求/响应、明文登录)
三、典型场景实战:快速定位三类常见问题
1. 服务无法访问(如 Web 页面打不开)
在服务端用 tcpdump 抓 80/443 端口;若 Wireshark 中看不到 SYN 包,说明请求根本没到服务器——问题在防火墙、负载均衡或客户端路由。
2. 连接慢或频繁断开
关注 TCP 标志位:大量 [SYN] 无应答 → 网络不通;大量 [RST] → 应用主动拒绝;重复 [ACK] 或窗口为 0 → 接收方处理不过来或丢包。
3. 怀疑数据泄露或异常外联
用 Wireshark 的 Statistics → Conversations → IPv4 查看流量占比最高的外部 IP;再结合协议列(Protocol 列)筛选非预期协议(如 DNS over HTTPS、不明 TLS 域名)。
四、避坑提醒:容易忽略但影响判断的细节
注意网卡混杂模式是否开启:tcpdump 默认需要,虚拟机或容器中可能受限;
时间戳精度要一致:多设备抓包比对时,确保系统时间同步(NTP),否则时序分析会错乱;
不要在高负载机器上无过滤抓全量包:可能拖垮系统或磁盘写满;
HTTPS 流量看不到明文内容:除非配置 SSLKEYLOGFILE 或使用中间人代理,否则只能分析握手阶段(ClientHello/ServerHello)和证书信息。










