Windows 8.1配置802.1x MS-CHAPv2与FreeRadius认证问题求助
我之前也碰到过一模一样的问题!看你给出的错误日志,核心原因非常清晰:FreeRADIUS在处理MS-CHAPv2认证时,找不到用户的明文密码(Cleartext-Password),无法生成所需的NT/LM哈希值——这是MS-CHAPv2协议的硬性要求,它依赖明文密码来动态生成挑战响应的哈希,预存的哈希值没法满足这个需求。
下面是具体的解决步骤:
1. 检查用户存储的密码配置
如果你用的是FreeRADIUS默认的本地用户文件(/etc/raddb/users),确保你的用户条目里明确配置了Cleartext-Password字段,而不是只存了加密后的哈希。示例配置如下:
maksim Cleartext-Password := "your_real_password_here" Service-Type = Framed-User, Framed-Protocol = PPP
注意:这里的:=是赋值操作符,确保密码被正确识别为明文。
2. 确认inner-tunnel站点的认证流程
检查/etc/raddb/sites-enabled/inner-tunnel文件中的authenticate区块,确保mschap模块被正确加载,并且用户存储模块(比如files)在认证流程中被调用,能读取到用户的Cleartext-Password。
你日志里已经显示进入了inner-tunnel的authenticate组,所以重点是确保用户存储模块能正确返回明文密码。
3. 用radtest工具验证配置
在FreeRADIUS服务器上,先用radtest命令测试认证是否正常,排除服务器端配置问题:
radtest maksim your_real_password_here localhost 0 testing123
如果测试返回Access-Accept,说明服务器端配置没问题,再去测试Windows笔记本的连接;如果返回Access-Reject,检查日志里的详细错误信息,进一步排查。
4. 数据库存储用户的额外注意事项
如果你是用数据库(比如MySQL)存储用户,需要:
- 确保数据库中存储的是用户的明文密码(或者配置
ntlm_auth模块配合Active Directory,但这是进阶场景) - 检查
/etc/raddb/mods-available/sql配置,确保正确映射了Cleartext-Password字段,让FreeRADIUS能读取到明文密码
按照上面的步骤调整后,应该就能解决MS-CHAPv2认证失败的问题了。如果还有其他异常,可以把完整的错误日志贴出来再进一步排查。
内容的提问来源于stack exchange,提问作者Maksims Edelmans

