网络知识
IEEE 802.11 · Wi-Fi Alliance · 3GPP · CCIE Wireless / EI

无线网络专题

全书物理层和链路层几乎全是有线视角。这一页按抓包能对上的粒度写 802.11 MAC、四地址、接入状态机、PHY 演进、WPA2 四次握手、射频规划、快速漫游和 CAPWAP,蜂窝只点到网元与定位差别。

IEEE 802.11 族(非 IETF) Wi-Fi 4–7 n / ac / ax / be 安全 802.11i · WPA3 SAE CAPWAP RFC 5415 / 5416
主规范
IEEE 802.11-2020 / 802.11ax / 802.11be · 802.11i / 802.11r/k/v/w
IETF 侧
RFC 3748 EAP · RFC 2865 RADIUS · RFC 5415 CAPWAP · RFC 7664 Dragonfly
认证与命名
IEEE 写修订号;Wi-Fi Alliance 写 Wi-Fi 4/5/6/6E/7。二者不要混成一家。
对照全书
4.3 CSMA/CD · 03 物理层 · IPv6 · 排障树

无线与有线的根本差异

Half-duplex · Hidden / Exposed

有线交换式以太网已经是全双工、点到点、误码极低;802.11 仍活在共享、半双工、接收端碰撞的世界。MAC 的每一处怪异——每单播都 ACK、NAV、RTS/CTS、不能 CSMA/CD——都是从这个物理事实推出来的。

Medium

半双工

同一信道上发射机的泄漏功率淹没本机接收机,无法边发边听。有线 PHY 可以把 TX/RX 做在不同线对或用回波抵消;单射频 802.11 做不到(全双工 Wi-Fi 仍是研究课题,不是现网能力)。

Error

误码率高

多径、衰落、邻频、微波炉、蓝牙、雷达都在同一段免许可频谱里。FCS 失败是常态,不是事故。所以单播要链路层 ACK + 重传,不能把可靠传输全甩给 TCP。

Topology

共享且不对称

碰撞发生在接收机,发送机未必听得到。A 和 C 都听得到 B、彼此听不到,就是隐藏终端。这和总线以太网“人人听到同一根铜”完全不同。

Identity

一跳里有中转

STA 不跟对端 STA 直连,帧要经 AP 进 Distribution System。三个地址不够描述「谁发、谁收、最终给谁」,所以有第四地址和 To DS / From DS。

为什么不能用 CSMA/CD

全书 4.3 的 CSMA/CD 有三条腿:先听后发、边发边听、冲突就停再指数退避。无线拆掉了中间那条。

  1. 发送时无法侦听碰撞。本机发射功率比收到的远站信号高几个数量级,接收机饱和。没有“电压叠加异常”这种本地可观测现象。
  2. 碰撞在对端。隐藏终端让 A 和 C 的帧在 B 处毁掉,A 的本地能量检测仍显示空闲。
  3. 没有有意义的争用期 / 最小帧长。10 Mb/s 以太网用 51.2 μs / 64 字节保证发完之前能听到冲突。无线冲突检测不成立,这条约束整条作废。

802.11 的替代是 CSMA/CA:冲突避免,而不是冲突检测。发送前听;用 IFS 排出优先级;用随机退避摊开同时结束等待的节点;用 收不到 ACK 推断碰撞或误码;用 Duration/NAV 做虚拟载波侦听,把“我听不到的人”也锁住。

隐藏终端与暴露终端

  隐藏终端(碰撞在 B)          暴露终端(C 被冤枉推迟)

  A ----> B <---- C              A <---- B         C ----> D
     A 听不到 C                     B→A 时 C 听到 B,按 NAV 闭嘴
     两帧在 B 处互毁                 但 C→D 并不会毁掉 B→A

隐藏终端伤正确性:B 收到的是垃圾,只能靠缺 ACK 重传。暴露终端伤容量:本可并行的两对通信被虚拟载波侦听串行化。RTS/CTS 主要治隐藏终端;对暴露终端往往更糟——CTS 把更多旁观者的 NAV 拉长。802.11ax 的 BSS Color + OBSS-PD 空间复用,才是针对“听得到但不是本 BSS”的现代对策。

设计权衡

企业网默认 不开 RTS/CTS(dot11RTSThreshold 默认 2347,大于最大 MSDU 2304,等于禁用)。隐藏终端严重(室外桥、隐藏节点多的仓库)再降阈值;办公室高密度里 RTS/CTS 的 20+14 字节控制帧开销通常比它救回来的碰撞还贵。

抓包对照 · 介质差异

  • 交换式有线口抓到的是以太网 II,全双工,看不到冲突残片。无线必须 monitor 模式才看得到 802.11 头、重传、ACK、Beacon。
  • 普通笔记本网卡在托管模式(managed)下,驱动把 802.11 解成“假以太网”交给 Wireshark:三地址被压成 DA/SA,管理帧和管理帧重传都看不见。
  • 过滤器:wlan.fc.retry == 1 看重传率;wlan.fc.type_subtype == 0x1d 看 ACK。重传高而 ACK 稀疏,先怀疑隐藏终端或 SNR,不要先怪 DHCP。

802.11 MAC:CSMA/CA

DCF · EDCA · NAV · Aggregation

基础接入是 DCF(Distributed Coordination Function)。PCF 几乎没人实现。现网 QoS 走 802.11e EDCA(Wi-Fi Alliance 叫 WMM)。聚合和块确认是 802.11n 之后空气时间能用起来的真正原因。

对照有线 CSMA/CD

CSMA/CD(半双工以太网)CSMA/CA(802.11 DCF)
听物理载波(电压)物理 CCA + 虚拟 NAV
发的时候边发边听只发,不听
冲突怎么知道本地检测到碰撞SIFS 后没收到 ACK
冲突后Jam + 二进制指数退避CW 加倍,下一次 DIFS+backoff
最小帧64 B(争用期)无此约束;控制帧可以短到 14 B
单播确认无(丢给上层)几乎每条单播 MPDU 都要 ACK(聚合后改 BA)
广播/组播不 ACK一般不 ACK,用最低强制速率发
优先级无(后来有 802.1p)IFS 长度本身就是优先级

IFS 与精确数值

帧间间隔越短,优先级越高。关系固定:SIFS < PIFS < DIFS < EIFS。EDCA 再用 AIFSN 把 DIFS 拉成四档。

  SIFS  最短:ACK / CTS / 同一 TXOP 内后续 MPDU
  PIFS  = SIFS + 1×Slot     PCF、部分 DFS/信道切换
  DIFS  = SIFS + 2×Slot     DCF 新竞争的起点
  AIFS  = SIFS + AIFSN×Slot EDCA,按接入类别
  EIFS  = SIFS + ACKTxTime + DIFS
          上一帧 FCS 失败时用,给“我解不出、别人在 ACK”留出空档
PHYSIFSSlotDIFSCWmin / CWmax
802.11b DSSS10 μs20 μs50 μs31 / 1023
802.11a OFDM 5 GHz16 μs9 μs34 μs15 / 1023
802.11g ERP(短时隙)10 μs9 μs28 μs15 / 1023
802.11g(有 11b 共存,长时隙)10 μs20 μs50 μs31 / 1023
11n/ac/ax 5/6 GHz16 μs9 μs34 μs15 / 1023
11ax 2.4 GHz10 μs9 μs28 μs15 / 1023

公式来自 IEEE 802.11:DIFS = aSIFSTime + 2×aSlotTime。11g 的短时隙要整个 BSS 没有 11b 站点才启用;混有 11b 时退回 20 μs 时隙,整网变慢——这是“保护机制有代价”的第一处。

