资讯动态

802.11报文过滤实战:从监听模式到Deauth排查的完整指南

发布时间:2026/10/20 3:00:16 来源:尧图企业网站定制
如果你也搞过无线网络排障一定有这样的体会明明抓了一堆数据包打开抓包文件却像看天书一样。后来我认真把802.11报文过滤这件事弄明白才发现此前很多抓包工作都是在制造噪音。这篇文章从一个真实的终端慢速排障经历说起把 802.11 报文过滤中“为什么过滤”“过滤什么”“怎么过滤”讲透适合网络工程师、无线安全测试人员和所有想深入理解 Wi-Fi 原理的同学参考。1. 为什么普通抓包工具根本“看”不到802.11报文做 802.11 报文过滤之前要先明白一个反直觉的事实你在普通电脑上打开抓包工具默认看到的并不是空口上的真实报文。无线网卡的工作方式和有线网卡有本质区别这决定了过滤的第一层逻辑。1.1 普通网卡交给协议栈的帧已经被“翻译过”有线以太网卡收到的是一个完整的以太网帧目的 MAC、源 MAC、类型字段、payload。但无线网卡在普通管理模式managed mode下驱动会先把 802.11 帧“翻译”成以太网帧再交给操作系统协议栈。这个翻译过程会把 802.11 帧头中很多关键信息丢掉比如帧控制字段、持续时间、序号、重传标志等。所以如果在普通模式下抓包你看到的是“被翻译过的假帧”不是空口上的原始报文。真正要诊断无线信号问题、空口冲突、管理帧交互过程必须让网卡进入监听模式monitor mode把原始 802.11 帧完整暴露出来。这一步做不对后面的过滤表达式写得再漂亮都没意义。1.2 管理帧、控制帧、数据帧的分工802.11 定义了三种主要帧类型过滤时首先要区分它们。帧类型type 值常见子类型作用管理帧0Beacon、Probe Request/Response、Auth、Assoc、Deauth负责建立、维护、拆除无线连接控制帧1RTS、CTS、ACK、PS-Poll负责空口资源预约和确认保证传输可靠数据帧2QoS Data、Null Data真正承载上层协议数据排障时最容易犯的错误是只盯着数据帧看。实际上终端能不能连上、为什么掉线、速率为什么低答案往往都在管理帧和控制帧里。比如 Beacon 帧携带 SSID 和基础速率Auth/Assoc 帧完整记录接入过程Deauth 帧则是掉线的直接线索。过滤时如果只看 type 2很多关键证据会被漏掉。1.3 一个帧里那三个地址谁是源、谁是目的802.11 帧头里有多个地址字段不能简单理解成“源 MAC 和目的 MAC”。常见的地址字段包括 Addr1、Addr2、Addr3具体含义要看帧控制字段里的 To DS 和 From DS 位。To DS0From DS0大概率是 Ad-hoc 或管理帧Addr1 是接收端Addr2 是发送端Addr3 可能是 BSSID。To DS1From DS0终端发给 APAddr1 是 AP 的 BSSIDAddr2 是终端 MACAddr3 是目的 MAC。To DS0From DS1AP 发给终端Addr1 是终端 MACAddr2 是 AP 的 BSSIDAddr3 是源 MAC。如果过滤时只写“源 MAC 某终端”很多无线帧会因为地址位不同而漏掉。正确做法是结合过滤场景使用wlan.addr或者同时匹配wlan.ta、wlan.ra、wlan.bssid。这也是 802.11 报文过滤和有线抓包最大的差异点。2. 从网卡到命令行让原始报文先“流”到过滤表达式前在写过滤表达式之前需要先把环境搭好。很多人卡在第一步监听模式起不来或者起来后什么都抓不到。这一节把操作链路理顺。2.1 三条命令把无线网卡切到监听模式Linux 下可以用iw工具完成切换。先查看无线接口名称iw dev假设无线接口叫wlan0切换监听模式的步骤是ip link set wlan0 down iw dev wlan0 set type monitor ip link set wlan0 up注意顺序不能乱。先把接口 down 掉才能改类型。改完后再 up。有些系统有网络管理服务会在 up 之后把接口拉回受管模式建议临时停掉相关服务或者直接用iw dev wlan0 set type monitor后确认一下接口状态。确认是否成功可以用iw dev wlan0 info看到type monitor就说明进入了原始报文监听状态。此时网卡不能再正常连接 Wi-Fi因为驱动已经把关联逻辑关掉了。这是正常现象不是网卡坏了。2.2 为什么监听模式下 ping 不通、连不上 Wi-Fi刚开始接触监听模式的人往往有这个困惑明明网卡已经开着却找不到任何网络连 AP 的 SSID 都看不到了。原因很简单monitor mode 下网卡不再参与正常的关联流程它只是一个被动的接收器只负责把空口上的原始 802.11 帧交给抓包工具。这不是 bug而是设计。802.11 报文过滤的前提是过滤器能拿到原始帧而不是经过网卡驱动翻译后的“正常网络包”。如果你需要在同一个无线接口上既抓包又上网建议使用双网卡方案一张网卡正常连接一张网卡做监听。这是很多无线排障老手的标准配置。2.3 抓不下来数据帧先检查信道和天线监听模式正常但抓包文件里只有零星几个 Beacon 帧其他什么也没有。这种问题很常见。802.11 是共享信道一张无线网卡同一时刻只能监听一个信道。如果 AP 在 6 信道上而你的网卡监听的是 1 信道那当然看不到对应 AP 的帧。用iw dev wlan0 set channel 6可以手动固定监听信道。如果要自动跟随时可以借助信道扫描工具但要注意切换信道期间会丢帧过滤因此也不可避免地有盲区。此外2.4GHz 和 5GHz 是完全不同的射频资源网卡需要分别确认支持。天线信号太弱也会导致明明在信道上的帧收不到这时可以看抓包文件里 radiotap 头部的信号强度字段如果普遍低于 -80 dBm先考虑挪动天线的位置。3. 过滤表达式怎么选先确定过滤层再看过滤目标802.11 报文过滤有两种完全不同的实现层次。一种是在抓包瞬间就把不关心的帧丢弃另一种是先把所有原始帧抓下来再在显示层面挑出需要的帧。弄清楚两者的差异能避免很多“为什么结果不对”的困惑。3.1 抓包过滤BPF和显示过滤先分清要解决什么问题抓包过滤基于 BPFBerkeley Packet Filter在内核态直接丢弃不匹配的帧能大幅减少写入磁盘的数据量。缺点是语法受限而且有些 802.11 字段不容易在这个层次表达。显示过滤则是先把原始帧完整保存再在查看时筛选灵活度很高能基于更多解析后的字段做条件判断。两者不是二选一。我个人的习惯是在现场抓包时最多用一次宽泛的抓包过滤比如只保留特定链路类型的帧保证重要证据不漏回到分析时再用显示过滤做深度挖掘因为显示过滤可以反复调整不存在“当时过滤条件写错就白抓”的问题。3.2 高频过滤字段帧控制位、地址字段、信号强度以命令行抓包工具的显示过滤语法为例常见过滤条件如下只看管理帧wlan.fc.type 0只看 Beaconwlan.fc.type 0 wlan.fc.subtype 8只看 Probe Requestwlan.fc.type 0 wlan.fc.subtype 4只看某个 AP 的帧wlan.bssid aa:bb:cc:dd:ee:ff只看某个终端的收发wlan.addr 11:22:33:44:55:66只看重传帧wlan.fc.retry 1wlan.addr的好处是会把帧头里的多个地址字段都匹配一遍适合“只要跟这个 MAC 有关的帧都要”的场景。如果需要更精确地定位发送方或接收方再分别用wlan.ta和wlan.ra。信号强度字段通常位于 radiotap 头部不同驱动和网卡名称略有差异。常见字段是radiotap.dbm_antsignal可以过滤出信号低于某个阈值的帧这在覆盖分析中特别有用。3.3 一段能直接抄走的过滤命令模板现场排障时我经常用类似的命令模板tshark -i wlan0mon -Y wlan.fc.type 0 wlan.fc.subtype 8 -T fields -e wlan.bssid -e wlan.sa -e radiotap.dbm_antsignal这条命令只打印 Beacon 帧的 BSSID、源地址和信号强度。配合-T fields能直接输出成表格再配合sort和awk就能做简单的信道指纹统计。先看“附近有哪些 AP、信号多强、来自哪个 MAC”再进一步过滤效率比一上来就盯着某个终端 MAC 高出太多。4. 实战场景一用过滤定位“终端能连上但网速很慢”的问题前面讲的都是基础现在看一个完整的排障案例。某公司办公区反馈一台终端连上演示网后能上网但速度明显比别的终端差。我带着监听网卡到现场先把这台终端和一个已知 AP 作为过滤目标。4.1 先把目标缩小按终端 MAC 和 AP BSSID 过滤无线排障最忌讳对着全量抓包文件发呆。第一步永远是缩小范围。确认终端 MAC 和 AP 的 BSSID 后我用显示过滤只看两者之间的帧tshark -r office.pcapng -Y wlan.bssid aa:bb:cc:dd:ee:ff wlan.addr 11:22:33:44:55:66这里用wlan.addr而不是wlan.sa或wlan.ra是因为终端和 AP 交互时地址字段会因上下行变化用wlan.addr能避免遗漏。过滤后抓包文件立刻从几万帧缩小到几百帧线索开始清晰。4.2 看重传位和速率协商判断空口质量继续过滤重传帧tshark -r office.pcapng -Y wlan.bssid aa:bb:cc:dd:ee:ff wlan.addr 11:22:33:44:55:66 wlan.fc.retry 1如果重传帧占比很高说明空口质量差很大概率存在干扰或信号弱。我还同时检查了管理帧里的 Supported Rates 信息发现终端和 AP 协商到的速率明显低于同区域其他终端。这说明问题不在 AP 端而在这台终端所处的射频环境。每次抓包时间不用太长几十秒到几分钟就够。重点是在同一个时间窗口内对比正常终端和异常终端。如果正常终端重传率很低异常终端重传率很高基本可以确定不是 AP 广播信道拥塞而是局部射频问题。4.3 控制帧数量暴增往往不是偶然空口质量差时RTS/CTS 和 ACK 控制帧的数量也会变多。我过滤了控制帧tshark -r office.pcapng -Y wlan.fc.type 1 (wlan.fc.subtype 11 || wlan.fc.subtype 12)RTS/CTS 机制本身是正常的但短时间内数量异常暴增往往说明附近有隐藏节点或强干扰。最终排查发现问题终端所在位置附近有一台高功率的无线设备在相邻信道上持续占用空口。把它关掉后终端速率立刻恢复正常。这个结论完全靠 802.11 报文过滤才看得见。5. 实战场景二终端频繁掉线用 Deauth 过滤还原“案发现场”另外一种高频排障场景是终端频繁掉线。这类问题不能凭感觉猜过滤 Deauth 和 Disassociation 帧是最直接的取证手段。5.1 先过滤所有“掉线通知”Deauth 与 Disassociation管理帧里的 Deauthentication子类型 12和 Disassociation子类型 10是两条关键的“退网通知”。过滤命令tshark -r drop.pcapng -Y wlan.fc.type 0 (wlan.fc.subtype 10 || wlan.fc.subtype 12)结果文件里如果只有零星几条 Deauth而且发送方就是 AP那大概率是正常掉线比如 AP 重启或终端进入休眠后重关联。如果 Deauth 帧数量巨大且发送方地址很陌生就需要进一步做来源判断。5.2 抓完整交互过程谁在什么时候发了什么只过滤 Deauth 帧还不够还要把掉线前后的管理帧完整拿出来看。典型复现过程是终端连接正常 → 突然收到 Deauth → 终端重新扫描 → 重新认证关联。通过过滤管理帧的时间线和地址字段可以清楚地看到是谁先发起断开。比如有一种情况终端频繁收到来自陌生 MAC 的 Deauth但这些陌生 MAC 的信号强度非常强而且持续不断。这通常不是 AP 的问题而是有人在同一信道伪造了“无线断开消息”。不过我并不建议凭此就直接断定攻击来源因为空口上的 MAC 地址是很容易伪造的还需要结合信号强度变化和其他帧的特征。5.3 判断“攻击”之前先排除 AP 自身的原因很多人看到 Deauth 就喊“被攻击了”但事实是 AP 自身故障、供电不稳、内存不足也可能触发 Deauth。正确流程是先过滤看发送端 BSSID 是否真的是 AP再看 Reason Code。比如常见的 Reason Code 7 是“终端离开 BSS”多数是正常流程Reason Code 1 是“不明原因”需要结合上下文。我自己踩过这样的坑某次终端掉线排查中Deauth 帧密密麻麻结果发现是 AP 的 DHCP 租约和加密重协商机制配合出了问题终端在某个时间节点被 AP 主动踢掉。如果不系统过滤分析很容易被“外部攻击”的判断带到沟里。6. 加密报文、信道切换与其余边界别让过滤语句骗了你802.11 报文过滤不只是语法问题物理层和加密机制会给过滤结果带来很大限制。最后这部分是我这些年积累的边界认知。6.1 WPA2 加密下的过滤范围头和 payload 是两回事接入加密网络后数据帧的 payload 是加密的。监听模式下你能看到帧头里的地址、序号、持续时间但看不到上层 TCP/IP 内容。如果你不设置解密直接过滤ip.addr 某IP结果一定是空的。因为显示过滤工具解析不到加密后的 IP 层数据帧根本匹配不上。解决方法是在自己有权调试的网络环境下提供已知的 PSK 或 PMK并抓取完整的 4 次握手包让协议分析工具导出会话密钥后再解密分析。这里要提醒一点务必只在你自己拥有或已获授权的网络上做操作不要在别人的网络上尝试破解或窃取密钥。6.2 单网卡只能守一个信道过滤前先确认物理层过滤命令写得再精确也救不了物理层的盲区。一张无线网卡只有一个射频前端同一时刻只能锁定一个信道。如果你在一个信道抓包却想分析另一个信道上 AP 的行为结果必然是漏帧。跨信道场景下要么用多张网卡分别锁不同信道要么使用支持快速信道扫描的方案但要接受扫描期间的丢帧。很多“过滤完了发现某个终端根本没有通信记录”的问题并不是过滤条件错了而是那个终端在抓包瞬间根本不在当前信道上。6.3 我踩过的一个坑过滤条件没问题结果全是空文件有段时间我习惯先用 BPF 抓包过滤来省磁盘空间比如直接在抓包阶段写wlan type mgt结果回看时发现某个关键终端的管理帧竟然缺失。排查半天发现问题是某些硬件驱动在 monitor 模式下会把部分管理帧处理得不太规范BPF 在底层过滤时直接把它们丢了。之后我就调整了策略现场抓包阶段除非磁盘空间实在紧张否则尽量不做窄过滤最多按 BSSID 或信道粗筛所有精确的 802.11 报文过滤都放到数据落盘之后用显示过滤完成。这样虽然文件大一些但至少不会因为一个底层过滤条件漏掉最关键的证据。每次做无线排障我都会先问自己三个问题我要看的是哪种帧这些帧要经过哪个地址字段网卡当前锁在哪个信道把这三件事理清楚802.11 报文过滤才能真正变成手里的利器。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