在HCL环境中使用Server2内置RADIUS服务器进行802.1X EAP-MD5认证时,Web页面配置的用户名、密码、RADIUS客户端地址及共享密钥均正确,但认证始终失败。
抓包显示认证流程能够正常进入EAP-MD5 Challenge阶段,最终由RADIUS服务器返回Access-Reject。进一步通过radiusd -X调试确认,FreeRADIUS未取得用户的Cleartext-Password。
地址规划:
| 设备/接口 | 地址 | 用途 |
|---|---|---|
| S6850 Vlan-interface10 | 192.168.56.2/24 | RADIUS报文源地址/NAS地址 |
| Server2 br-lan | 192.168.56.4/24 | RADIUS服务器 |
| Server2 eth2 | 10.100.0.10/24 | 802.1X客户端 |
认证信息:
802.1X用户名:lixiang
802.1X密码:123456
NAS地址:192.168.56.2
NAS共享密钥:lixiang
Server2同时作为802.1X客户端和RADIUS服务器,但两个功能分别使用eth2和br-lan,通信路径相互独立。
radius scheme winradius
primary authentication 192.168.56.4 1812
key authentication simple lixiang
nas-ip 192.168.56.2
user-name-format without-domain
domain dot1x
authentication lan-access radius-scheme winradius
authorization lan-access radius-scheme winradius
accounting lan-access none
dot1x
dot1x authentication-method eap
interface GigabitEthernet1/0/1
port link-mode bridge
port access vlan 100
dot1x
dot1x mandatory-domain dot1x
interface GigabitEthernet1/0/24
port link-mode bridge
port access vlan 10
interface Vlan-interface10
ip address 192.168.56.2 255.255.255.0
RADIUS用户配置:
用户名:lixiang
密码:123456
RADIUS客户端配置:
名称:S6850
IP地址:192.168.56.2
共享密钥:lixiang
802.1X客户端配置:
用户名:lixiang
密码:123456
接口:eth2
EAP类型:MD5
所有页面均已执行“保存并应用”。
客户端侧EAPOL抓包:
EAPOL Start
EAP Request/Identity
EAP Response/Identity
EAP Request/MD5-Challenge
EAP Response/MD5-Challenge
EAP Failure
RADIUS侧抓包:
Access-Request
Access-Challenge
Access-Request
Access-Reject
说明客户端、交换机和RADIUS服务器之间的双向通信均正常,故障发生在RADIUS服务器校验EAP-MD5响应阶段。
同一轮认证中,Access-Challenge与后续Access-Request携带的State完全一致:
384e7185384c75a62632f4f54f566216
因此可以排除交换机未回送State或RADIUS会话关联失败。
客户端EAP-MD5报文示例:
EAP Identifier:2
Challenge:e72e861106b4b50c349a794703e73adf
客户端响应:d8cd42dd6fd1c087d380d570bf95c6c0
按照EAP-MD5公式:
MD5(
0x02
+ "123456"
+ e72e861106b4b50c349a794703e73adf
)
计算结果为:
d8cd42dd6fd1c087d380d570bf95c6c0
与客户端报文完全一致,证明客户端使用的密码及MD5计算结果正确。
Server2执行:
uci show radius
输出:
radius.@user[0]=user
radius.@user[0].username='lixiang'
radius.@user[0].password='123456'
radius.@client[0]=client
radius.@client[0].name='S6850'
radius.@client[0].ipaddr='192.168.56.2'
radius.@client[0].secret='lixiang'
/etc/config/radius内容:
config user
option username 'lixiang'
option password '123456'
config client
option name 'S6850'
option ipaddr '192.168.56.2'
option secret 'lixiang'
说明Web页面已经正确写入UCI配置。
使用以下命令启动调试:
radiusd -X
首个Access-Request能够正常进入EAP模块,服务器返回MD5 Challenge:
eap: Peer sent packet with method EAP Identity (1)
eap_md5: Issuing MD5 Challenge
eap: Sending EAP Request (code 1) ID 2 length 22
收到客户端MD5响应后,调试日志显示:
files: users: Matched entry DEFAULT at line 167
随后出现明确错误:
eap_md5: ERROR: Cleartext-Password is required for EAP-MD5 authentication
eap: ERROR: Failed continuing EAP MD5 (4) session
eap: Sending EAP Failure
Failed to authenticate the user
FreeRADIUS实际使用的用户文件为:
/etc/freeradius3/mods-config/files/authorize
该文件中没有由Web配置生成的lixiang用户记录。因此FreeRADIUS只匹配到DEFAULT规则,控制列表中不存在Cleartext-Password,无法校验EAP-MD5响应。
HCL Server2的RADIUS Web配置存在配置同步问题:
Web页面
↓
/etc/config/radius 已正确写入用户
↓
FreeRADIUS authorize文件 未生成对应用户记录
↓
radiusd运行配置 无Cleartext-Password
↓
EAP-MD5校验失败
↓
Access-Reject / EAP Failure
RADIUS客户端配置能够正常生效,radiusd -XC可以识别:
client S6850 {
ipaddr = 192.168.56.2
}
问题主要集中在Web用户配置到FreeRADIUS用户文件的同步环节。
在FreeRADIUS实际用户文件中手工增加:
文件:
/etc/freeradius3/mods-config/files/authorize
内容:
lixiang Cleartext-Password := "123456"
注意该行必须从行首开始,不能包含前导空格、Tab或注释符号#。
配置检查:
radiusd -XC
检查通过后重启服务:
/etc/init.d/radiusd restart
并确认UDP 1812恢复监听:
netstat -unlp | grep ':1812'
然后成功解决。
建议重点检查以下环节:
Server2 Web页面“保存并应用”后,是否调用了RADIUS用户配置生成脚本。
/etc/config/radius中的config user是否应转换到:/etc/freeradius3/mods-config/files/authorize。
生成的用户记录是否应使用:
username Cleartext-Password := "password"
用户新增、修改或删除后,是否自动执行配置校验及radiusd重载。
用户文件生成失败时,Web页面是否应显示明确错误。
重启radiusd前是否应先执行radiusd -XC,避免错误配置导致UDP 1812停止监听。
多台Server2共存时,Web管理入口、IP地址和配置实例是否存在相互覆盖问题。
客户端、交换机、RADIUS网络、共享密钥、EAP Identifier、EAP-MD5摘要及State传递均已验证正常。
当前故障已定位到:Server2 Web页面中的RADIUS用户配置未同步到FreeRADIUS实际使用的authorize文件,导致EAP-MD5认证时缺少Cleartext-Password并返回Access-Reject。
当前状态:根因已定位,手工写入authorize文件的规避方案确认可行。
您好,参考
/etc/config/radius,但没有自动同步生成到 FreeRADIUS 真正加载的 authorize 用户文件。FreeRADIUS 仅匹配 DEFAULT 规则,拿不到Cleartext‑Password,EAP‑MD5 校验直接失败。RADIUS 客户端配置同步正常,仅用户条目同步失效。/etc/freeradius3/mods‑config/files/authorize写入用户lixiang Cleartext‑Password := "123456",执行配置校验、重启 radiusd 服务,认证恢复正常。
针对此问题,我有以下几点补充建议,或许能帮助您从根本上解决或规避该同步缺陷:
检查Web界面(如LuCI或自定义管理页面)中“保存并应用”调用的具体UCI回调或自定义脚本。通常这类软件会在/usr/lib/lua/luci/或/etc/init.d/下放置触发器。
确认是否有一个负责从/etc/config/radius读取config user并生成/etc/freeradius3/mods-config/files/authorize的脚本。如果缺失,建议编写一个简单的Shell脚本,例如:
并在每次Web修改后触发执行。
FreeRADIUS本身支持多种认证后端(如SQL、LDAP)。如果环境允许,可以配置使用SQLite或MySQL存储用户,这样Web直接写入数据库,FreeRADIUS通过mods-available/sql实时查询,彻底规避文件同步问题。这更适合多用户场景。
使用inotifywait监控/etc/config/radius的修改,触发上述生成脚本。或者配置FreeRADIUS的files模块,设置update = yes并定期重读文件(但需要重启或触发HUP信号),但更推荐用脚本+重启服务。
文档提到“多台Server2共存”,请确保Web管理入口绑定的IP地址或端口唯一,且FreeRADIUS只监听对应接口的UDP 1812,避免配置实例相互覆盖。
在radiusd -X调试时,可增加-d指定配置目录,确保加载的是预期的mods-config/files/authorize。另外,可在mods-config/files/authorize文件开头增加DEFAULT规则前的Auth-Type := Accept等测试条目,辅助判断文件是否被正确加载。
您已通过Wireshark确认State回传正确,这点很重要,说明交换机行为正常。后续如遇到类似问题,可优先检查FreeRADIUS内部用户的Cleartext-Password属性,无需重复排查网络。
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论