DCF 状态机(一次成功单播)

CCA 空闲满 DIFS

物理载波(能量检测 + 前导检测)和 NAV 都空闲,连续空满一个 DIFS。

随机退避

从 [0, CW] 均匀取整数个时隙。介质忙则冻结计数器,再空闲 DIFS 后继续减。CW 初值 = CWmin。

发 MPDU

Duration 写成“SIFS+ACK”(或整个 TXOP)。旁听者把这个值写入 NAV,不必解出正文。

SIFS 后 ACK

接收方用 SIFS 回复 ACK(14 字节:FC+Duration+RA+FCS)。ACK 不再被 ACK。

失败则加倍 CW

超时无 ACK:CW ← min(2×(CW+1)−1, CWmax),短重传计数 +1。短重传上限 dot11ShortRetryLimit = 7,长帧(走了 RTS)用 dot11LongRetryLimit = 4。成功后 CW 回到 CWmin。

“每帧都 ACK”要收窄

教学口号指单播数据 / 需要确认的管理帧。广播、组播、Beacon、Probe Request、控制帧本身(RTS/CTS/ACK)都不被再 ACK。802.11n 之后单播聚合走 Block ACK,不再是一 MPDU 一 ACK。

NAV 虚拟载波侦听

每个站点维护 NAV 计数器(微秒)。听到帧的 Duration/ID 且该帧不是给自己,就用它更新 NAV(取较大值)。NAV>0 视为介质忙,即使 CCA 空闲也不能发。这是对隐藏终端的第一道防线:B 听得到 A 的 Duration,C 听得到 B 的 CTS Duration,于是 C 在 A 的数据窗口里闭嘴。

例外:Duration/ID 在 PS-Poll 里装的是 AID(bit 14–15 置位),不是时长。控制帧里 CTS/ACK 只有 Address1(RA),没有 TA。

RTS / CTS / CTS-to-self

RTS/CTS 交换(隐藏终端)
STA-ARTS →AP-B RA=B, TA=A
听得到 B 的人都置 NAV← CTSAP-B 只有 RA=A
STA-AData →SIFS 后
STA-A← ACKAP-B

RTS 20 字节(FC+Duration+RA+TA+FCS),CTS/ACK 14 字节。RTS 的 Duration 覆盖 SIFS+CTS+SIFS+Data+SIFS+ACK;CTS 的 Duration 是 RTS 减去 SIFS+CTS。隐藏的 C 听不到 RTS,但听得到 B 的 CTS,NAV 仍然被锁。

CTS-to-self:发送方先对自己发一个 CTS(RA=自己),把附近旧站点的 NAV 撑开,再发 OFDM 帧。这是 802.11g 在 2.4 GHz 保护 11b 站点的典型手法,比完整 RTS/CTS 便宜,但不解决隐藏终端——隐藏节点听不到你的 CTS-to-self。

EDCA / WMM 接入类别

802.11e 把一个站点拆成四个队列,各自一套 AIFSN / CW / TXOP。Wi-Fi Alliance 的 WMM 是 EDCA 的互操作子集;HCCA(中心轮询)现网基本没有。

ACUP(802.1D)AIFSN(STA)CWminCWmaxTXOP(OFDM)
AC_VO 语音6, 72(AP 常为 1)371.504 ms
AC_VI 视频4, 52(AP 常为 1)7153.008 ms
AC_BE 尽力0, 331510230(一帧就再争用)
AC_BK 后台1, 271510230

表中 CW 按 OFDM 的 aCWmin=15 代入:CWmin[VO]=(aCWmin+1)/4−1=3,CWmin[VI]=(aCWmin+1)/2−1=7(IEEE 802.11 默认 EDCA 参数表)。AP 的 VO/VI AIFSN 常为 1,比 STA 更霸道——下行语音先于上行。标记错 AC(IP 电话走 BE)比“信号不好”更常见。

A-MSDU / A-MPDU 与 Block ACK

最大 MSDU 2304 字节(所以 IP 在 Wi-Fi 上仍按 1500,很少把 MTU 拉满 2304)。HT A-MSDU 3839 或 7935;A-MPDU 上限 HT 64 KiB、VHT 到 1 MiB、HE 更大。

设计:何时开保护

选 RTS/CTS:隐藏节点、室外点对点、CTS-to-self 不够时。代价是每笔聚合前多 20+14 字节加两次 SIFS。

选 CTS-to-self:2.4 GHz 还有 11b 听客,只想让旧站点 NAV,不想付 RTS 往返。

选关保护 + 提高最低强制速率:现代 5/6 GHz 企业网的默认。Beacon/组播不再用 1 Mbps 吞空气。

抓包对照 · MAC

wlan.fc.type_subtype == 0x1b # RTS wlan.fc.type_subtype == 0x1c # CTS wlan.fc.type_subtype == 0x1d # ACK wlan.fc.type_subtype == 0x19 # BlockAck wlan.fc.type_subtype == 0x28 # QoS Data wlan.qos.priority # UP 0–7 → AC wlan.fc.retry == 1 wlan.duration
  • 看一帧 QoS Data 的 Duration,应覆盖到 BA/ACK 结束,不是 0。
  • Radiotap 里的 data rate / MCS 是驱动填的,不是 802.11 头字段。
  • 托管模式抓包看不到 ACK/RTS。没有它们就断言“没开保护”是错的。

802.11 帧结构

3 types · 4 addresses · Frame Control

三种类型(管理 / 控制 / 数据),Type 2 bit + Subtype 4 bit。地址最多四个。和以太网帧的差别不只是“多两个 MAC”。

  通用 MAC 头(IEEE 802.11)

  +-------------+-------------+--------+--------+--------+--------+
  | Frame Ctl 2 | Duration 2  | Addr1 6| Addr2 6| Addr3 6| Seq 2 |
  +-------------+-------------+--------+--------+--------+--------+
  | Addr4 6 (仅 ToDS=FromDS=1) | QoS 2? | HT Ctl 4? | Body | FCS 4|
  +----------------------------+--------+-----------+------+------+
Frame Control16 bit

Protocol 2(现网恒 0)· Type 2 · Subtype 4 · To DS · From DS · More Frag · Retry · Pwr Mgt · More Data · Protected · +HTC/Order。

Duration / ID16 bit

通常是剩余 TXOP(微秒),供旁听者写 NAV。PS-Poll 时高 2 bit 为 1,其余是 AID。

Address 148 bit · RA

永远是接收机地址。网卡硬件用它决定“是不是给我的”。CTS/ACK 只有这一个地址。

Sequence Control16 bit

Fragment Number 4 + Sequence Number 12。重传保持同一序号;新 MSDU 加一(模 4096)。

FCS32 bit CRC

覆盖 MAC 头+正文。Radiotap Flags 里的 Bad FCS 是驱动标的,FCS 本身仍在帧尾。

Type / Subtype 编码

Wireshark 的 wlan.fc.type_subtype = (type<<4)|subtype。Type:00 管理、01 控制、10 数据、11 扩展(60 GHz 等)。

type_subtype名字谁发
0x00Association RequestSTA
0x01Association ResponseAP,带 AID
0x04 / 0x05Probe Req / Resp主动扫描
0x08BeaconAP,约每 100 TU
0x0bAuthenticationOpen / SAE / FT
0x0cDeauthentication回 State 1
0x0aDisassociation回 State 2
0x0dAction11k/v/r、测距、WNM
0x1b / 1c / 1dRTS / CTS / ACK控制
0x18 / 19BAR / BA块确认
0x20 / 0x28Data / QoS Data现网数据几乎都是 0x28
0x24 / 0x2cNull / QoS Null省电、保活,无正文

