《WiFi 嵌入式物联网开发全套实战》| 第 33 章 Wireshark 无线抓包环境搭建、802.11 帧过滤规则

专栏:《WiFi 嵌入式物联网开发全套实战》 专栏定位:嵌入式 Linux/ESP32 WiFi 从原理→驱动→配网→协议→稳定性→抓包调试→量产优化全套工业实战 适配:物联网设备、智能家居、工控网关、无线透传设备、4G+WiFi 双模设备 💖 点赞 + 收藏 + 关注,嵌入式 WiFi 量产实战全套教程持续更新!

本章前言

前面章节我们大多从设备代码、日志层面排查 WiFi 问题。但很多疑难故障,日志信息有限:配网失败原因不明、随机重连无法复现、认证异常偶发、丢包无法定位是 AP 侧还是设备侧、MQTT 间歇性断开分不清是空口丢包还是上层软件问题。

设备串口日志只能看到设备自己上报的状态 ,看不到路由器真实下发的报文,看不到空中真实传输的 802.11 管理帧、控制帧、数据帧。此时唯一可靠手段就是无线抓包。

核心认知:日志是 "设备说自己发生了什么",抓包是 "空中真实发生了什么"。外场疑难 WiFi 问题,最终都要靠无线抓包下定论。

本章聚焦实战,完整讲解无线抓包环境搭建、监听模式开启、信道切换、802.11 关键过滤表达式、帧分类筛选,专门针对 ESP32 / 嵌入式 Linux 物联网设备调试,给出量产调试直接复制可用的过滤规则,解决配网、认证、关联、重连、丢包场景抓包分析。

33.1 无线抓包基础概念:监听模式(Monitor Mode)

普通网卡工作在 Managed 模式,只接收发给本机的报文;监听模式 (Monitor Mode) 会接收当前信道上空全部 802.11 无线帧,不管目的 MAC 是谁。

⚠️ 重要限制:

  1. 监听网卡只能抓取当前所在信道的报文;设备跳信道扫描时,抓包网卡也要同步切换信道,否则抓不到对应帧。
  2. 2.4G 与 5G 需要网卡硬件支持,廉价 USB 网卡大多只支持 2.4G 监听。
  3. Windows 原生网卡驱动大多不支持 Monitor 模式;Linux 平台 USB 无线网卡是无线抓包首选方案。
  4. 抓包得到的是 802.11 原始帧,不是以太网帧,包含 Radio Tap 头部。

33.2 抓包硬件选型(工程实战避坑)

硬件类型 是否推荐 说明
PC 内置笔记本无线网卡 不推荐 Windows 几乎不支持监听模式;Linux 部分型号支持,兼容性差
RTL8812AU USB 网卡 强烈推荐 支持 2.4G+5G,Linux 监听模式成熟,物联网调试主流
RTL8188CUS 推荐 仅 2.4G,性价比高,适合只调试 2.4G 设备
ESP32 本身抓包 辅助手段 ESP‑IDF 提供 sniffer 接口,适合短时间抓包,不适合长时间大流量捕获

量产调试建议:常备一块 RTL8812AU USB 无线网卡,Ubuntu 虚拟机 / 物理 Linux 主机使用。

33.3 Linux 环境搭建监听模式完整步骤

使用 Ubuntu 物理机,不建议 VMware 虚拟机透传 USB 网卡,虚拟机 USB 透传容易丢包、监听模式异常。

33.3.1 确认网卡名称

复制代码
iw dev

输出可以看到网卡接口,例如 wlan1,不要用 wlan0(本机上网网卡)。

33.3.2 关闭网卡原有进程

复制代码
sudo airmon-ng check kill

会停止 NetworkManager,本机网络会断开,属于正常现象。

33.3.3 开启监听模式

复制代码
sudo airmon-ng start wlan1

开启之后接口变为 wlan1mon。

33.3.4 切换抓包信道

物联网设备大多工作在 2.4G,例如信道 6:

复制代码
sudo iw dev wlan1mon set channel 6

