游乐游手机版
首页/系统平台/文章详情

Linux下使用TCPDump抓包教程 结合Wireshark分析网络协议【指南】

时间:2026-04-28 14:12
Linux下使用TCPDump抓包教程 结合Wireshark分析网络协议【指南】 不加 -s 0 的抓包文件,基本等于白抓——HTTP header、TLS handshake、Modbus 功能码全被截断在前 68 字节里,你看到的只是个“半截包”。 必须加 -s 0,否则 payload 被砍

Linux下使用TCPDump抓包教程 结合Wireshark分析网络协议【指南】

Linux下使用TCPDump抓包教程 结合Wireshark分析网络协议【指南】

不加 -s 0 的抓包文件,基本等于白抓——HTTP header、TLS handshake、Modbus 功能码全被截断在前 68 字节里,你看到的只是个“半截包”。

必须加 -s 0,否则 payload 被砍掉就无法分析协议内容

tcpdump 默认只捕获每个包前 68 字节(snaplen),这对链路层诊断可能够用,但对应用层协议毫无意义:

  • HTTP 请求行、header、body 全部丢失,Wireshark 里看不到 GET /api/v1Content-Length
  • TLS ClientHello/ServerHello 被截断,无法判断协商的 cipher suite 或 SNI
  • Modbus TCP ADU 中的功能码、数据地址、字节数可能落在 68 字节之后,直接看不到读写意图
  • 即使加了 -A(ASCII 输出),也只会显示截断后的乱码或空行

正确做法是显式指定 -s 0,强制捕获完整帧。注意这不是“可选优化”,而是分析任何应用层协议的前提。

网卡选错,包根本不在那个接口上

常见错误是查到 eth0 就开抓,结果目标流量其实在 lobr0docker0 上:

  • 本地服务调用(如 curl https://localhost:8080)必须用 -i lo,物理网卡上完全没影
  • BMC 与安卓卡通信若走桥接网络(如 br0),抓 eth0 会漏掉所有业务包
  • any 接口能抓所有网卡,但不含链路层信息(如 VLAN tag、MAC 地址),Wireshark 里看不到 Ethernet II 头
  • ip link show 看哪些接口状态是 UP,再用 ss -tuln | grep :502 确认 Modbus 连接实际绑定在哪块卡

过滤表达式写错,看起来在抓,其实什么也没捕到

BPF 过滤不是自然语言,缺一个逻辑词或括号位置不对,整个条件就失效:

  • host 192.168.1.100 port 502 ❌ 缺 and,tcpdump 会忽略 port 502,实际等价于 host 192.168.1.100
  • src host A and dst port 502 ✅ 明确方向:只抓 A 发给本机 502 端口的包(即 Modbus 请求)
  • tcp[tcpflags] & tcp-syn != 0 ✅ 抓 SYN 包;写成 tcp-syn 不加引号或大小写错误会报语法错
  • 想抓响应包却用了 src port 502,结果只看到本机发出去的 reply,漏掉对端发来的 request

建议先不加过滤跑几秒:sudo tcpdump -i lo -s 0 -c 5,确认有包出来再加条件。

Wireshark 打开后看不到明文?别怪 tcpdump,先看协议是否加密

抓到的包在 Wireshark 里显示为 TCP segment of a reassembled PDU 或全是十六进制,不一定是抓包问题:

  • port 443 抓到的是 TLS 流量,-A 或 Follow TCP Stream 只能看到加密载荷,tcpdump 本身不也不解密
  • Modbus TCP 若走 TLS 封装(如 modbus-TCP-over-TLS),同样看不到功能码,得用密钥导入 Wireshark 才能解密
  • HTTP 明文但 Wireshark 显示乱码?检查是否误用了 -X(hex+ascii 混排)而非 -A(纯 ascii),或者包真被 -s 截断了
  • Wireshark 默认不解析某些私有协议(如自定义二进制协议),需手动设置 Decode As → TCP port 60000 → your-protocol

最常被跳过的动作是:确认 -s 0 和网卡是否匹配。这两个点没踩准,后面所有分析都是在错误数据上打转。

来源:https://www.php.cn/faq/2382842.html
上一篇如何开启 Windows 11 的“智能应用控制” 自动拦截未签名风险软件方法 下一篇Linux怎么配置终端提示符_Linux如何自定义PS1命令提示符【方法】
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Linux tail -f命令实操:实时查看文件增长内容
系统平台 · 2026-06-07

Linux tail -f命令实操:实时查看文件增长内容

在Linux环境下排查系统故障时,实时监控日志文件的内容增长是最常用的诊断手段之一。而tail -f命令,无疑是大家最先想到、也最直接的工具。不过,它并非万能解决方案。简单来说,它只负责“追加”监听,对于日志滚动、文件轮转或者权限变更这些生产环境里的常见场景,它就显得力不从心了。 你是否遇到过这样的

Windows批量删除注册表残留提升系统响应速度教程
系统平台 · 2026-06-07

Windows批量删除注册表残留提升系统响应速度教程

你的Windows是不是越用越迟钝?明明已经卸载的软件,却仍在“设置”的应用列表里挥之不去,甚至在“此电脑”里留下几个失效的图标?这多半不是错觉,而是注册表里堆积了太多“垃圾”——那些无效的卸载项、空壳的扩展键,如同系统里散落的“幽灵文件”,拖慢了响应速度,也扰乱了界面整洁。 不必忧虑,清除这些残留

修复Windows无法连接iPhone15/16热点超时问题
系统平台 · 2026-06-07

修复Windows无法连接iPhone15/16热点超时问题

遇到Windows电脑始终无法连接iPhone 15或16的个人热点,确实令人困扰。屏幕上要么持续转圈,要么显示“正在获取IP地址”、“连接超时”,甚至Wi-Fi列表中根本搜不到热点信号。请放心,这通常并非硬件损坏,而是由常见的软件兼容性或系统设置冲突引起的。下面这套系统化的排查方案,能帮助你逐步定

Win11无法识别NVMe硬盘?修复主板BIOS识别SSD教程
系统平台 · 2026-06-07

Win11无法识别NVMe硬盘?修复主板BIOS识别SSD教程

新购置的NVMe固态硬盘已经正确安装到主板上,但Windows 11系统中却始终无法识别?先别担心是硬盘故障,这通常是系统在底层沟通环节出现了小问题。从BIOS UEFI参数配置、驱动程序兼容性到物理连接状态,任何一个环节的细微偏差都可能导致系统无法正常检测到硬盘。接下来,我们将按照故障排查的逻辑顺

Win11多桌面切换手势开启教程 提升触控板操作效率
系统平台 · 2026-06-07

Win11多桌面切换手势开启教程 提升触控板操作效率

Windows11触控板四指左右滑动可切换虚拟桌面以提升效率。若手势失效或设置选项缺失,需确认触控板为精密触控板,并通过系统设置启用功能。若选项不可用,可尝试修改注册表、执行PowerShell命令或检查虚拟桌面功能是否开启,以恢复手势支持。