四个地址:To DS / From DS

以太网两地址就够:点到点链路,DA/SA 即下一跳。802.11 基础设施 BSS 里,STA 把帧交给 AP,AP 再送进 DS(通常是有线交换网)或转给另一个 STA。需要同时写下:接收者、发送者、最终目的、原始源。

ToDSFromDSAddr1Addr2Addr3Addr4场景
00DASABSSID—IBSS / 直连
01DABSSIDSA—AP → STA
10BSSIDSADA—STA → AP
11RATADASAWDS / Mesh / 四地址

基础设施 BSS 日常是三地址。STA 上网关:ToDS=1 FromDS=0,Addr1=AP,Addr2=STA,Addr3=网关 MAC。AP 回 STA:反过来,Addr3 是网关(原始源)。四地址只在无线中继(WDS、802.11s、部分网桥、控制器间的某些隧道出口)出现。看到 Addr4 不是“Wi-Fi 总是四个 MAC”。

和以太网对照

802.11 头没有 EtherType。数据正文前通常是 LLC/SNAP:AA AA 03 00 00 00 + 两字节类型(08 00 IPv4、86 DD IPv6、88 8E EAPOL)。托管模式抓包时驱动已经帮你拆成以太网 II,你会误以为无线帧本来就长那样。

802.11 最大 MSDU 2304,以太网 MTU 1500。FCS 都是 CRC-32,但覆盖范围和前导完全不同。802.11 还有 Duration、Retry、Pwr Mgt、Protected——以太网没有对等物。

抓包对照 · 帧

IEEE 802.11 QoS Data, Flags: .......T (To DS) Type/Subtype: QoS Data (0x0028) Frame Control 线上字节: 88 01 (八位组0=0x88 QoS Data, 八位组1=0x01 Flags) .... ..00 = Version .... 10.. = Type: Data 1000 .... = Subtype: QoS Data .... ...1 = To DS .... ..0. = From DS Receiver address: <BSSID / AP> # Addr1 Transmitter address: <STA> # Addr2 = SA Destination address: <gateway> # Addr3 = DA CCMP / TKIP / 或 LLC/SNAP + IPv4 wlan.fc.ds == 0x01 # ToDS=1 FromDS=0 wlan.addr == aa:bb:cc:dd:ee:ff # 四个地址任一命中 llc / eapol / ip

接入过程与状态机

Scan · Auth · Assoc · RSNA

SME 状态不是“连上 Wi-Fi”一句话。802.11 先认证再关联;WPA2/WPA3 的真正密钥在关联之后的 RSNA 握手里完成。Open System 认证成功不等于安全。

状态机

状态认证关联允许的帧
State 1未未Class 1:管理(Probe/Beacon/Auth)、控制
State 2已未+ Class 2:Assoc / Reassoc / Disassoc
State 3已已+ Class 3:数据、PS-Poll、部分 Action
RSNA 4802.1X/SAE 完成已用 PTK/GTK 保护的数据(Protected=1)

Deauth → 掉回 State 1。Disassoc → 掉回 State 2(认证缓存还在,可直接再 Assoc)。未关联站点发 Class 3 帧,AP 回 Deauth,reason 7(Class 3 from nonassociated STA)。这是抓包里最容易误判成“被攻击”的正常拒绝。

扫描:被动 Beacon vs 主动 Probe

Beacon 固定字段:Timestamp(64 bit TSF,微秒)· Beacon Interval · Capability。后面是 IE:SSID(tag 0)、Supported Rates(1)、DS Parameter(3,信道号)、TIM(5,省电缓冲位图)、RSN(48)、HT/VHT/HE、WMM、Country、ERP……DTIM 周期在 TIM 里,决定广播/组播何时冲出 AP 缓冲。

SSID / BSSID / ESS

Name

SSID

0–32 字节

网络名。现网当 UTF-8。空 SSID 的 Beacon = 隐藏(不隐身,只是不广播名字)。

L2 identity

BSSID

48-bit MAC

一个 BSS 的链路层标识,通常是 AP 该射频的 MAC。MBSSID 下可以是派生地址。过滤器用 wlan.bssid。

Campus

ESS / ESSID

多个 BSS 同一 SSID、经 DS 互通,构成 ESS。ESSID 不是标准字段,是对“这个 SSID 所代表的 ESS”的俗称。漫游 = 换 BSSID、不换 SSID。

Ad-hoc

IBSS

无 AP。BSSID 由发起 STA 随机生成(本地管理位)。Capability 的 IBSS 位置 1、ESS 位 0。企业网不要用。

认证算法号

Authentication 帧里的 Algorithm Number:0 Open System(两帧,Request/Response,无密码)· 1 Shared Key(WEP 挑战,已废)· 2 FT(802.11r)· 3 SAE(WPA3-Personal)。WPA2-PSK 的认证算法仍是 0——密码验证发生在四次握手,不在这两帧里。只看到 Auth success 就说“PSK 对了”,是错的。

关联

Association Request 带 Capability、Listen Interval、SSID、速率、RSN、HT/VHT/HE、WMM、PMKID 列表(若有缓存)。Response 带 Status(0=成功)和 AID 1–2007。Listen Interval 以 Beacon 间隔计,告诉 AP“我省电时最多睡几颗 Beacon”——AP 按这个给 TIM 留缓冲,太大浪费 AP 内存,太小费电。

Reassociation 用于漫游:请求里多一个 Current AP Address,让新 AP 经 DS 向旧 AP 要缓冲帧(IAPP/802.11F 已撤回,现网由控制器或 11r/OKC 完成)。

抓包对照 · 接入

wlan.fc.type_subtype == 0x08 # Beacon wlan.fc.type_subtype == 0x04 # Probe Req wlan.ssid == "CORP" wlan.fc.type_subtype == 0x0b # Auth wlan.fixed.auth.alg == 0 # Open wlan.fixed.auth.alg == 3 # SAE wlan.fc.type_subtype == 0x00 # Assoc Req wlan.fixed.status_code == 0 wlan.fixed.reason_code # Deauth/Disassoc
  • Beacon 的 SSID 空、紧接着有定向 Probe Req+Resp,是隐藏 SSID,不是“没 Beacon”。
  • TSF Timestamp 应随 Beacon 单调加。乱跳可能是多 AP 同 BSSID(配置事故)或抓包跨信道。
  • reason 15 = 四次握手超时;reason 2 = 上次认证失效;reason 4 = 空闲超时。先查码再谈干扰。

物理层演进

a/b/g/n/ac/ax/be · Wi-Fi 4–7

修订号是 IEEE 的;Wi-Fi 4/5/6/7 是联盟的市场名。对应关系写错是硬伤。速率是 PHY 峰值,不是用户 UDP 吞吐。

IEEE联盟名频段标志技术单链路量级峰值
802.11-1997—2.4FHSS / DSSS2 Mb/s
802.11a-1999—仅 5 GHzOFDM54 Mb/s
802.11b-1999—2.4DSSS/CCK11 Mb/s
802.11g-2003—2.4ERP-OFDM54 Mb/s
802.11n-2009Wi-Fi 42.4 / 5HT、MIMO、40 MHz、A-MPDU600 Mb/s(4×4、40 MHz)
802.11ac-2013Wi-Fi 5仅 5 GHzVHT、80/160、256-QAM、DL MU-MIMO~6.9 Gb/s(8×8、160)
802.11ax-2021Wi-Fi 6 / 6E2.4 / 5 / 6HE、OFDMA、UL+DL MU-MIMO、1024-QAM、BSS Color~9.6 Gb/s
802.11be-2024Wi-Fi 72.4 / 5 / 6EHT、320 MHz、4096-QAM、MLO、Multi-RU~46 Gb/s
三处最容易写反