设备如果发生扫描、切信道,抓包网卡必须同步修改信道,否则抓不到设备报文。

33.3.5 启动 Wireshark

复制代码
sudo wireshark

选择 wlan1mon 接口开始捕获。

33.3.6 抓包结束恢复网卡

复制代码
sudo airmon-ng stop wlan1mon
sudo systemctl restart NetworkManager

33.4 ESP32 内置 Sniffer 抓包(轻量辅助抓包)

ESP‑IDF 提供 WiFi sniffer API,可以让 ESP32 本身进入嗅探模式,捕获当前信道 802.11 帧,通过串口输出。

适用场景:手边没有 USB 抓包网卡,做简易调试; 局限:串口带宽有限,长时间抓包会丢包,不适合高流量场景。

关键 API 简要示例:

复制代码
// 开启sniffer,指定信道
esp_wifi_set_promiscuous(true);
esp_wifi_set_channel(6, WIFI_SECOND_CHAN_NONE);

注意:ESP32 开启 sniffer 之后,本身 WiFi STA/AP 功能会失效,不能同时联网 + 抓包。

33.5 Wireshark 802.11 帧基础认知

802.11 无线帧分为三大类:

  1. 管理帧 Management:Beacon、Probe Request/Response、Authentication、Association Request/Response、Deauthentication、Disassociation。

WiFi 扫描、认证、关联、踢下线全部由管理帧完成,排查配网、掉线、被 AP 踢除问题重点看管理帧。

  1. 控制帧 Control:RTS、CTS、ACK。用于空口握手。ACK 缺失就代表丢包。

  2. 数据帧 Data:承载实际业务 IP 报文,MQTT/TCP/UDP 业务数据封装在这里。

Radio Tap 头部:记录信号强度 RSSI、信道、速率,用于判断设备信号质量。

33.6 高频实战过滤表达式(直接复制使用)

打开 Wireshark,过滤栏填入表达式,快速筛选目标帧。

33.6.1 只看 802.11 管理帧(排查掉线、认证、关联)

复制代码
wlan.fc.type == 0

33.6.2 过滤指定设备 MAC 地址(最常用)

将 aa:bb:cc:dd:ee:ff 替换为你的 ESP32 设备 MAC

复制代码
wlan.addr == aa:bb:cc:dd:ee:ff

33.6.3 过滤解除认证帧 Deauthentication(设备被路由踢下线核心证据)

复制代码
wlan.fc.type_subtype == 0x0c

选中 Deauth 帧,查看 wlan.reason_code 原因码,定位是谁发起断开、断开原因。

常见 Reason Code 对照表

Reason Code 含义 工程分析
0 正常断开 设备主动发起退出
2 先前关联不再有效 AP 超时老化剔除设备,休眠设备高频遇到
4 不支持该认证算法 加密 wlan.fc.type == 2 && ip 模式不匹配
8 关联离开 AP BSS 切换漫游
15 4‑way 握手超时 WiFi 密码错误 / 加密交互失败

33.6.4 过滤扫描探针帧 Probe Request(设备 WiFi 扫描)

复制代码
wlan.fc.type_subtype == 0x04

33.6.5 过滤 Beacon 帧(路由器广播)

复制代码
wlan.fc.type_subtype == 0x08

33.6.6 过滤数据帧,并且显示上层 IP 报文

复制代码
wlan.fc.type == 2 && ip

33.6.7 过滤 ACK 缺失,查看空口丢包

复制代码
wlan.fc.type == 1

33.6.8 组合过滤示例:只看某设备的 Deauth 和 Disassociate

复制代码
wlan.addr == aa:bb:cc:dd:ee:ff && (wlan.fc.type_subtype == 0x0c || wlan.fc.type_subtype == 0x0a)

33.7 典型问题抓包分析思路(工程方法论)

场景 1:设备反复重连,日志提示 disconnect,不知道是设备主动还是 AP 踢除

  1. 过滤设备 MAC;
  2. 寻找 Deauthentication 帧;
  3. 看帧的源 MAC:
    • 源 MAC=AP MAC:路由器主动踢掉设备,查 reason code;
    • 源 MAC = 设备 MAC:设备主动断开 WiFi,问题出在设备软件 / 驱动。

