Ich habe OpenVPN aus dem Quellcode kompiliert. Die Ausführung gibt Folgendes openvpn --version
zurück:
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
Und erstellte eine /etc/openvpn/server.conf
Datei mit einigen grundlegenden Einstellungen. Wenn ich jedoch versuche, es zu starten, sudo systemctl start openvpn@server
wird es zurückgegeben
Failed to start [email protected]: Unit [email protected] not found.
Und sudo systemctl status openvpn
gibt zurück:
● 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)
Das lässt mich glauben, dass der OpenVPN-Dienst nicht einmal registriert ist.
Ich habe geprüft /lib/systemd/system/
, es hat keine openvpn.service
Datei, aber /etc/systemd/system/
es hat eine. So wie ich das verstehe, liegt das daran, dass ich kompiliert habe, anstatt apt-get install openvpn
?
Kann mir jemand vorschlagen, wie ich selbst kompiliertes OpenVPN als Dienst hinzufügen kann?
Dies ist das erste Mal, dass ich aus der Quelle kompiliere. Daher sind alle Ratschläge/Tipps sehr willkommen!
BEARBEITEN 1:
Ich kann den OpenVPN-Server starten und Clients mit ihm verbinden (nur der Dienst scheint nicht zu funktionieren):
sudo openvpn /etc/openvpn/server.conf
Antwort1
Habe es zum Laufen gebracht, indem ich manuell zwei Dateien in erstellt habe /lib/systemd/system
.
Der erste ist 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
und zweitens [email protected]
:
[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
Laden Sie die neuen Änderungen nach der Erstellung erneut.
Im Allgemeinen sind die Dateien dieselben, als ob OpenVPN aus dem offiziellen Repo installiert worden wäre. Der einzige Unterschied ExecStart=/usr/sbin/openvpn
sollte sein ExecStart=/usr/local/sbin/openvpn
, dass auf das kompilierte lokale OpenVPN verwiesen wird.
Bearbeiten: Wenn Sie OpenVPN 2.4+ verwenden, entfernen Sie PIDFile=/run/openvpn/%i.pid
und --writepid /run/openvpn/%i.pid
aus der zweiten Datei, da es den Serverstart beim Booten verhindert. Habe es gefundenHier
Antwort2
Aktualisierung der Antwort von Ilya (ich habe nicht den Ruf, einen Kommentar abzugeben)
Bei mir funktioniert es unter Ubuntu 16.04, indem ich den bereitgestellten Dienst als Vorlage verwende (also eine einzelne Dienstdatei) und zwei Dinge ändere:
sudo cp ~/Downloads/openvpn-2.4.8/distro/systemd/[email protected] /lib/systemd/system/[email protected]
sudo vi /lib/systemd/system/[email protected]
Ändern:
- @sbindir@ nach /usr/local/sbin/
- Typ=Benachrichtigen an Typ=einfach
Neu laden und starten
sudo systemctl daemon-reload
service [email protected] restart
service [email protected] status
Dies setzt voraus, dass Sie Ihre Konfiguration bereits in /etc/openvpn/client/client.service.conf haben