ac 没有 2.4 GHz。盒子上印 Wi-Fi 5 的双频 AP,2.4 GHz 射频仍是 n(或后来的 ax)。

Wi-Fi 6E = 802.11ax 用在 6 GHz,不是新修订号。Wi-Fi 7 才是 802.11be。

n = Wi-Fi 4,不是 5。联盟从 n 开始编号,a/b/g 没有 Wi-Fi 1/2/3 的正式对应(事后有人补过,考试不要用)。

2.4 / 5 / 6 GHz

2.4 GHz5 GHz6 GHz(6E/7)
覆盖最好,墙损小中最差,近场容量带
干扰蓝牙、微波、邻家雷达(DFS)、少一些邻家干净;WPA3 强制
不重叠 20 MHz美/中常用 1/6/11 三个数十个(含 DFS)更多(UNII-5…8)
典型企业带宽只 20 MHz20 或 40(高密用 20)40/80,少 160/320
准入老终端根据地主产能新终端;无 WPA2 开放网

2.4 GHz 信道

信道中心:1 = 2412 MHz,之后 +5 MHz,到 13 = 2472。信道 14 = 2484,仅日本、仅 DSSS。美国 1–11,欧洲/中国 1–13。

DSSS 频谱约 22 MHz 宽,OFDM 20 MHz。1 和 6、6 和 11 之间约 3 MHz 隔离,工程上视为仅有 3 个不重叠信道。1/4/8/11 或 1/5/9 会邻频重叠——ACI(邻频干扰)往往比同频 CCI 更脏:能量在你的带边,解不出却抬高噪声底。

ETSI 有人用 1/5/9/13 挤出第四条 20 MHz,带边仍有交叠,只在全网统一规划时值得谈。

5 GHz 信道号

公式:channel = (f_MHz − 5000) / 5。36 = 5180,40 = 5200,165 = 5825。

绑定:40 MHz 用一对(36+40),80 MHz 四个(36–48),160 MHz 八个(36–64 或 100–128)。每加一倍带宽,理论速率约翻倍,可复用的信道数减半,同频碰撞域变大。高密场馆先加 AP、降功率、缩到 20 MHz,不要先开 80。

MIMO / OFDMA / MLO 一句话级机理

MCS:n 用 MCS 0–31(含流数);ac MCS 0–9(256-QAM);ax 0–11(1024-QAM);be 到 13(4096-QAM)。海报速率还要乘流数、带宽、短 GI、编码码率。写进标书前先按单流 80 MHz 算用户体验。

抓包对照 · PHY

wlan_radio.channel == 36 wlan_radio.11ac / wlan.vht / wlan.he / wlan.eht radiotap.mcs.index radiotap.dbm_antsignal wlan.ext_tag # HE/EHT 能力在 Extended IE
  • Beacon 的 DS Parameter / HT Operation / VHT Operation 写的是 AP 当前主信道和带宽,不是客户端速率。
  • 同一 STA 的数据帧 MCS 随 SNR 跳。盯瞬时 MCS 不如看重传率和 radiotap 信号。

射频规划

CCI / ACI · Power · DFS · AFC

无线排障一半是射频,不是 VLAN。规划目标:每个客户端在目标 RSSI/SNR 下听到 一个 强 AP、两三个可漫游邻居,而不是十个同信道 Beacon。

同频 vs 邻频

CCI(同频):两个 BSS 同一信道且能互相听到,就进入同一 CSMA 域,空气时间共享。不是“干扰”这么简单——它们在礼貌地排队。AP 越多、功率越大、带宽越宽,这个域越大,单用户吞吐下降。

ACI(邻频):部分重叠的信道。对方的能量落在你的带边,CCA 行为怪异,误码升,又不能像同频那样用 NAV 协调。所以 2.4 GHz 宁可 1/6/11 三个,不要“每个 AP 错开一个号”。

功率、邻居、最低速率

DFS 与雷达避让(802.11h)

UNII-2 / 2e 要先听雷达再工作:

代价:AP 重启或 RRM 切到 DFS 信道时,这个射频会静默一分钟(或十分钟)。语音 SSID 要不要用 DFS,是容量 vs 可用性的取舍。假雷达(非 Wi-Fi 脉冲、故障气象设备)会造成整层莫名切信道——排障时看 AP 的雷达事件日志。

6 GHz 与 AFC

6 GHz 没有 5 GHz 那套雷达 DFS。美国等地区把标准功率 / 室外 AP 交给 AFC(Automated Frequency Coordination):AP 带位置查询数据库,避开固定微波等在用频率。室内低功率(LPI)通常不用 AFC,PSD 受限(美区量级 5 dBm/MHz)。VLP 更低,可移动。

6 GHz 强制 WPA3 或 OWE,没有 WPA2-PSK 开放网。扫描用 PSC(每 80 MHz 一个优先扫描信道),全扫 6 GHz 会很慢。

设计权衡

信道复用:2.4 只能三色;5 GHz 20 MHz 可以几乎每 AP 不同色;80 MHz 在一层楼里很容易两三个 AP 同色。先定带宽,再定功率,再跑 RRM(Cisco DCA/TPC,华为无线射频调优,H3C 类似)。RRM 不是把功率推到最大。

抓包对照 · 射频

  • 同一信道 Beacon 的 BSSID 数量 ≈ 你分享空气的 BSS 数。超过 3–4 个强 Beacon,先减功率或改信道。
  • DFS:看管理帧里的 Channel Switch Announcement(Action),以及 AP 日志,不看客户端 IP。
  • radiotap.dbm_antsignal 是捕获 NIC 的天线,不是客户体验。要用控制器的客户端 RSSI,或在客户身边抓。

安全:从 WEP 到 WPA3

802.11i · 4-way · SAE · 802.11w

链路加密在 IEEE 802.11i / 联盟 WPA 品牌下。EAP 是 IETF(RFC 3748),802.1X 是 IEEE。抓包能看见四次握手和 EAP 身份交换,看不见 PMK 本身。

WEP 为何废

RC4 + 24 bit IV + CRC-32 ICV。IV 空间 224,忙 AP 几小时必然重用;Fluhrer–Mantin–Shamir / KoreK / PTW 从 IV 与密钥流恢复 WEP 密钥。ICV 不是加密 MIC,可比特翻转。Shared Key 认证还把挑战明文和密文都交给被动监听者。IEEE 已弃用,现网出现就是事故。

WPA 的 TKIP 是过渡:还是 RC4,加了 per-packet mixing 和 Michael MIC,48 bit TSC。也被打破。只在博物馆终端上作为过渡,新 SSID 不要开。

WPA2 = 802.11i RSNA

成对密码默认 CCMP(AES-CCM)。两种认证:

四次握手逐步

关联完成、PMK 已在双方后,Authenticator(AP/WLC)与 Supplicant(STA)用 EAPOL-Key 派生 PTK 并分发 GTK。

PTK = PRF(PMK, "Pairwise key expansion",
          Min(AA,SPA) || Max(AA,SPA) ||
          Min(ANonce,SNonce) || Max(ANonce,SNonce))
    → KCK (MIC) || KEK (wrap GTK) || TK (data)

