FreeRADIUS 3.0.26 → 3.2.7 升级实战手册
FreeRADIUS 3.0.26 → 3.2.7 升级实战手册
适用环境:Ubuntu 22.04 LTS
目标说明
- 在不影响现有系统的前提下,测试和部署 FreeRADIUS 的新版本。
- 不卸载旧版,以便随时回滚或对比测试。
- 从源码编译新版以启用所有需要的功能模块,例如 Redis 和 SQL。
- 使新版能通过 systemd 管理,实现自动启动。
0. 准备工作
在编译前需安装基础编译工具和模块依赖。
1 | sudo apt update |
说明:
libhiredis-dev
是 Redis 支持模块rlm_redis
的依赖。libpq-dev
是 PostgreSQL 支持模块rlm_sql_postgresql
的依赖。
1. 暂停旧版 FreeRADIUS 服务
为了避免端口冲突,需要先停用 apt 安装的旧版服务。
1 | sudo systemctl stop freeradius |
2. 下载 3.2.7 源码
1 | cd /usr/local/src |
说明:release_3_2_7 分支是官方的稳定版本。
3. 编译安装
使用以下参数编译以启用所需模块,并设置安装目录为 /usr/local
。
1 | ./configure --prefix=/usr/local \ |
说明:
--with-mods-dir
定义模块存放路径。--with-raddbdir
设置配置文件位置。--enable-developer
启用调试功能(可选)。--with-modules
指定所需模块。
4. 新版相关目录
目录 | 作用 |
---|---|
/usr/local/sbin/radiusd |
新版主程序 |
/usr/local/etc/raddb/ |
新版配置路径 |
/usr/local/lib/freeradius/ |
编译后的插件模块目录 |
/var/log/freeradius32/ |
自定义日志目录 |
5. 配置迁移或启用新配置
1 | sudo mv /usr/local/etc/raddb /usr/local/etc/raddb-dist |
说明:
新版默认使用 mods-available/
和 mods-enabled/
的软链接方式启用模块,避免直接编辑主配置。
6. 启用 Redis / SQL 模块
1 | cd /usr/local/etc/raddb/mods-enabled |
示例配置 - Redis:
1 | servers = "127.0.0.1" |
示例配置 - PostgreSQL:
1 | driver = "rlm_sql_postgresql" |
7. 创建 systemd 自动启动服务
文件路径:/etc/systemd/system/freeradius32.service
1 | [Unit] |
启动服务
1 | sudo systemctl daemon-reload |
8. 调试与切换方案
操作 | 命令 |
---|---|
恢复旧版 | systemctl stop freeradius32 && systemctl start freeradius |
禁用旧版 | systemctl disable --now freeradius |
使用新端口 | radiusd -d /usr/local/etc/raddb -p 3812 |
9. 常见问题与解决
问题 | 解决方式 |
---|---|
插件模块找不到 | 确保已安装依赖包并重新运行 ldconfig |
systemd 启动失败 | 检查配置路径、权限、日志信息 journalctl -u freeradius32 |
SQL 无法连接 | 检查数据库状态与账号密码配置 |
10. 后续维护
- 升级:拉取代码后重新编译
make && make install
- 插件增加:重新运行
./configure
启用模块后再编译 - Docker 化部署:可将整个安装流程写入 Dockerfile 实现快速复现环境
欢迎在 GitHub Issues 或知乎评论区留言交流问题,我会持续更新完善此手册。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Yxr的Hexo博客!
Comments