4、WiFi连接流程日志分析:Scan、Auth、Assoc、4-way Handshake、DHCP各阶段日志特征

各位工程师,大家好。今天我们聊聊WiFi连接的全流程日志分析。说实话,很多刚入行的朋友拿到日志就头大,一堆看不懂的英文缩写。其实没那么复杂,WiFi连接说白了就是五个步骤:扫描、认证、关联、四次握手、拿IP。每一步都有它独特的日志特征,掌握了这些,你就能像读故事一样看懂连接过程。

4.1 扫描阶段(Scan)—— 先看看周围有什么

设备要连WiFi,第一步肯定是看看周围有哪些热点。这个阶段叫扫描,分两种:主动扫描和被动扫描。

主动扫描:设备主动发Probe Request帧,AP回复Probe Response。日志里你会看到类似这样的信息:

wlan0: scan started
wlan0: scan results: BSSID=00:11:22:33:44:55, SSID=MyWiFi, freq=2412, signal=-45dBm
wlan0: scan results: BSSID=66:77:88:99:AA:BB, SSID=GuestNet, freq=5180, signal=-62dBm

被动扫描:设备监听AP定期发送的Beacon帧。Beacon帧里包含了AP的能力信息,比如支持的速率、加密方式等。

日志特征关键词

  • scan started / scan done
  • Probe Request / Probe Response
  • Beacon
  • BSSIDSSIDfreqsignal

个人经验:我遇到过一种情况,设备扫描不到任何AP,但手机明明能搜到。后来发现是WiFi芯片的扫描间隔设置得太短,导致Probe Request发得太快,AP来不及响应。调整一下扫描参数就好了。

4.2 认证阶段(Auth)—— 确认身份

扫描到目标AP后,设备要跟AP确认身份。这个阶段叫认证(Authentication)。

认证分两种:

  • 开放系统认证:就是走个形式,AP基本来者不拒。日志里就是简单的Auth Request和Auth Response。
  • 共享密钥认证:现在很少用了,需要设备知道预共享密钥才能通过。

日志长这样:

wlan0: authenticate with 00:11:22:33:44:55
wlan0: authentication successful

如果认证失败,你会看到:

wlan0: authentication with 00:11:22:33:44:55 timed out
wlan0: authentication failed (reason: 1 - unspecified failure)

注意:认证失败的原因码很重要。比如reason code 1表示未指定失败,reason code 2表示AP不接受认证。我曾经排查过一个案例,设备一直报认证失败,最后发现是AP的MAC地址过滤列表里没加这个设备。

4.3 关联阶段(Assoc)—— 建立连接

认证通过后,设备要跟AP建立关联(Association)。说白了就是告诉AP:「我要连你了,给我分配个AID(关联标识符)吧」。

关联阶段的日志特征:

wlan0: associate with 00:11:22:33:44:55
wlan0: association successful (AID=1)

关联请求里会包含设备的能力信息,比如支持的速率、HT/VHT能力等。AP会根据这些信息决定是否接受关联。

关联失败的情况:

wlan0: association failed (reason: 17 - AP is out of resources)
wlan0: association rejected (status: 12 - association denied due to QOS failure)

关键日志字段

  • associate with — 开始关联
  • association successful — 关联成功
  • AID — 关联标识符
  • reason / status — 失败原因

避坑指南:我曾经遇到一个项目,设备关联成功后马上断开,反复循环。查了半天,发现是AP的关联表满了,但日志里报的是「association denied due to QOS failure」。嗯,有时候日志里的原因码不一定准确,需要结合上下文判断。

4.4 四次握手阶段(4-way Handshake)—— 密钥协商

关联成功后,如果AP启用了WPA/WPA2/WPA3加密,设备就要跟AP进行四次握手,协商加密密钥。这是整个连接过程中最关键也最容易出问题的一步。

四次握手的流程:

  1. AP发送EAPOL-Key(Message 1):包含ANonce(AP的随机数)
  2. 设备回复EAPOL-Key(Message 2):包含SNonce(设备的随机数)和MIC
  3. AP发送EAPOL-Key(Message 3):包含GTK(组密钥)和MIC
  4. 设备回复EAPOL-Key(Message 4):确认完成

日志里你会看到:

wlan0: WPA: 4-Way Handshake started
wlan0: WPA: EAPOL-Key 1/4 received
wlan0: WPA: EAPOL-Key 2/4 sent
wlan0: WPA: EAPOL-Key 3/4 received
wlan0: WPA: EAPOL-Key 4/4 sent
wlan0: WPA: 4-Way Handshake completed

