У меня есть сервер freeradius 2.0.4, который я хочу обновить. Он работает без перебоев в течение 2 лет.
Мое обновление состоит только в обновлении глава модуль без создания нового.
Чтобы избежать прерывания обслуживания и быть уверенным, что все конфигурации остаются прежними, я пытаюсь найти простой способ сделать это на тестовой машине.
Я думал, что можно просто замените библиотеку rlm_chap-2.0.4.so моей модифицированной версией. но это вызывает segfault (скорее всего, вызванный конфликтом библиотеки).
Дополнительная информация:
- Freeradius запускается и генерируется segfault, когда модуль chap вызывается по первому запросу.
- Моя библиотека отлично работает, когда она используется вместе с скомпилированной версией из исходников freeradius
- Я использую 2 версии Freeradius: 2.0.4, установленную с помощью установки apt-get, и скомпилированную версию из источников apt-get.
- Конфликт библиотеки вызван измененной библиотекой и ничем другим. Если я восстановлю исходную версию rlm_chap-2.0.4.so (и больше ничего не сделаю), она снова будет работать нормально.
- Я все еще новичок в компиляции / манипуляциях с библиотекой / freeradius, так что я, вероятно, много делаю неправильно.
Любые идеи?
Спасибо!
Я не уверен, что вы имеете в виду под «конфликтом библиотек».
Но в любом случае этого делать не стоит. Если вы модифицируете rlm_chap, он должен быть построен на той же версии исходного кода, что и libfreeradius и radiusd.
Если вы пытаетесь использовать упакованную версию rlm_chap из более поздней версии FreeRADIUS (скажем, 2.2.0), она, скорее всего, не будет работать, потому что внутренние API FreeRADIUS могут измениться.
В FreeRADIUS 3.0.0 это явно запрещено. Сервер откажется запускаться, если он загрузит модуль, связанный с другой версией библиотеки.
Он также откажется запускаться, если он был построен с версией OpenSSL, отличной от той, на которую он ссылается во время выполнения.
Если вы настроены на обновление rlm_chap, вам нужно будет загрузить официальный выпуск 2.0.4, заменить код rlm_chap в src / modules / rlm_chap, попытаться собрать модуль, исправить любые ошибки сборки, а затем использовать эту версию. вместо текущего .so.