You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同一FreeRADIUS实例能否使用两个不同数据库?Ubuntu 22.04环境

在Ubuntu 22.04的FreeRADIUS 3.0实例中连接两个MySQL 8.0数据库的可行方案

完全可行,核心思路是通过配置多个独立的SQL模块实例,每个实例对应一个MySQL数据库,然后在FreeRADIUS的处理流程中按需调用这些模块。以下是具体实现步骤:

1. 复制并配置第二个SQL模块

FreeRADIUS默认的SQL模块配置文件位于/etc/freeradius/3.0/mods-available/sql。为第二个数据库复制一份配置文件:

cp /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-available/sql_db2

编辑新生成的sql_db2文件,修改以下关键参数以匹配第二个MySQL数据库:

# 保持MySQL驱动不变
driver = "rlm_sql_mysql"

# 第二个数据库的地址(IP或主机名)
server = "db2.example.com"

# 第二个数据库的登录凭据
login = "radius_user_db2"
password = "your_db2_password"

# 第二个数据库的名称
radius_db = "radius_db2"

# 设置唯一的模块标识符,避免冲突
instance = sql_db2

2. 启用两个SQL模块

将两个SQL模块配置文件软链接到mods-enabled目录,让FreeRADIUS加载它们:

ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled/
ln -s /etc/freeradius/3.0/mods-available/sql_db2 /etc/freeradius/3.0/mods-enabled/

3. 配置模块调用逻辑

根据业务需求,在/etc/freeradius/3.0/radiusd.conf的对应处理块中调用两个模块。例如:

  • 优先从第一个数据库认证,失败则尝试第二个:
authorize {
    sql          # 先调用默认SQL模块(第一个数据库)
    sql_db2      # 第一个认证失败时,调用第二个模块
}
  • 同时查询两个数据库的属性并合并:
    可以结合update指令将两个数据库返回的属性合并,比如:
authorize {
    sql
    update request {
        &Reply-Item += &sql_db2.Reply-Item
    }
}

4. 验证配置并重启服务

先检查配置文件语法是否正确:

freeradius -XC

如果输出无错误,重启FreeRADIUS服务使配置生效:

systemctl restart freeradius

关键注意事项

  • 确保两个MySQL数据库的用户拥有足够权限(如查询用户表、插入计费记录等)
  • 网络层面需允许FreeRADIUS服务器访问两个MySQL实例的3306端口
  • 模块调用顺序会影响处理逻辑,需根据实际需求调整

内容的提问来源于stack exchange,提问作者Bora Karaosmanoğlu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 21:45:36