如果密码错误,握手会失败:

wlan0: WPA: 4-Way Handshake failed - pre-shared key may be incorrect
wlan0: WPA: EAPOL-Key MIC validation failed

常见失败原因

  • 密码错误(最常见)
  • AP与设备的加密方式不匹配(比如AP只支持WPA2,设备只支持WPA3)
  • EAPOL-Key超时(网络环境差或AP负载高)
  • MIC验证失败(密钥不一致或数据包被篡改)

重要提醒:我见过一个奇葩案例,四次握手一直卡在Message 3。查了三天,最后发现是AP的GTK更新周期太短,导致Message 3里的GTK已经过期了。你想想看,这种问题日志里根本不会直接告诉你,只能靠经验推断。

4.5 DHCP阶段—— 获取IP地址

四次握手完成后,设备已经跟AP建立了加密连接。但还缺一个IP地址,不然没法上网。这个阶段就是DHCP(动态主机配置协议)。

DHCP流程:

  1. 设备发送DHCP Discover:广播找DHCP服务器
  2. DHCP服务器回复DHCP Offer:提供一个IP地址
  3. 设备发送DHCP Request:确认要这个IP
  4. DHCP服务器回复DHCP ACK:分配完成

日志特征:

wlan0: DHCP: starting DHCP transaction
wlan0: DHCP: sending DISCOVER
wlan0: DHCP: received OFFER from 192.168.1.1
wlan0: DHCP: sending REQUEST for 192.168.1.100
wlan0: DHCP: received ACK from 192.168.1.1
wlan0: DHCP: lease of 192.168.1.100 obtained, lease time 86400 seconds

DHCP失败的情况:

wlan0: DHCP: no OFFER received, retrying
wlan0: DHCP: DISCOVER timed out after 3 attempts
wlan0: DHCP: failed to obtain IP address

排查要点

  • DHCP服务器是否可达?检查AP的DHCP中继配置
  • IP地址池是否耗尽?看看DHCP服务器日志
  • 设备是否被防火墙拦截了DHCP广播?
  • DHCP Offer的IP地址是否与设备之前使用的冲突?

个人经验:我记得有一次,设备能连上WiFi但就是上不了网。看日志发现DHCP拿到了IP,但ping网关不通。最后发现是AP的DHCP Snooping功能把设备的DHCP Offer给拦截了。这种问题,说实话,不看AP侧日志根本发现不了。

4.6 完整连接流程日志示例

下面是一个完整的成功连接日志,你可以对照着看:

wlan0: scan started
wlan0: scan results: BSSID=00:11:22:33:44:55, SSID=MyWiFi, signal=-45dBm
wlan0: authenticate with 00:11:22:33:44:55
wlan0: authentication successful
wlan0: associate with 00:11:22:33:44:55
wlan0: association successful (AID=1)
wlan0: WPA: 4-Way Handshake started
wlan0: WPA: EAPOL-Key 1/4 received
wlan0: WPA: EAPOL-Key 2/4 sent
wlan0: WPA: EAPOL-Key 3/4 received
wlan0: WPA: EAPOL-Key 4/4 sent
wlan0: WPA: 4-Way Handshake completed
wlan0: DHCP: starting DHCP transaction
wlan0: DHCP: sending DISCOVER
wlan0: DHCP: received OFFER from 192.168.1.1
wlan0: DHCP: sending REQUEST for 192.168.1.100
wlan0: DHCP: received ACK from 192.168.1.1
wlan0: DHCP: lease of 192.168.1.100 obtained
wlan0: connected to MyWiFi (192.168.1.100)

看到没?从扫描到拿到IP,每一步都有清晰的日志记录。你只要记住每个阶段的关键词,就能快速定位问题出在哪一步。

4.7 常见问题速查表

阶段 日志关键词 常见问题 排查方向
Scan scan started / scan results 扫描不到AP 检查信道、信号强度、扫描参数
Auth authentication 认证失败 检查MAC过滤、加密方式
Assoc association 关联被拒绝 检查AP容量、QoS配置
4-way Handshake EAPOL-Key / MIC validation 握手失败 检查密码、加密方式、GTK更新
DHCP DISCOVER / OFFER / ACK 拿不到IP 检查DHCP服务器、地址池、防火墙

好了,这一章的内容就到这里。记住,WiFi连接日志分析没那么玄乎,就是五个步骤,每个步骤看几个关键词。下次你拿到一份WiFi连接日志,按这个思路走,五分钟内就能定位问题。