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

雨磊大大_1894

雨磊大大_1894

2026-04-28

828人浏览

原创

必须加-s 0,否则默认68字节截断导致http/tls/modbus等应用层协议内容丢失;网卡需匹配流量路径(如localhost用-lo),过滤表达式须语法严谨。

linux下使用tcpdump抓包教程 结合wireshark分析网络协议【指南】

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

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

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

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

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

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

常见错误是查到 eth0 就开抓,结果目标流量其实在 lo、br0 或 docker0 上:

Linux Ai Server
Linux Ai Server

Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。

下载
  • 本地服务调用(如 curl http://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 和网卡是否匹配。这两个点没踩准,后面所有分析都是在错误数据上打转。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4030

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3433

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2613

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6390

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6022

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3513

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3005

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3239

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习