Ubuntu
自編譯 OpenVPN 不會從 systemd 啟動
我已經從原始碼編譯了 openvpn,執行
openvpn --version
返回:OpenVPN 2.4.4 x86_64-unknown-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [MH/PKTINFO] [AEAD] built on Nov 19 2017 library versions: OpenSSL 1.0.2g 1 Mar 2016, LZO 2.08
並創建了一個
/etc/openvpn/server.conf
包含一些基本設置的文件。但是,當我嘗試啟動它時,sudo systemctl start openvpn@server
它會返回Failed to start openvpn@server.service: Unit openvpn@server.service not found.
並
sudo systemctl status openvpn
返回:● openvpn.service Loaded: masked (/dev/null; bad) Active: inactive (dead) since Sun 2017-11-19 14:21:06 HKT; 4 days ago Main PID: 1502 (code=exited, status=0/SUCCESS)
這讓我覺得 openvpn 服務甚至沒有註冊。
我查了一下
/lib/systemd/system/
,沒有openvpn.service
文件,但是/etc/systemd/system/
有。據我了解,這是因為我編譯而不是apt-get install openvpn
?誰能建議我應該如何將自編譯的 openvpn 添加為服務?
第一次從原始碼編譯,因此非常感謝任何建議/提示!
編輯1:
我可以啟動 openvpn 伺服器並將客戶端連接到它(只有服務似乎不起作用):
sudo openvpn /etc/openvpn/server.conf
通過在
/lib/systemd/system
.第一個是
openvpn.service
:[Unit] Description=OpenVPN service After=network.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=/bin/true ExecReload=/bin/true WorkingDirectory=/etc/openvpn [Install] WantedBy=multi-user.target
第二個是
openvpn@.service
:[Unit] Description=OpenVPN connection to %i PartOf=openvpn.service ReloadPropagatedFrom=openvpn.service Before=systemd-user-sessions.service Documentation=man:openvpn(8) Documentation=https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage Documentation=https://community.openvpn.net/openvpn/wiki/HOWTO [Service] PrivateTmp=true KillMode=mixed Type=forking ExecStart=/usr/local/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/%i.conf --writepid /run/openvpn/%i.pid PIDFile=/run/openvpn/%i.pid ExecReload=/bin/kill -HUP $MAINPID WorkingDirectory=/etc/openvpn ProtectSystem=yes CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_READ_SEARCH CAP_AUDIT_WRITE LimitNPROC=10 DeviceAllow=/dev/null rw DeviceAllow=/dev/net/tun rw [Install] WantedBy=multi-user.target
創建它們後,
sudo systemctl daemon-reload
重新載入新的更改。一般來說,文件是一樣的,好像openvpn是從官方repo安裝的,唯一的區別
ExecStart=/usr/sbin/openvpn
應該是ExecStart=/usr/local/sbin/openvpn
,指向編譯的本地openVPN。編輯:如果您使用 openvpn 2.4+,請從第二個文件中刪除
PIDFile=/run/openvpn/%i.pid
和--writepid /run/openvpn/%i.pid
,因為它會阻止伺服器在啟動時啟動。在這裡找到