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 doneProbe Request/Probe ResponseBeaconBSSID、SSID、freq、signal
个人经验:我遇到过一种情况,设备扫描不到任何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进行四次握手,协商加密密钥。这是整个连接过程中最关键也最容易出问题的一步。
四次握手的流程:
- AP发送EAPOL-Key(Message 1):包含ANonce(AP的随机数)
- 设备回复EAPOL-Key(Message 2):包含SNonce(设备的随机数)和MIC
- AP发送EAPOL-Key(Message 3):包含GTK(组密钥)和MIC
- 设备回复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流程:
- 设备发送DHCP Discover:广播找DHCP服务器
- DHCP服务器回复DHCP Offer:提供一个IP地址
- 设备发送DHCP Request:确认要这个IP
- 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连接日志,按这个思路走,五分钟内就能定位问题。