Openvpn

使用 service 或 systemctl 在啟動時控制 openvpn 守護程序?

  • July 29, 2017

我正在開發基於 debian 的系統,並且仍在學習systemctl vs service,但我正在嘗試將我的openvpn配置用作解決此問題的案例。

在我目前的設置中,我真的很困惑如何openvpn在啟動時啟動以及如何管理它們。

在啟動時,這些是openvpn已啟動的程序:

> ps aux | ag 'openvpn'
nobody     952  0.0  0.0   5800  1108 ?        Ss   13:29   0:00 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --config /etc/openvpn/server.conf
root      1537  0.0  0.1   6088  2544 ?        Ss   13:30   0:00 /usr/sbin/openvpn --daemon --auth-nocache --config /root/.vpn_conf/pia.ovpn

我仍然不知道是什麼控制這些在啟動時啟動。

第一個 proc 是伺服器(我希望禁用它),另一個是我希望保留並繼續使用的客戶端。

我的理解是可以systemctl用來列出所有服務:

> systemctl list-unit-files --type=service | ag 'openvpn'
openvpn.service                               disabled
openvpn@.service                              disabled

這兩者有什麼區別?這兩個服務是否控制上述過程?如果它們被禁用,為什麼它們仍然在啟動時啟動?

如果我嘗試使用service來獲取 的狀態openvpn,我會得到:

> service openvpn status
● openvpn.service - OpenVPN service
  Loaded: loaded (/lib/systemd/system/openvpn.service; disabled)
  Active: active (exited) since Sun 2017-02-19 13:29:51 PST; 18min ago
 Process: 936 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 936 (code=exited, status=0/SUCCESS)
  CGroup: /system.slice/openvpn.service

Feb 19 13:29:51 systemd[1]: Started OpenVPN service

這促使我問:

如果 systemctl 中有兩個用於 openvpn 的條目,那麼在使用時呼叫的第二個是什麼service openvpn_2nd? status

以防萬一,有一個/etc/init.d/openvpn腳本。

對上述某些問題的任何見解將不勝感激。

如果一個人正在學習 systemd,OpenVPN 並不是最好的起點,因為 OpenVPN 不是一項簡單的服務。

OpenVPN 是systemd 下的模板化服務。**服務單元被命名,所有這些都來自一個名為. 所以你開始你的實例openvpn@*config*.service``openvpn@.service``/etc/openvpn/server.conf

systemctl start openvpn@server.service

並讓它在引導程序上自動啟動

systemctl 啟用 openvpn@server.service

顯然,您可以使用類似的命令停止並禁用它。

不過,這不是執行您的 OpenVPN 客戶端的內容。要為此找到服務單元,可以通過執行從控制組名稱中找到單元名稱

systemd-cgls /

非模板openvpn.service在其服務單元文件頂部的註釋中進行了解釋。作為新手第一次體驗 systemd,這又是另外一件事,它使學習變得更加複雜。

進一步閱讀

引用自:https://unix.stackexchange.com/questions/346182