使用wpa_supplicant配置有线802.1x认证失败求助
有线802.1x认证失败排查(Docker环境)
问题背景
通过两个Ubuntu Docker容器搭建有线802.1x环境,FreeRADIUS服务端与客户端部署完成后,radtest测试可正常连接服务器,但配置wpa_supplicant实现开机自动连接时认证失败。
客户端wpa_supplicant.conf配置
ap_scan=0 network={ key_mgmt=IEEE8021X identity="testing" password="password" eap=MD5 }
执行命令
wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -dd -D wired -i eth0
关键日志异常点
从输出日志中能发现核心矛盾:配置指定使用MD5作为EAP认证方式,但日志中加载的却是PEAP+MSCHAPV2参数:
phase1 - hexdump_ascii(len=11): 70 65 61 70 6c 61 62 65 6c 3d 30 peaplabel=0 phase2 - hexdump_ascii(len=13): 61 75 74 68 3d 4d 53 43 48 41 50 56 32 auth=MSCHAPV2
遗漏配置与解决步骤
1. 修正wpa_supplicant.conf配置
强制锁定EAP类型,清除冗余参数,避免自动加载其他认证方法:
ap_scan=0 eapol_flags=0 network={ key_mgmt=IEEE8021X identity="testing" password="password" eap=MD5 }
eapol_flags=0:禁用自动EAP方法协商,强制使用配置指定的类型- 移除所有PEAP相关参数,确保配置只保留MD5认证逻辑
2. 排查配置文件干扰
Docker容器中可能存在默认配置文件或自动加载的子配置,执行命令时务必指定完整且唯一的配置文件路径,避免加载其他冲突配置:
wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -dd -D wired -i eth0
同时检查容器内/etc/wpa_supplicant/conf.d/目录,删除该目录下所有自动加载的配置文件。
3. 匹配EAPOL版本
日志显示当前使用eapol_version=2,如果FreeRADIUS服务端配置为EAPOLv1,需在wpa_supplicant.conf全局区域添加:
eapol_version=1
4. 调整Docker网络模式
有线802.1x需要二层EAPOL帧直接传输,默认bridge网络会过滤此类报文,需将容器切换为host网络模式:
docker run --network=host ...
或使用支持二层转发的自定义网络。
5. 验证FreeRADIUS服务端配置
确保服务端已启用MD5 EAP模块,检查/etc/raddb/mods-enabled/eap配置:
eap { default_eap_type = md5 md5 { } }
确认md5模块已启用,且未强制要求其他EAP类型。
验证方法
修改配置后重新执行命令,查看日志中是否出现MD5相关的EAP方法加载记录,若配置生效且服务端正常响应,认证即可成功。
内容的提问来源于stack exchange,提问作者Tobias Nilsson
相关产品推荐
相关产品推荐