再切成 KCK(算 MIC)、KEK(封装 GTK)、TK(加密数据)。

EAPOL-Key · 四次握手
APM1 ANonce →STA 无 MIC;可带 PMKID
STA 已能算 PTK← M2 SNonce+MICSTA 附 RSN IE
AP 算 PTK、校 MICM3 GTK+MIC+Install →KEK 封装 GTK/IGTK
双方安装密钥← M4 MICSTA 确认
KRACK · 2017

重放或重传 M3 会让部分实现把同一 PTK 再安装一遍并重置 nonce。CCMP 的安全建立在 (key, nonce) 不重复上;nonce 重用即可伪造/解密。Linux/Android 的一个变种甚至把 TK 重装成全 0。补丁策略:已安装的密钥禁止再安装。这是协议状态机实现漏洞,不是 AES 被破解。

PMKID = HMAC-SHA1-128(PMK, "PMK Name" || AA || SPA)。出现在 RSN IE 或 M1 的 Key Data。用途是快速识别缓存的 PMK。副作用:攻击者抓到 PMKID 就能离线撞 PSK(hashcat),不必等齐四次握手。WPA3 SAE 去掉了这条离线路径。

WPA3-Personal:SAE / Dragonfly

SAE(Simultaneous Authentication of Equals)基于 Dragonfly(RFC 7664),是口令认证密钥交换:双方用口令做有限域/椭圆曲线上的握手,得到 PMK,带前向保密。被动抓包不能拿去离线字典——每猜一次口令必须在线与 AP 完成一次 Commit/Confirm。

认证算法号 3。交换是 Commit + Confirm(可带 anti-clogging token 防算力耗尽)。6 GHz 要求 Hash-to-Element (H2E),不要用旧的 hunting-and-pecking。过渡模式(WPA2+WPA3 同 SSID)仍可能被降级到 PSK 再离线打——要 WPA3-only 才干净。

WPA3-Enterprise:802.1X + 强制 PMF;可选 192-bit 套件(GCMP-256 等 CNSA 向)。OWE(Opportunistic Wireless Encryption,RFC 8110)给“开放网络”做每会话加密,无认证。

PMF · 802.11w

未保护的 Deauth/Disassoc 是经典 DoS:任何人冒充 AP 就能踢人。802.11w 给单播管理帧做 CCMP,给广播管理帧做 BIP(IGTK)。能力位:Capable / Required。WPA3 要求 PMF。Beacon 本身的完整保护是后续修订的工作,不要说“开了 11w 所有管理帧都不可伪造”。

抓包对照 · 安全

eapol eapol.type == 3 # EAPOL-Key wlan_rsna_eapol.keydes.msgnr == 1 # M1…M4 eap # 企业 EAP 方法 wlan.rsn.ie wlan.fc.protected == 1 eth.type == 0x888e # 托管模式里 EAPOL 长这样
  • PSK 网络:看不到口令,看得到 M1–M4。有口令和 SSID,Wireshark 可解密后续 CCMP(须抓到该 STA 的完整握手)。
  • 企业网:先看到 EAP Identity / TLS / PEAP,再看到四次握手。RADIUS 在有线侧 AP/WLC↔AAA,无线空口没有 RADIUS UDP。
  • M1 带 PMKID、没有完整 M2–M4,也能做离线 PSK 攻击——这是开放 monitor 接口的合规风险,不是功能 bug。

自治 AP 与控制器

CAPWAP · Split-MAC · Forwarding

一台一台配 Fat AP 在三台以后就会漂移。轻量 AP + AC/WLC 把射频实时留在 AP,把关联、密钥、漫游、射频策略收到控制器。隧道是 IETF CAPWAP,不是 Cisco 私有。

CAPWAP

RFC 5415(协议)+ RFC 5416(802.11 绑定)。前身是 Cisco LWAPP(UDP 12222/12223,私有)。

Split-MAC

必须在 10 μs 量级完成的事留在 AP:Beacon、Probe Response、ACK、RTS/CTS、重传、很多实现里的 CCMP 加解密。可以集中的事放 WLC/AC:关联状态机、802.1X、密钥分发、RRM 决策、漫游锚点、用户 VLAN 策略。所以你在 WLC 上 debug client 看得到 Assoc,在空口仍看得到 AP 自己回的 ACK。

集中转发 vs 本地转发

集中(Cisco Local mode / 华为 tunnel)本地(FlexConnect / 华为 direct)
用户数据CAPWAP 5247 拉回 WLC 再进有线AP 桥到接入交换机 VLAN
选它总部、要统一 ACL/镜像、跨子网漫游简单分支、WAN 细、WLC 远在云端
代价WLC 吞吐与 WAN 是瓶颈;AP 口常做 access每站点要规划用户 VLAN;跨 WAN 漫游要锚或别玩 L2
AP 掉控制器现有客户端通常掉standalone 可按缓存策略继续转发

Cisco 把本地转发叫 FlexConnect(旧 H-REAP);华为 VAP forward-mode direct | tunnel(默认 direct);H3C client forwarding-location ap | ac。混合很常见:员工 SSID 集中,OT/打印 SSID 本地。

AP 上联口不要当普通 PC 口

集中转发:口上往往只有 AP 管理 VLAN,switchport mode access + portfast 即可,客户端 MAC 不会出现在接入交换机上。

本地转发:必须 trunk,native = AP 管理,allowed = 用户 VLAN。这时交换机能看到客户端 MAC。不要在这种口上开 max=1 的端口安全,第一个客户关联就会违规。

抓包对照 · CAPWAP

udp.port == 5246 or udp.port == 5247 tls # 控制面 DTLS;握手失败看 Alert bootp.option.type == 43 # AP 的 DHCP option 43 dns.qry.name contains "CAPWAP"
  • 控制包在 5246 上,payload 是 DTLS,看不到关联帧——那些在空口。WLC 的 debug client 和 monitor 抓包要对照着看。
  • 5247 有大量 UDP、5246 没有:数据面通了、控制面可能已建立;反过来只有 5246 = 能 join、集中转发没数据。

多厂商配置对照

Cisco IOS / IOS-XE · 华为 VRP · H3C Comware

无线相关的“核心配置”其实大半在有线侧:AP 上联、VLAN、STP 边缘、到 AC 的聚合、用户网关冗余、把网段打进 IGP。SSID 命令三家方言差得远,以设备版本为准。

方言红线

华为 / 华三看配置是 display current-configuration,不是 show。保存:Cisco end + write(或 copy run start);华为华三 quit 到用户视图再 save。SVI:Cisco interface Vlan20,华为 Vlanif20,H3C Vlan-interface20。

HSRP 是 Cisco 私有;华为没有 HSRP,三家都有标准 VRRP。AireOS WLC 的 LAG 不是 LACP,对端必须 channel-group mode on;C9800 才按交换机那样跑 LACP。

AP 上联:Trunk + Native = 管理 VLAN

本地转发或多 SSID 多 VLAN 时用。集中转发可改成 access 管理 VLAN。

vlan 10
 name AP-MGMT
vlan 20
 name WIFI-USER
interface GigabitEthernet0/1
 description AP
 switchport mode trunk
 switchport trunk native vlan 10
 switchport trunk allowed vlan 10,20,30
 spanning-tree portfast trunk
 spanning-tree bpduguard enable
