Назад | Перейти на главную страницу

Добавление скомпилированного FreeRADIUS в systemd

Работаем над установкой и запуском FreeRADIUS и возникают проблемы с добавлением в systemd.

Автономный запуск с помощью radiusd -X работает нормально, и все пользовательские конфигурации остаются неизменными. Использование модуля freetds для подключения к серверу MS SQL ...

Во время компиляции я установил для него использование «--with-systemd», но он не добавлял автоматически запись службы и не создавал файл * .service, который я могу найти.

Я безуспешно пытался воспользоваться одним из найденных в Интернете. Это приводит к ошибке тайм-аута.

[Unit]
Description=FreeRADIUS high performance RADIUS server.
After=syslog.target network.target

[Service]
Type=forking
PIDFile=/var/run/radiusd/radiusd.pid
ExecStartPre=-/bin/chown -R freerad:freerad /var/run/radiusd
ExecStartPre=/usr/local/sbin/radiusd -C
ExecStart=/usr/local/sbin/radiusd -d /usr/local/etc/raddb
ExecReload=/usr/local/sbin/radiusd -C
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

Кто-нибудь успешно добавил в systemd скомпилированную версию FreeRADIUS (3.0)? Если да, не могли бы вы дать какие-нибудь рекомендации, как заставить это работать?

Спасибо.

  1. Параметр конфигурации with-systemd добавляет поддержку сторожевого пса systemd, но не включает файл модуля systemd. Если вы не уверены, что вам нужно, не включайте эту опцию.
  2. Попытайтесь диагностировать то, что происходит. Начинать с systemctl status freeradius. Что это показало?
  3. Вот стандартный файл модуля systemd из пакета freeradius. Скопируйте это в /etc/systemd/system/freeradius.service и меняем пути. Это будет отправная точка.
# /lib/systemd/system/freeradius.service
[Unit]
Description=FreeRADIUS multi-protocol policy server
After=network.target
Documentation=man:radiusd(8) man:radiusd.conf(5) http://wiki.freeradius.org/ http://networkradius.com/doc/

[Service]
Type=forking
PIDFile=/run/freeradius/freeradius.pid
EnvironmentFile=-/etc/default/freeradius
ExecStartPre=/usr/sbin/freeradius $FREERADIUS_OPTIONS -Cxm -lstdout
ExecStart=/usr/sbin/freeradius $FREERADIUS_OPTIONS
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Обновление из комментариев

  1. Поддержка systemd в freeradius включает в себя некоторые функции:

    • Уведомление о завершении пуска
    • Поддержка сторожевого пса systemd для предотвращения зависания.
  2. Лучший подход:

    • Использовать эта усиленная сервисная единица для свободного радиуса. Смените пути на свой.
    • Пройти -f опция свободного радиуса для предотвращения разветвления. Если вы используете служебный модуль flle по ссылке выше, вам следует добавить -f в /etc/sysconfig/radiusd. Некоторое обсуждение этого вы можете прочитать Вот. Разветвление - это устаревший способ деамонизации. Сегодня демонизацию при запуске программы можно делегировать специальным программам, таким как systemd или start-stop-daemon.
    • Использовать Type=notify в служебном разделе файла объекта.