Wireshark 802.11抓包实战:从监听模式到生成Wi-Fi故障分析报告
简介802.11抓包分析报告doc版是一份面向无线网络初学者和网络运维人员的参考文档围绕Wireshark抓取的802.11帧逐层拆解MAC层数据格式。文档依次说明Frame Control中的Version/Type/Subtype、To DS/From DS方向字段以及More Frag、Retry、Pwr Mgt、More Data、Protected、Order等标志位的含义并给出数据帧、控制帧RTS/CTS/ACK和管理帧的字段布局与典型取值有助于快速识别无线帧类型并理解信道占用、节能等交互过程。资源包共1个doc文件大小630KB以文字配合字段格式图呈现适合边看边对照该文档已有115人学习。对于准备抓包实验、排查无线网络问题或系统学习802.11协议的读者这份资料能提供较完整的字段释义和帧类型梳理减少查找协议文档的时间。1. 802.11抓包分析报告不只是一堆pcap关键是能回答“连接为什么慢”Wi-Fi 信号满格但页面却打不开、终端在同一个 AP 下来回漫游掉线、会议室一到中午就集体卡顿这类问题在 TCP 层看不出异常ping 网关也是通的可用户就是觉得网络“不好使”。这时候大多数人缺的不是更好的路由器而是一份能把链路层证据摆出来的 802.11 抓包分析报告。802.11 抓包抓的不是 IP 报文而是空口上的管理帧、控制帧和数据帧管理帧负责扫描、认证、关联和断开连接过程的每一处异常都会在这里留痕。把抓到的 pcap 分析完再整理进 Word 报告是在给“信号差”“连不上”“频繁掉线”这些主观描述补上可复现的现场证据。这篇内容就是围绕 Wireshark 怎么抓、抓到之后先看哪些帧、分析结论如何组织成一份 doc 报告来展开的适合做无线网络运维、终端协议调试和认证测试的人参考。2. 抓包前先准备好网卡监听模式、信道与 Wireshark 入口2.1 为什么普通无线网卡抓不到 802.11 管理帧把普通笔记本的无线网卡插上打开 Wireshark 选接口开抓结果通常只有自己这台机器收发的广播帧和组播帧连 Beacon 都看不到。原因是默认情况下无线网卡工作在 STAStation模式驱动会把不属于本机的帧直接丢弃只把发给本机的数据帧交给上层协议栈。Wireshark 的接口列表里看到的“WLAN”是操作系统抽象的以太网接口已经经过驱动过滤抓到的不是空口原始帧。要拿到完整的 802.11 帧必须先把网卡切换到监听模式Monitor mode。监听模式让网卡对空中所有帧做接收不关心 BSSID 是否匹配也不判断地址是不是自己。Wireshark 在 Windows 上对监听模式的支持非常有限常见做法是用一块 Linux 下可用的无线网卡或者买一颗支持 monitor mode 的 USB 网卡看芯片型号部分 Realtek/Atheros 芯片支持Intel AX210 在较新内核下也能开监听。先用iw list确认网卡的能力iw list | grep -A 10 Supported interface modes输出里能看到monitor字样说明这块网卡支持监听模式没有这一行后面所有步骤都不成立。确认支持后还要看驱动是否允许设置信道很多网卡在监听模式下不能自动跟随 AP 跳频需要手动把信道固定到目标 AP 所在信道这也是抓不到包最常见的原因之一。2.2 用 iw 把无线网卡切到监听模式并固定信道在 Linux 下不依赖 airmon-ng 的情况下直接用iw切换接口类型。注意先停掉网络管理服务或者把接口 down 掉否则 NetworkManager 会把接口状态抢回去。下面是一组常见做法sudo ip link set wlan0 down sudo iw dev wlan0 set type monitor sudo ip link set wlan0 up sudo iw dev wlan0 set channel 6这四条命令的用途分别是先关闭接口释放驱动占用把接口类型改成 monitor重新启用接口让驱动以监听状态开始收包最后固定信道为 6。每一步之间要有间隔第一条执行完如果提示Device or resource busy说明还有进程占用网卡先sudo airmon-ng check kill清理或直接停掉 NetworkManager。信道号必须和抓取目标一致2.4G 频段常用 1/6/115G 频段需要确认 AP 实际使用的信道连 AP 的管理页面或在手机 Wi-Fi 详情里能看到。固定信道这一步经常被忽略结果是抓了一整晚的文件里全是别的信道的帧分析时一个目标 AP 都找不到。iw dev wlan0 set channel 6这条命令只对当前频段生效有些网卡还需要指定频宽如set channel 6 HT20。如果是 5G 信道命令可能变成set channel 149或带NOHT20参数具体看 iw 支持列表。实在懒得记参数可以先跑sudo iw dev wlan0 scan确认网卡能看到目标 SSID再切信道开抓。2.3 Wireshark 里确认 Radiotap 头出现再开始抓包打开 Wireshark选择监听接口可能是 wlan0 或 wlan0mon注意接口详情里有没有“Radiotap header”字样。Radiotap 是无线网卡给 802.11 帧加的额外头部里面携带 RSSI、噪声、信道、速率、天线信息。没有 Radiotap 头后面过滤radiotap.dbm_antsignal字段会全部为空报告里就写不了信号强度。Wireshark 在 Linux 下选中接口后Capture Options 面板里会有“Monitor mode”勾选项。如果驱动已经切到 monitor这个选项可以不用勾没切换成功的勾上它再开始通常也能自动切但不如iw可靠。长时间抓包建议先在 Capture Options 里设置多个文件选择“Use multiple files”每个文件 100 MB连续文件数设为 5再勾选“Ring buffer with 5 files”避免一个文件抓出十几个 GB 后期分析时卡死。抓包时长根据场景定分析关联过程抓 5 分钟就够看整晚的漫游和掉线问题至少抓 12 小时以上但要注意磁盘空间。2.4 命令行抓包出口tshark 长抓和切片另存很多现场环境没有桌面只有一台无头 Linux 服务器。这种情况用 tshark 直接落盘抓完再用显示过滤器切片。常见做法是sudo tshark -i wlan0 -a duration:3600 -w wifi-report-raw.pcapng tshark -r wifi-report-raw.pcapng -Y wlan.fc.type 0 -w wifi-mgmt.pcapng第一条命令抓 3600 秒1 小时的原始数据第二条把管理帧单独提取出来。-a duration:3600是自动停止条件避免人不在现场抓超时-Y后面跟的是显示过滤器只保留管理帧类型。也可以加-b filesize:102400 -b files:5做成环形缓冲防止磁盘写满。单独的 tcpdump 在这种场景下也能抓但 tcpdump 对 802.11 管理帧的显示不如 tshark 直观抓下来之后反正都要用 Wireshark 打开建议直接用 tshark 一步到位。抓到文件后先用 capinfos 看文件基本信息确认包数量和抓包时长符合预期再决定要不要全量分析。3. 抓到报文后第一眼先看这 6 类 802.11 帧3.1 从 Frame Control 拆开type 和 subtype 决定你在看哪一步802.11 帧头里的 Frame Control 字段有两位 type 和四位 subtypetype 为 0 是管理帧、1 是控制帧、2 是数据帧。管理帧负责连接生命周期控制帧负责信道竞争数据帧承载上层业务。在 Wireshark 里把树展开后能看到Type/Subtype一行但用分析过滤时最常写的是wlan.fc.type_subtype这个根据 type 和 subtype 合成出来的值。type_subtype 值帧类型对应连接阶段分析关注点0x08BeaconAP 广播SSID、信道、支持速率、HT/VHT 能力0x04 / 0x05Probe Request / Response主动扫描STA 扫描的目标 SSIDAP 是否回应0x00 / 0x01Association Request / Response关联是否关联成功、返回状态码0x0b / 0x0c / 0x0aAuthentication / Deauthentication / Disassociation认证与断开断开原因码认证失败定位关键0x1b / 0x1c / 0x0dRTS / CTS / ACK信道竞争周围干扰、隐藏节点、重传环境0x28QoS Data业务数据传输上/下行数据、重传、速率选择报告里建议把上表浓缩成一张“关键帧对照表”放附录分析正文里只提具体值。注意wlan.fc.type_subtype显示过滤器的写法是十六进制比如 Beacon 写0x08Probe Request 写0x04不要写成十进制 8 或 4Wireshark 也能识别但可读性差团队协作时容易出错。3.2 用显示过滤器把连接关联过程从大包里摘出来一个 STA 正常接入的流程通常是 Probe Request/Response、Authentication Request/Response、Association Request/Response然后进入 EAPOL 或 DHCP。把这几类帧单独提取出来按时间排序就能看到客户端卡在哪一步。用 tshark 可以先把时间、源 MAC、目标 MAC、帧类型、SSID 导成表格tshark -r wifi-mgmt.pcapng -Y wlan.fc.type_subtype 0x0b || wlan.fc.type_subtype 0x00 || wlan.fc.type_subtype 0x01 -T fields -e frame.time_relative -e wlan.sa -e wlan.da -e wlan.fc.type_subtype -e wlan.ssid-T fields指定输出字段-e后面跟字段名多个字段按空格分隔frame.time_relative是相对于抓包开始的时间单位秒适合做时间轴对比wlan.sa是源 MACwlan.da是目标 MACwlan.ssid在管理帧里存在数据帧里为空。如果只关注某一个客户端在过滤器里加上wlan.sa aa:bb:cc:dd:ee:ff || wlan.da aa:bb:cc:dd:ee:ff把无关终端过滤掉报告里的时间轴也干净得多。在 Wireshark 图形界面里给过滤器输入wlan.fc.type_subtype 0x0b然后回车就能看到所有 Authentication 帧。想分辨是成功还是失败展开 Frame Control 里 Flags 字段看 Authentication Algorithm 和 Status codeStatus code 为 0 表示成功非 0 值去查 802.11 标准里的状态码表。很多“连不上”的问题就出在这里比如 WPA2 密码错误时通常会看到连续的 Auth 请求被拒绝或者关联响应里返回状态码 17AP 无法处理关联。3.3 信号质量RSSI、速率与重传字段读法报告里如果只贴一堆包列表没有信号数据等于没分析。RSSI 在 Radiotap 头部里显示过滤器字段是radiotap.dbm_antsignal单位 dBm。提取所有 Beacon 帧里的信号强度tshark -r wifi-report-raw.pcapng -Y wlan.fc.type_subtype 0x08 -T fields -e wlan.ssid -e radiotap.dbm_antsignal -e frame.time_relative每条 Beacon 一行把这组数据拉进 Excel 做平均值和中位数比在 Wireshark 里肉眼看几十个数据点可靠得多。注意如果抓包时没勾选 Radiotap 或者网卡驱动不输出信号字段这一列会是空那时候只能换网卡重抓。速率字段在 Radiotap 里是radiotap.datarate单位是 Mbps数据帧上的速率能反映空口链路质量速率掉到 1 Mbps 说明环境里干扰很重。重传是另一个重要信号。802.11 MAC 层的重传由 Retry 字段标记显示过滤器是wlan.fc.retry 1。统计重传帧占比可以先过滤出所有数据帧再过滤重传帧用两个数量相除。占比较高超过 10%说明空口竞争严重或信号弱这时候报告中要结合周边 AP 分布一起写不要单独下结论说设备有问题。3.4 加密的数据帧怎么看WPA2 解密和 EAPOL 帧Data 帧的载荷在 WPA2/WPA3 下是加密的没有密钥时只能看到 MAC 头和长度看不到 TCP/UDP 内容。如果确实需要分析上层业务比如 DHCP 请求有没有发出去可以在 Wireshark 里配置解密进入 Edit - Preferences - Protocols - IEEE 802.11勾选“Enable decryption”在 Decryption keys 里添加wpa-pwd格式的密钥写法是SSID:密码。Wireshark 会根据四次握手自动推导出 PTK之后相关联的数据帧载荷就能解出来。抓包文件里如果已经包含完整的 802.1X/EAPOL 四次握手解密成功率很高如果只抓到了关联之后的数据帧而没有握手就解不开。企业级 WPA2-Enterprise 网络还要在 802.11 之外再做 EAP 层解密这种情况抓包分析的重点就不是数据帧内容而是 EAP 认证过程本身过滤eapol看 Identity Request/Response、TLS 握手、RADIUS 交互能定位是认证服务器拒了还是客户端证书有问题。解密是分析手段不是绕过授权报告中涉及敏感网络内容时先拿到授权再做。4. 分析结果落到 doc一份能交付的 802.11 抓包分析报告怎么组织4.1 先写抓包环境和拓扑不然后面所有数据没有复现前提.woc 分析报告最常见的问题是一上来就贴截图没有环境描述。802.11 分析结果极度依赖现场条件同样抓包看 Beacon不同信道、不同网卡驱动、不同抓包时长结论可能完全相反。报告第一部分放一张环境信息表字段至少包括抓包时间和时长、物理位置、目标 SSID 和 BSSID、信道及频宽、抓包网卡型号、驱动版本、Wireshark 版本、是否开启监听模式、是否配置了解密密钥。用表格形式列出来阅读者第一眼就能判断你这份证据的覆盖范围。拓扑图建议画清楚三件事AP 和 STA 的相对位置、抓包机放在哪、是否有墙壁或金属遮挡。图上不用特别精细重点是一句“抓包机距离 AP 约 3 米同一房间”这种信息它直接影响对 RSSI 数值的解释。报告里顺手写明抓包方法比如“采用 tshark 命令行连续抓取 1 小时文件切片 100MB”比只写一句“用 Wireshark 抓包”有说服力得多。4.2 数据概览包量、Beacon、客户端数量、平均 RSSI报告第二部分是量化概览让读者先看完整貌。用 capinfos 拿到文件的基本统计capinfos wifi-report-raw.pcapngcapinfos 输出里重点看Number of packets、Capture duration、Data byte rate、Average packet size这几项。再配合 tshark 统计管理帧数量tshark -r wifi-report-raw.pcapng -Y wlan.fc.type_subtype 0x08 | wc -l tshark -r wifi-report-raw.pcapng -Y wlan.fc.type_subtype 0x28 | wc -l第一条统计 Beacon 数量第二条统计 QoS Data 帧数量。Beacon 数量除以抓包时长再除以 10可以得到大致可见 AP 数量Beacon 默认间隔是 100ms10 秒 100 个QoS Data 数量代表业务活跃程度。把这些换算结果放进报告里的“数据概览”表比贴大段抓包过程有用。平均 RSSI 的计算方法在上一章已经给了命令Excel 里算出均值、最小值和标准差附一句口径说明“RSSI 取该 SSID 所有 Beacon 帧的信号数值不含控制帧”避免别人重复计算得出不同结果。4.3 重点帧序列时间轴关联过程慢在哪一步连接类问题报告里的关键是一张“时间轴表”。用如下格式把关键帧列出来之后做慢分析Time (s)方向帧类型源 MAC目标 MACSSID / 备注0.000STA - APProbe Request客户端broadcast扫描 SSID0.012AP - STAProbe ResponseAP客户端RSSI -520.120STA - APAuthentication客户端AP成功0.132AP - STAAuthenticationAP客户端成功0.150STA - APAssoc Request客户端AP关联0.163AP - STAAssoc ResponseAP客户端成功这张表在 Wireshark 里手动整理很容易出错用 tshark 导出 CSV 再在 Excel 里加工效率更高tshark -r wifi-mgmt.pcapng -Y wlan.fc.type_subtype 0x04 || wlan.fc.type_subtype 0x05 || wlan.fc.type_subtype 0x0b || wlan.fc.type_subtype 0x00 || wlan.fc.type_subtype 0x01 -T fields -E headery -E separator, -e frame.time_relative -e wlan.sa -e wlan.da -e wlan.fc.type_subtype -e wlan.ssid timeline.csv-E headery让第一行输出字段名-E separator,指定逗号分隔。导出的 CSV 按 time_relative 排序后把帧和帧之间的时间间隔算出来关联阶段耗时过长的点一眼可见。比如 Authentication 和 Assoc Response 间隔超过 1 秒多半是 AP 端有别的阻塞或者认证服务器响应慢需要进一步看 EAPOL 和 RADIUS。4.4 异常结论和截图规范报告里哪些截图值得放报告结尾的结论部分建议写成四段式现象描述、证据引用、根因判断、处理建议。现象描述用一句话说清“用户侧看到的现象是什么”证据引用必须写清楚是哪条记录比如“第 1024 号帧 Authentication 返回状态码 17”根因判断要区分“已确认”和“待验证”不要把所有可能性全写进去处理建议给出可执行动作不要写“优化网络质量”这种空话。截图放法有一个实用规则每张图只表达一个信息并且在图注里写明过滤器条件。比如截 Beacon 分布图图注写“过滤条件wlan.fc.type_subtype 0x08展示同一 SSID 下 3 个 AP 的 RSSI 变化”。Wireshark 里先设置列显示No./Time/Source/Destination/Protocol/Info再按 CtrlE 或 View - Time Display Format - Seconds Since Previous Captured Packet 把时间切到相对时间这样截图里的时间轴在报告里才解释得通。可以按 CtrlM 对关键帧做标记标记包在截图中会高亮报告里引用帧号时别人能快速定位。5. 写报告前先做三个校验口径、时间基线和重传统计5.1 校验抓包是否全程停留在目标信道很多报告写完了才发现抓包文件里 Beacon 数量太少、目标 AP 时有时无根源是抓包网卡在监听模式下没有锁信道。用下面的命令验证tshark -r wifi-report-raw.pcapng -Y wlan.fc.type_subtype 0x08 -T fields -e wlan.ssid -e radiotap.channel.freq | sort | uniq -c把所有 Beacon 按 SSID 和信道频率分组统计如果同一个 SSID 出现在多个频率说明网卡跳信道了这份抓包的数据不能作为信道占用分析的依据报告里需要特别注明“抓包期间可能存在信道漂移统计结果仅作参考”。出现跳信道情况时下一次抓包把iw dev wlan0 set channel放在抓包命令前再确认一次。5.2 区分 MAC 层重传和 IP 层重传别把两个概念混写报告里写“重传率 20%”之前先确认这个数字是哪一种重传。802.11 的 Retry 字段表示 MAC 层重传TCP 重传是传输层重传两者之间没有一一对应关系。MAC 层重传率高往往说明空口环境差、报文竞争失败率高TCP 重传率高可能是路径拥塞或者 AP 缓存溢出。报告里的统计口径要写清是wlan.fc.retry 1的占比还是 TCP 的 Retransmission 包占比否则运维同事拿去对照 KPI 时会对不上。计算 MAC 层重传占比时还要注意Beacon 本身不会重传控制帧重传没有业务意义通常只统计 QoS Data 帧tshark -r wifi-report-raw.pcapng -Y wlan.fc.type_subtype 0x28 wlan.fc.retry 1 | wc -l tshark -r wifi-report-raw.pcapng -Y wlan.fc.type_subtype 0x28 | wc -l两者相除才是有效数据帧的重传占比报告中要按这个口径写。5.3 时间基准统一用相对时间或者 UTC不能混用分析报告里经常出现“0.000s 发送关联请求、12:30:05 AP 返回成功”这种混排阅读者还得自己换算时间差。统一做法有两种全过程使用frame.time_relative以抓包开始为 0 秒适合做阶段耗时分析或者全过程使用 UTC 时间frame.time适合和 AP 日志、认证服务器日志交叉对比。选定一种后在报告开头说明“本文时间均以抓包起始为 0 秒或使用 UTC”并且所有表格和截图保持一致。Wireshark 里通过 View - Time Display Format 切换tshark 导出的字段用-e frame.time_relative或-e frame.time控制不要把两个字段混在同一张表里否则后面看时间线的同事会骂人。校验完这三点报告里的数据才是可信的。把口径说明写进附录把抓包命令和过滤条件附在文档末尾这份 802.11 抓包分析报告才算真正可交付。本文还有配套的精品资源点击获取