end
write
vlan batch 10 20 30
stp bpdu-protection
interface GigabitEthernet0/0/1
 description AP
 port link-type trunk
 port trunk pvid vlan 10
 port trunk allow-pass vlan 10 20 30
 stp edged-port enable
quit
save
vlan 10
vlan 20
stp bpdu-protection enable
interface GigabitEthernet1/0/1
 description AP
 port link-type trunk
 port trunk pvid vlan 10
 port trunk permit vlan 10 20 30
 stp edged-port enable
quit
save

只做管理 VLAN 的 Access 口(集中转发)

interface GigabitEthernet0/1
 switchport mode access
 switchport access vlan 10
 spanning-tree portfast
 spanning-tree bpduguard enable
stp bpdu-protection
interface GigabitEthernet0/0/1
 port link-type access
 port default vlan 10
 stp edged-port enable
stp bpdu-protection enable
interface GigabitEthernet1/0/1
 port link-type access
 port access vlan 10
 stp edged-port enable

STP 模式(华为默认 MSTP)

spanning-tree mode rapid-pvst
spanning-tree vlan 20 root primary
spanning-tree vlan 30 root secondary
stp mode rstp
# 出厂默认往往是 mstp,要显式改
stp instance 0 root primary
stp mode rstp
stp instance 0 root primary

到 WLC / AC 的链路聚合

! C9800 / 交换机侧 LACP
interface Port-channel1
 switchport mode trunk
 switchport trunk allowed vlan 10,20,30
interface GigabitEthernet0/1
 channel-group 1 mode active

! AireOS WLC 对端必须是静态,不是 LACP
interface GigabitEthernet0/1
 channel-group 1 mode on
interface Eth-Trunk1
 port link-type trunk
 port trunk allow-pass vlan 10 20 30
 mode lacp-static
interface GigabitEthernet0/0/1
 eth-trunk 1
interface Bridge-Aggregation1
 port link-type trunk
 port trunk permit vlan 10 20 30
 link-aggregation mode dynamic
interface GigabitEthernet1/0/1
 port link-aggregation group 1

无线用户网关:HSRP 私有 vs VRRP 标准

HSRP 主必须和该 VLAN 的 STP 根对齐,否则流量先到根再绕去主网关。华为华三只用 VRRP。

interface Vlan20
 ip address 10.20.0.2 255.255.255.0
 standby 20 ip 10.20.0.1
 standby 20 priority 110
 standby 20 preempt
 ! 或标准 VRRP:
 ! vrrp 20 ip 10.20.0.1
 ! vrrp 20 priority 110
interface Vlanif20
 ip address 10.20.0.2 255.255.255.0
 vrrp vrid 20 virtual-ip 10.20.0.1
 vrrp vrid 20 priority 110
 vrrp vrid 20 preempt-mode timer delay 0
interface Vlan-interface20
 ip address 10.20.0.2 255.255.255.0
 vrrp vrid 20 virtual-ip 10.20.0.1
 vrrp vrid 20 priority 110

把无线网段打进 OSPF

router ospf 1
 router-id 1.1.1.1
 passive-interface Vlan20
interface Vlan20
 ip ospf 1 area 0
 ! 用户 VLAN 只宣告、不在上面跑 Hello
ospf 1 router-id 1.1.1.1
 silent-interface Vlanif20
 area 0.0.0.0
  network 10.20.0.0 0.0.0.255
# 或在接口:ospf enable 1 area 0.0.0.0
ospf 1 router-id 1.1.1.1
 silent-interface Vlan-interface20
 area 0
  network 10.20.0.0 0.0.0.255

访客 ACL(放行 DHCP/DNS,挡住 RFC1918,再放行外网)

ip access-list extended GUEST
 permit udp any any eq 67
 permit udp any any eq 68
 permit udp any any eq 53
 deny   ip any 10.0.0.0 0.255.255.255
 deny   ip any 172.16.0.0 0.15.255.255
 deny   ip any 192.168.0.0 0.0.255.255
 permit ip any any
acl number 3000
 rule 10 permit udp destination-port eq bootps
 rule 20 permit udp destination-port eq bootpc
 rule 30 permit udp destination-port eq dns
 rule 40 deny ip destination 10.0.0.0 0.255.255.255
 rule 50 deny ip destination 172.16.0.0 0.15.255.255
 rule 60 deny ip destination 192.168.0.0 0.0.255.255
 rule 70 permit ip
acl advanced 3000
 rule 10 permit udp destination-port eq bootps
 rule 20 permit udp destination-port eq bootpc
 rule 30 permit udp destination-port eq dns
 rule 40 deny ip destination 10.0.0.0 0.255.255.255
 rule 50 deny ip destination 172.16.0.0 0.15.255.255
 rule 60 deny ip destination 192.168.0.0 0.0.255.255
 rule 70 permit ip

端口安全:有线桌面要,AP 口不要

! 只用于 PC access 口,不要用在 AP trunk
interface GigabitEthernet0/2
 switchport mode access
 switchport access vlan 40
 switchport port-security
 switchport port-security maximum 2
 switchport port-security violation restrict
interface GigabitEthernet0/0/2
 port link-type access
 port default vlan 40
 port-security enable
 port-security max-mac-num 2
 port-security protect-action restrict
interface GigabitEthernet1/0/2
 port link-type access
 port access vlan 40
 port-security enable
 port-security max-mac-count 2
 port-security intrusion-mode blockmac

SSID 本身(方言,以版本为准)

下面给的是各家“WPA2-PSK + AES + 用户 VLAN 20”的最小骨架,不是完整生产模板。Cisco 分 AireOS 与 9800 IOS-XE;华为在 wlan 视图用 profile 拼 VAP;H3C 用 wlan service-template。

wlan CORP 1 CORP
 shutdown
 no security wpa akm dot1x
 security wpa akm psk
 security wpa psk set-key ascii 0 替换成口令
 no shutdown
wireless profile policy POL-CORP
 vlan 20
 no shutdown
! 再绑到 policy tag / site tag / AP。以 17.x 为准。
wlan
 ssid-profile name corp-ssid
  ssid CORP
 security-profile name corp-sec
  security wpa2 psk pass-phrase cipher 替换成口令 aes
 vap-profile name corp-vap
  ssid-profile corp-ssid
  security-profile corp-sec
  service-vlan vlan-id 20
  forward-mode tunnel
ap-group name default
 vap-profile corp-vap wlan 1 radio 0
 vap-profile corp-vap wlan 1 radio 1
# 以 V200R0xx 为准
wlan service-template 1
 ssid CORP
 akm mode psk
 preshared-key pass-phrase cipher 替换成口令
 cipher-suite ccmp
 service-template enable
# 再绑到 AP 射频:
# interface WLAN-Radio 1/0/1
#  service-template 1
# 以 Comware 7 为准

802.1X 骨架:Cisco security wpa akm dot1x + aaa authentication dot1x + RADIUS 1812;华为 security wpa2 dot1x aes + radius-server template;H3C akm mode dot1x + RADIUS scheme。企业网把认证列表、动态 VLAN、CoA(UDP 3799)放到 ISE / 华为 Agile / 华三 IMC,不在这一页展开。

蜂窝网络速览

4G EPC · 5GC · Handover

3GPP 的世界:许可频谱、基站调度(不是 CSMA)、SIM 身份、切换是一等公民。只记网元名字和跟 Wi-Fi 的分工,不在这里做 5GC 精读。

