Systemd

將已編譯的 FreeRADIUS 添加到 systemd

  • June 6, 2019

致力於讓 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

有沒有人成功地將 FreeRADIUS (3.0) 的編譯版本添加到 systemd?如果是這樣,您能否就如何使其正常工作提供一些指導?

謝謝。

  1. 配置選項“with-systemd”增加了對 systemd 看門狗的支持,但不包括 systemd 單元文件。如果您不確定,您需要什麼,請不要啟用此選項。
  2. 嘗試診斷發生了什麼。從 開始systemctl status freeradius。它顯示了什麼?
  3. 這是來自 freeradius 包的標準 systemd 單元文件。將其複制/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. freeradius 中的 systemd 支持包括一些特性:
  • 啟動完成通知
  • systemd 看門狗支持防止掛起。
  1. 最好的方法是:
  • 將此強化服務單元用於自由半徑。將路徑更改為您的路徑。
  • -f選項傳遞給自由半徑以防止分叉。如果您使用上面連結中的服務單元 flle,您應該添加-f/etc/sysconfig/radiusd. 您可以在此處閱讀有關它的一些討論。分叉是去惡魔化​​的傳統方式。今天,程序啟動時的妖魔化可以委託給特殊程序,如 systemd 或 start-stop-daemon。
  • Type=notify在單元文件的服務部分使用。

引用自:https://serverfault.com/questions/970250