FreeRADIUS配置Kerberos后端认证WiFi用户失败求助
解决FreeRADIUS与Kerberos认证失败的方案
1. 先确认Kerberos客户端基础功能正常
- 检查
/etc/krb5.conf的域与KDC配置,确保内容类似:[libdefaults] default_realm = MYDOMAIN.COM [realms] MYDOMAIN.COM = { kdc = kdc1.mydomain.com admin_server = kdc1.mydomain.com } [domain_realm] .mydomain.com = MYDOMAIN.COM mydomain.com = MYDOMAIN.COM - 直接用
kinit myuser@MYDOMAIN.COM测试Kerberos客户端能否获取票据,输入密码后如果成功,说明KDC、用户密码、网络连通性没问题。
2. 验证FreeRADIUS的Kerberos模块配置
- 检查
mods-enabled/krb5的配置:- 用
klist -k /etc/krb5.keytab查看keytab中的服务主体,必须包含radius/myhost.mydomain.com@MYDOMAIN.COM - 如果没有这个主体,用
ktutil生成正确的keytab:ktutil add_entry -password -p radius/myhost.mydomain.com@MYDOMAIN.COM -k 1 -e aes256-cts-hmac-sha1-96 wkt /etc/krb5.keytab - 调整keytab权限:
chown freerad:freerad /etc/krb5.keytab,并设置权限为600
- 用
3. 调整站点配置,强制触发Kerberos认证
当前配置里的Auth-Type Kerberos块不会自动触发,需要在authorize阶段明确指定:
- 修改
sites-enabled/default和sites-enabled/inner-tunnel的authorize段,添加规则:authorize { ... # 带域名的用户直接走Kerberos if (User-Name =~ /@MYDOMAIN.COM$/) { update control { Auth-Type := Kerberos } } # 不带域名的自动补全域后走Kerberos else { update request { User-Name := "%{User-Name}@MYDOMAIN.COM" Auth-Type := Kerberos } } ... } - 把这段规则放在
mschap、eap等其他认证模块的规则之前,避免被其他模块优先匹配。
4. 调试排查细节
- 重启FreeRADIUS并开启调试模式:
freeradius -X - 执行测试命令时,重点看日志里
authorize阶段是否输出Auth-Type := Kerberos,如果没输出,说明规则没匹配上,检查正则或条件逻辑 - 如果触发了Kerberos认证但失败,看日志里的Kerberos错误信息,比如票据获取失败、主体不匹配,这类问题大多和keytab或KDC配置有关。
5. 测试命令的注意事项
radtest默认用PAP协议,Kerberos模块在PAP模式下需要明文密码,测试时:
- 优先用带域名的格式:
radtest myuser@MYDOMAIN.COM mypassword localhost 1812 testing123 - 如果不带域名,确保配置里的自动补全规则生效
内容的提问来源于stack exchange,提问作者Roozbeh
相关产品推荐
相关产品推荐

