linux下wireshark分析tcpdump日志遵循“服务器上抓、本地看”原则:tcpdump精准过滤抓包并保存为pcap文件,scp传输至本地,wireshark用显示过滤器聚焦分析,注意过滤策略、抓包位置及https解密配置。

Linux 系统中配合 Wireshark 分析 tcpdump 导出的日志,核心是“服务器上抓、本地看”,分工明确、流程清晰。
抓包阶段:用 tcpdump 生成标准 pcap 文件
关键不是抓得多,而是抓得准、存得全:
- 指定网卡(如 eth0)和过滤条件,避免杂包干扰,例如:
sudo tcpdump -i eth0 port 80 -s 0 -w http.pcap - -s 0 表示捕获完整数据包,防止载荷被截断(尤其对 HTTP/HTTPS/Modbus 等应用层协议至关重要)
- 使用 host、src/dst、and/or/not 组合过滤,比如只抓某 IP 和端口:
tcpdump -i ens33 host 192.168.1.100 and port 502 -w modbus.pcap - 确认文件已生成且非空:
ls -lh modbus.pcap,file modbus.pcap应显示 “pcap capture file”
传输阶段:把 .pcap 或 .pcapng 文件安全导出
抓包文件本质是二进制原始帧,可直接跨平台使用:
- 用 scp 下载到本地 Windows/macOS:
scp user@server:/tmp/modbus.pcap ./ - 若无法直连,可通过中间跳板机或上传至临时对象存储(注意脱敏敏感字段)
- Wireshark 支持 .pcap 和 .pcapng 格式,tcpdump 默认输出 pcap,无需转换
分析阶段:在 Wireshark 中高效定位与解读
打开文件后,重点不在“看全量”,而在“快速聚焦问题”:
- 用显示过滤器快速筛选目标流量,常见写法:
• 某 IP:ip.addr == 192.168.1.100
• IP + 端口:ip.addr == 192.168.1.100 and tcp.port == 8080
• 仅 TCP 握手:tcp.flags.syn == 1 or tcp.flags.ack == 1 - 右键任一数据包 → Follow → TCP Stream,自动聚合同一连接的请求与响应,支持文本/十六进制切换
- 关注时间列(Time)计算耗时:SYN→SYN-ACK 看网络延迟,请求包→响应首字节看服务处理时间
- 按协议分层展开:点击以太网帧 → IP → TCP → 应用层(如 HTTP、TLS、Modbus),逐层核对字段是否符合预期
注意事项:避开几个典型坑
看似简单,但细节决定成败:
- 别在生产环境直接用
tcpdump -i any全量抓包——可能压垮磁盘或 CPU,优先加过滤 - Wireshark 打开大文件卡顿?先用
tcpdump -r big.pcap 'port 443' -w https-small.pcap二次过滤再导入 - 抓包点位置影响结论:在客户端抓到重传,在服务端没看到,说明丢包发生在中间链路;反之则可能是客户端发包异常
- HTTPS 流量看不到明文内容?这是正常行为。如需解密,需提前配置 TLS 密钥日志(SSLKEYLOGFILE),Wireshark 可加载解密











