我有一台 freeradius 2.0.4 服务器,我想更新它。它已经连续运行了 2 年。
我的更新仅包括更新章节模块,而无需创建新模块。
为了避免服务中断并确保所有配置保持不变,我正在尝试在测试机器上找到一种平稳的方法。
我认为可以简单地用我修改过的版本替换 rlm_chap-2.0.4.so 库. 但这会产生段错误(很可能是由库冲突引起的)。
其他信息:
- Freeradius 启动,在第一次请求时调用 chap 模块时产生段错误。
- 我的库与来自 freeradius 源的编译版本一起使用时工作正常
- 我使用的是 2 个版本的 Freeradius:通过 apt-get install 安装的 2.0.4 和来自 apt-get 源的编译版本
- 库冲突是由修改后的库引起的,而不是其他原因。如果我恢复 rlm_chap-2.0.4.so 的原始版本(并且不执行任何其他操作),它就会再次正常工作。
- 我仍然是编译/库操作/freeradius 方面的新手,所以我可能做错了很多事情。
有任何想法吗?
谢谢!
答案1
我不确定你所说的“图书馆冲突”是什么意思。
但无论如何,你不应该这样做。如果你正在修改 rlm_chap,它必须针对与 libfreeradius 和 radiusd 相同的源版本进行构建。
如果您尝试使用较新版 FreeRADIUS(例如 2.2.0)中打包的 rlm_chap 版本,它可能无法工作,因为 FreeRADIUS 的内部 API 可能已发生更改。
FreeRADIUS 3.0.0 明确禁止此行为。如果服务器加载了与不同版本的库链接的模块,则服务器将拒绝启动。
如果它是使用与运行时链接到的 OpenSSL 版本不同的版本构建的,它也将拒绝启动。
如果您打算更新 rlm_chap,则需要下载 2.0.4 的官方版本,替换 src/modules/rlm_chap 中的 rlm_chap 代码,尝试构建模块,修复任何构建错误,然后使用该版本代替当前的 .so。