4G LTE5G SA
终端UEUE
基站eNB(E-UTRAN)gNB(NG-RAN,常拆 CU/DU)
核心网EPC5GC
移动性 / 会话MME · S-GW · P-GWAMF · SMF · UPF
用户数据HSSUDM + AUSF
策略PCRFPCF
RAN–核心S1-MME / S1-UN2(gNB–AMF)/ N3(gNB–UPF)
站间X2Xn

NSA(非独立):gNB 挂在 4G eNB 下面(EN-DC),核心仍是 EPC/MME,不是 5GC。宣传“我们有 5G”时先问 SA 还是 NSA。SA 才是 gNB + AMF/SMF/UPF。

切换:理想走 X2/Xn(基站之间直接转上下文);走不通才 S1/N2,经核心网。Wi-Fi 漫游默认是客户端做主、断关联再关联;蜂窝是网络做主、目标小区预先准备。

和 Wi-Fi 的定位差别

抓包对照 · 蜂窝 vs Wi-Fi

笔记本 Wireshark 看不到空口 LTE/NR(要模组诊断或专用仪表)。能看到的是 UE 后面的 N6/SGi 或 Wi-Fi 侧以太网。手机从 Wi-Fi 切 4G 时,QUIC/TCP 迁移是上层的事(见全书 HTTP/3),不是 802.11 漫游。

漫游与常见问题

11r / 11k / 11v · Sticky · Monitor

同 ESS 换 BSSID 叫漫游。决定权默认在客户端。AP 再强,客户端觉得 −72 dBm“还能用”,就不会走。

快漫游工具箱

工具标准做什么代价 / 坑
802.11k无线电测量Neighbor Report:告诉 STA 附近 BSSID/信道STA 仍可不理
802.11vWNMBSS Transition Management,AP 建议或请求离开强制踢人会伤劣质驱动
802.11r FT快 BSS 过渡PMK-R0 / PMK-R1 层级,Auth+Reassoc 里带密钥,跳过完整 802.1X部分安卓/老 NIC 残;MDID 必须一致
OKC事实标准同移动组缓存 PMKID,再关联时带 PMKID非 11r;跨厂商别指望
PMK 缓存802.11i回同一 AP 时跳过 EAP换 AP 不够
CCKMCisco 私有旧快漫游新网用 11r 替代

11r 两种封装:Over-the-air(对新 AP 直接 FT Auth)和 Over-the-DS(经当前 AP 的 Action 帧中转)。苹果对 Adaptive FT / over-the-air 更友善。语音预算通常要整次漫游 < 50 ms;完整 PEAP 往往是几百毫秒到数秒。

密钥层级:PMK-R0 住在 R0KH(通常 WLC),派生 PMK-R1 给 R1KH(AP 或 WLC),再派生 PTK。Mobility Domain IE 必须全网一致,否则 FT 失败回退慢路径,表现为“开了 11r 更掉线”。

粘性客户端根因

  1. 漫游算法在 STA:门限常在 −70 到 −75 dBm,迟滞几个 dB。新 AP −55、旧 AP −72,仍可能不走。
  2. 2.4 GHz 小区过大:同一 AP 的 2.4 比 5 远一圈,双频优先粘 2.4。
  3. 最低速率太低:1 Mbps 也能“关联成功”,客户端认为链路可用。
  4. 没有 11k 邻居表,客户端要主动扫描才知道隔壁——扫描时语音会卡。
  5. 驱动 bug / 省电:懒得探,直到重传爆掉再 roamed-after-drop。

治理:降 2.4 功率、抬最低强制速率、开 11k/v、语音 SSID 只上 5/6 GHz、必要时 BTM 引导。不要一上来就“低 RSSI 强制踢”——劣质客户端被踢后会扫很久。

为什么必须 monitor 模式

托管模式 NIC 已经加入某个 BSSID,固件 ACK、过滤、解密、再伪装成以太网。你看不到别人的 Beacon、看不到重传、看不到 Management、看不到真正的四地址。Monitor 模式把射频当频谱分析仪:锁定信道,把空中所有 BSS 的 802.11 + 驱动加的 radiotap 交上来。不在那个信道上的帧,你永远抓不到——这是无线和 tcpdump -i eth0 最大的操作差别。

抓包对照 · 漫游

wlan.fc.type_subtype == 0x02 # Reassoc Req wlan.tag.number == 54 # Mobility Domain(11r) wlan.fixed.category_code == 10 # WNM / 11v wlan.fixed.category_code == 5 # Radio Measurement / 11k

一次成功 FT:Authentication(alg=2)+ Reassociation,中间没有完整 EAP,只有很短的 FTIE。若仍看到完整 PEAP,11r 没谈成。

疑难排查

Phenomenon → Layer → Root cause

不要一掉线就扩信道、加功率。先定界:空口状态机、密钥、DHCP/VLAN、还是射频空气时间。

现象 → 空口 M2 循环 → PMK 不一致 → 口令/SSID/VLAN 映射

能看见 SSID,关联成功,上不了网

先抓 monitor:若 Auth+Assoc 成功、EAPOL M1/M2 反复、然后 Deauth reason 15,这是四次握手失败,不是 DHCP。

  • PSK:口令错、SSID 错一个字符(PMK 绑定 SSID)、控制器上同一 WLAN 名配了两套 key、iPhone 缓存了旧 PSK。
  • 802.1X:EAP 成功了吗?没有 → RADIUS 1812、shared secret、证书时间、PEAP 内层账号。EAP 成功仍卡四次握手 → PMK 没到 AP(CAPWAP 密钥安装失败,少见)。
  • 握手成功、Protected 数据有、但无 DHCP:查用户 VLAN(VAP service-vlan / policy profile)、FlexConnect VLAN 映射、DHCP 中继、访客 ACL 是否把 67/68 打死。

有线对照:在 WLC 南向口抓,应看到 DHCP Discover 的源 MAC 是客户端(本地转发)或来自 WLC 的隧道解封(集中转发)。空口有 DHCP、有线没有 = 转发模式/VLAN 映射错。

现象 → AP 不 join → 发现/DTLS/时间/版本 → 不是 SSID

AP 注册不上控制器

  1. AP 有没有管理地址(DHCP)?option 43 格式是否按厂商。Cisco option 43:type f1 + length=4×WLC 数 + 地址十六进制(10.1.1.1 = 0a010101)。华为/H3C 的 option 43 布局不同,抄 Cisco hex 会发现到错误的东西。
  2. AP 能否 UDP 5246 到 AC?中间防火墙只放了 80/443 不够。数据面 5247 不通时,有的平台能 join 但集中转发无流量。
  3. DTLS:证书、PSK、国家码、时钟。AP 与 WLC 时差过大或首次 join 的 SSC 未接受,卡在 encrypt-policy / DTLS。
  4. 镜像版本不匹配。看 AP 控制台,不要只看 WLC 上“Discovered”。

现象 → 漫游掉话 → 完整 EAP / 粘滞 / VLAN 变了

语音一走动就断 1–2 秒

  • 空口:是 Reassoc 还是先 Deauth 再全新 Assoc?后者是掉线重连,不是漫游。
  • 有没有 alg=2 的 FT Auth?没有 = 11r 没生效,完整 PEAP 必超语音预算。
  • 漫游后 DHCP Request 换了 IP = 用户 VLAN 变了(Flex 映射不一致、锚点丢失)。语音五元组断。
  • 客户端 RSSI 在 −72 才走:粘性。用 11k 邻居 + 降旧小区 2.4 功率,而不是把新 AP 开到 20 dBm 让 CCI 爆炸。

现象 → 速率低 → 空气时间 / 保护 / CCI / MCS