场景 2:配网 SmartConfig 失败

抓包观察:设备是否收到 SmartConfig 报文;是否发出 Probe;是否发出 Authentication;卡在哪个阶段。区分是手机 APP 发报文问题,还是设备解析问题。

场景 3:WiFi 显示已连接,但是不通网

抓包看:关联成功;是否收到 DHCP Offer;是否 ARP 交互;区分 802.11 链路问题还是 IP 层问题。

场景 4:业务报文偶发丢包

观察数据帧之后是否有对应 ACK;没有 ACK = 空口丢包;有 ACK 但上层没收到报文,属于设备软件栈问题。

33.8 抓包量产调试避坑要点

  1. 信道同步是第一大坑:抓包网卡信道必须和被测设备工作信道一致,否则抓不到交互帧。设备扫描时会跳信道,此时固定单信道抓包会丢失部分扫描帧。
  2. 不要用 WiFi 上网网卡同时做监听抓包,网卡不能一边上网一边监听。
  3. 抓包文件建议保存为 .pcapng 格式,方便后续回溯给团队分析。
  4. 外场复现偶发问题:同时保存设备串口日志 + wireshark pcap 抓包文件,两者时间戳对齐对照分析,只看单一资料很容易误判。
  5. 高干扰环境抓包报文量巨大,善用过滤表达式,不要裸看全部报文。

33.9 本章小结

无线抓包是 WiFi 嵌入式开发的终极调试手段,日志只能看到设备侧视角,抓包还原空中完整真相。

本章完成:

  1. 理解监听模式 Monitor Mode 原理与硬件选型避坑;
  2. Linux 环境完整搭建监听模式抓包流程;
  3. ESP32 内置 Sniffer 的使用场景与局限;
  4. 802.11 三大帧分类,Reason Code 故障码解读;
  5. 大量可直接复制的 Wireshark 过滤规则;
  6. 对应配网、掉线、不通网、丢包场景的标准分析思路。

掌握抓包之后,大量复现困难的间歇性 WiFi 疑难问题,就有了定位手段。

💖 点赞 + 收藏 + 关注,嵌入式 WiFi 量产实战全套教程持续更新!

相关推荐
乐橙开放平台7 小时前
智慧连锁客流检测和离岗检测怎么对接
大数据·人工智能·笔记·物联网·自动化·音视频·智能家居
SL_staff8 小时前
设备越多系统越崩?根源在三层抽象失效
spring boot·物联网·github
LiuYanG8 小时前
设备断电了平台还显示在线?MQTT 遗嘱消息(LWT)与离线判定踩坑实录
物联网
做萤石二次开发的哈哈10 小时前
海康甲烷监测终端二次开发:四级能力门控、规则联动与两类异常事件的全链路拆解
物联网·二次开发·工业安全·蓝海aiot一站式工作台·aiot开发·危险气体监测·甲烷检测
阿乔外贸日记11 小时前
全球电子产业高度集中:中、韩、日和中国台湾地区占全球数字硬件产能八成
大数据·服务器·人工智能·物联网·云计算
北京盛世宏博大卤蛋12 小时前
多机房分布式采集实战:网口温湿度传感器网段划分与网关解耦要点
物联网
Yiran_G12 小时前
BLE终端数据积压如何处理?缓存队列、断连补传与流量调度设计
嵌入式硬件·物联网
做萤石二次开发的哈哈13 小时前
网络音箱如何接入?音频文件夹、TTS播报、音量管控与ISAPI透传对接详解
人工智能·物联网·蓝海aiot一站式工作台·aiot开发·网络音箱·智慧广播·二次开放
by————组态13 小时前
Ricon组态适用领域全景解析:工业制造、能源、市政民生与智慧城市四大场景落地实践
后端·物联网·数学建模·智慧城市·能源·制造·组态