使用tcpdump抓包后Wireshark无法查看TCP流问题咨询
TCP抓包后Wireshark无法查看TCP流问题排查方案
一、抓包命令侧问题排查
你当前使用的命令sudo tcpdump -i any host IP -w file_name.cap本身逻辑没有明显错误,但以下参数配置可能导致后续解析异常:
-i any参数抓取的报文会携带Linux特殊的SLL cooked-mode包头,部分旧版本Wireshark无法基于该包头正确关联TCP会话,建议抓包时指定实际业务网卡,比如-i eth0(可通过ip addr命令查询本机网卡名称),仅抓取回环流量时指定-i lo- 缺少完整报文抓取参数,默认tcpdump仅抓取报文前68字节的包头部分,不会抓取应用层载荷,建议添加
-s 0参数抓取完整报文,优化后命令参考:sudo tcpdump -i 实际网卡名 host 目标IP -s 0 -w file_name.cap - 确认
host后的IP过滤规则是否正确,若过滤规则和实际传输流量不匹配,会导致仅抓到少量握手报文、甚至无有效报文的情况
二、数据包本身问题排查
- 先在Wireshark过滤栏输入
tcp筛选所有TCP报文,确认你选中的报文属于完整TCP会话:如果仅抓到SYN、FIN报文,没有中间应用层数据传输,Follow TCP Stream自然不会显示内容 - 如果抓的是HTTPS、SSH等加密协议的流量,Follow TCP Stream只会显示加密后的乱码,若会话无有效数据传输会显示空白,可尝试筛选HTTP等明文协议的报文重试
- 可先在Linux环境执行
tcpdump -r file_name.cap命令读取抓包文件,确认文件本身包含有效报文,若本地读取无内容,说明抓包阶段就没有抓到符合过滤条件的流量,需要调整网卡和过滤规则重试
内容的提问来源于stack exchange,提问作者warda Jouria
相关产品推荐
相关产品推荐