信号格满,iperf 只有几十兆

信号格看的是 Beacon RSSI,不是数据 MCS。查:信道利用率(>50% 先减 CCI)、重传率(>10% 查 SNR/隐藏节点)、是否 2.4 GHz 还开着 11b 保护、是否 80 MHz 但同层三个 AP 同色、是否组播/mDNS 用 6 Mbps 刷屏。IPv6 RA / mDNS 在 Wi-Fi 上是不 ACK 的组播,泛滥时先做 MLD/IGMP 窥探和 mDNS 网关,不要先换 AP 型号。

贯穿场景:园区 WLAN

Design walk-through

一栋办公楼 + 两家分支。把本页的选择一次做完,并写下不选另一边的理由。

有线地基

接入交换机 AP 口:总部 Local mode → access VLAN 10 + portfast + BPDU guard。分支 FlexConnect → trunk,native 10,allowed 20,30,40。两台汇聚跑 RSTP/MSTP,VLAN 20 的根与 VRRP/HSRP 主同一台。不要把 AP 口划进与用户相同的 STP 计算而不做边缘。

控制器

总部一对 WLC/AC SSO,CAPWAP 5246/5247 在防火墙显式放行。分支 AP 走 Flex,WAN 只走控制。AireOS 若上 LAG,对端 mode on。OSPF 里用户 VLAN 全部 passive。

SSID 切片

CORP:5/6 GHz,WPA3-Enterprise 过渡(仍有老笔记本则 WPA2+WPA3+PMF capable),802.1X,VLAN 20,开 11k/v,11r 在试点网验证安卓后再全开。GUEST:VLAN 30,集中或锚点,ACL 只放 DHCP/DNS/外网。IOT:2.4 GHz,WPA2-PSK,VLAN 40,最低速率 12 Mbps,隔离客户端。

射频

2.4:只 1/6/11,20 MHz,功率比 5 GHz 低 6 dB,密度高的会议室关 2.4。5 GHz:办公 40 MHz,高密 20 MHz;语音 SSID 慎用 DFS。6 GHz:WPA3-only,LPI。小区边缘按 −67 dBm 验收,不按“格满”。

不选什么

不开全网 80 MHz。不在 AP trunk 上端口安全。不用 WPA2-PSK 承载员工身份(离职收不回口令)。不把访客和 CORP 放同一 VLAN 靠隔离位凑合。不在未验证终端上强制 11r。

抓包实战小结

Monitor · Radiotap · Filters

先锁信道,再抓。不锁信道的“全频扫描”抓包,帧是碎的,不能当证据。

macOS

# 现代 macOS:tcpdump -I = monitor(需 root,会断当前关联) sudo tcpdump -I -i en0 -w /tmp/wlan.pcap # 指定信道通常要先用 Wireshark 勾 Monitor,或 wdutil / 第三方 sudo wdutil info # 旧系统还有 airport,Sequoia 起路径常被移除 sudo /System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport en0 sniff 36

Wireshark → Capture Options → 勾选该接口的 Monitor Mode。抓管理帧时关掉自己的关联,否则驱动仍可能过滤。解密 PSK:Wireless Toolbar 填口令与 SSID,且 pcap 必须包含该 STA 的四次握手。

Linux 对照

sudo ip link set wlan0 down sudo iw phy phy0 interface add mon0 type monitor sudo ip link set mon0 up sudo iw dev mon0 set channel 36 HT20 sudo tcpdump -i mon0 -w wlan.pcap # 或 airmon-ng start wlan0

Radiotap

不是空中帧。驱动在 802.11 头前面插的元数据:TSFT、Flags(FCS 是否在末尾、Bad FCS)、Rate、Channel、dBm AntSignal、MCS/VHT/HE。PPI 是另一种元数据头。写过滤器时 radiotap.dbm_antsignal 和 wlan_radio.signal_dbm 看你的 Wireshark 版本哪个有值。

常用显示过滤器

过滤器命中
wlan.fc.type_subtype == 0x08Beacon(十进制 8 同样)
wlan.fc.type_subtype == 0x04Probe Request
wlan.fc.type == 0全部管理帧
wlan.ssid == "CORP"SSID IE
wlan.bssid == aa:bb:cc:dd:ee:ff某个 BSS
wlan.sa == … / wlan.da源 / 目的(注意三地址语义)
wlan.ra / wlan.ta接收机 / 发送机
eapol四次握手、组密钥
eap802.1X 方法
wlan.fc.retry == 1重传
wlan.fc.protected == 1已加密正文
wlan_radio.channel == 36信道(依赖 radiotap)
操作纪律

抓 5 GHz 必须确认监管域和 NIC 是否支持该 DFS 信道。笔记本在 monitor 时是一台干扰源(自己的 Probe)。证据包要注明信道、位置、是否在客户端身旁。对照有线抓包方法见 排障决策树。

专家级易错点 / 设计陷阱

  1. CSMA/CA ≠ CSMA/CD。无线不能边发边听,用缺 ACK 推断失败。把 51.2 μs / 64 字节最小帧搬到 802.11 是硬伤。
  2. 隐藏终端碰撞在接收机。RTS/CTS 治它;暴露终端是 NAV 的误伤。企业网默认 RTS 阈值 2347 = 关。
  3. DIFS = SIFS + 2×Slot。11a/5 GHz:16+18=34 μs。11b:10+40=50 μs。背成“都是 50”会错。
  4. 不是每帧都 ACK。单播数据/部分管理才是;广播、Beacon、控制帧不 ACK。11n 之后单播主流是 Block ACK。
  5. 四地址只在 ToDS=FromDS=1。普通 STA–AP 是三地址。Addr1 永远是 RA。CTS/ACK 只有 RA。
  6. WPA2-PSK 的 802.11 Auth 仍是 Open(alg=0)。口令在四次握手。Auth success 不等于 PSK 正确。
  7. 2.4 GHz 工程上只有 1/6/11 三个不重叠 20 MHz。1/4/7/11 是邻频事故。ac 不工作在 2.4。
  8. Wi-Fi 4/5/6/7 = n/ac/ax/be。6E 仍是 ax,只是上了 6 GHz。不要把 ax 写成 Wi-Fi 5。
  9. 四次握手和 PMKID 都能被 monitor 抓到。PSK 可离线打。WPA3 SAE 的意义就是堵这条路。KRACK 是 M3 重装密钥导致 nonce 重用。
  10. Beacon 100 TU = 102.4 ms,不是 100 ms。TU=1024 μs。被动扫描慢;隐藏 SSID 只是把名字从 Beacon 拿掉。
  11. AireOS LAG ≠ LACP。对端 mode on。华为默认 STP 是 MSTP。HSRP 华为没有。
  12. AP 本地转发 trunk 禁止低容量端口安全。集中转发才看不到客户 MAC。Flex 口 max=1 是经典自伤。
  13. DFS CAC 60 s(气象雷达信道可 600 s),搬离 10 s,静默 30 min。语音 SSID 上 DFS 是可用性赌注。
  14. 粘性客户端是 STA 算法,不是 AP “没广播”。11k/v 是建议;11r 才砍 EAP 时间。开 11r 前要过终端兼容。
  15. 托管模式不是 802.11 抓包。没有 radiotap、没有 ACK、没有邻 BSS。证据链从 monitor + 锁信道开始。
  16. 5G SA 的网元是 gNB + AMF/SMF/UPF,不是 eNB + MME。NSA 仍走 EPC。Wi-Fi 不管切换,蜂窝才是网络侧 handover。