FreeRADIUS 3.0 LDAP不可用时的故障转移配置咨询
解决FreeRADIUS启动时LDAP不可用的 fallback 配置
当然有办法搞定这个问题!我之前帮不少用户处理过类似的FreeRADIUS多数据源容错场景,核心思路就是让服务在LDAP不可用时自动跳过它,只依赖本地users文件完成认证,而不是直接启动失败。下面分几个关键步骤来配置:
1. 调整LDAP模块的容错设置
首先打开LDAP模块的配置文件 /etc/raddb/mods-available/ldap,找到核心配置块,添加或修改以下参数:
ldap { server = "你的LDAP服务器地址" port = 389 timeout = 2 # 给LDAP连接设个短超时,避免卡太久 retries = 1 # 重试1次就放弃 fail = no # 关键!连接失败时不终止整个认证流程,直接跳过 # 保留你原来的其他LDAP配置(比如绑定DN、搜索基这些) }
这个fail = no是核心,它告诉FreeRADIUS:就算LDAP连不上,也别把整个请求判为失败,继续往下试其他数据源。
2. 修改认证流程的优先级(default和inner-tunnel)
接下来要调整 /etc/raddb/sites-enabled/default 和 /etc/raddb/sites-enabled/inner-tunnel 这两个文件里的认证流程,确保本地users文件(对应files模块)是优先选项,同时把LDAP标记为可选。
以authorize块为例:
把原来的LDAP调用包裹在optional块里,并且让files模块放在前面:
authorize { # 先查本地users文件 files # 标记LDAP为可选,失败就跳过 optional { ldap } # 保留你原来的其他模块(比如pap、mschapv2这些) }
再修改authenticate块:
如果你的认证流程里用到了LDAP,同样给它加上optional标记:
authenticate { # 先尝试本地PAP认证(对应users文件里的账号) Auth-Type PAP { pap } # LDAP认证可选,失败不影响服务启动和本地认证 optional { ldap } # 其他原有配置... }
3. 测试配置效果
改完之后先别急着重启正式服务,用调试模式验证一下:
radiusd -X
故意让LDAP服务器处于不可用状态,看看FreeRADIUS能不能正常启动,然后用users文件里的账号测试认证,确认能正常通过。如果调试没问题,再重启正式服务:
systemctl restart radiusd
这样配置后,开机时如果LDAP不可用,FreeRADIUS会自动跳过LDAP模块,只用本地users文件提供认证;等LDAP服务器恢复后,服务又会自动回到双数据源的模式,完全不用手动调整。
内容的提问来源于stack exchange,提问作者user436849
相关产品推荐
相关产品推荐

