Systemd kann openvpn in einem von lxd verwalteten 16.04-Container nicht starten

27

openvpnBeginnt gut von der Kommandozeile mit dem genauen ExecStart=Aufruf aus der systemdUnit-Datei:

/usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf /run/openvpn/server.pid

ps ax bestätigt, dass der Prozess dort ist:

1634 ?        Ss     0:00 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf --writepid /run/openvpn/

Ist systemctl start openvpn@serveraber nicht erfolgreich:

[email protected] - OpenVPN connection to server
   Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Thu 2016-03-17 09:54:52 UTC; 4s ago
     Docs: man:openvpn(8)
           https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
           https://community.openvpn.net/openvpn/wiki/HOWTO
  Process: 1679 ExecStart=/usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf --writepid /run/openvpn/s
 Main PID: 819 (code=exited, status=1/FAILURE)

Mar 17 09:54:52 vpn ovpn-server[1679]:   push_ifconfig_ipv6_remote = ::
Mar 17 09:54:52 vpn ovpn-server[1679]:   enable_c2c = DISABLED
Mar 17 09:54:52 vpn ovpn-server[1679]:   duplicate_cn = DISABLED
Mar 17 09:54:52 vpn ovpn-server[1679]:   cf_max = 0
Mar 17 09:54:52 vpn ovpn-server[1679]:   cf_per = 0
Mar 17 09:54:52 vpn ovpn-server[1679]:   max_clients = 1024
Mar 17 09:54:52 vpn systemd[1]: [email protected]: Control process exited, code=exited status=1
Mar 17 09:54:52 vpn systemd[1]: Failed to start OpenVPN connection to server.
Mar 17 09:54:52 vpn systemd[1]: [email protected]: Unit entered failed state.
Mar 17 09:54:52 vpn systemd[1]: [email protected]: Failed with result 'exit-code'.

Ich interpretiere, journalctl | grep ovpn-server | tail -n 100dass es nicht gegabelt hat:

Mar 17 09:57:44 vpn ovpn-server[1693]: OpenVPN 2.3.10 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Feb  2 2016
Mar 17 09:57:44 vpn ovpn-server[1693]: library versions: OpenSSL 1.0.2g  1 Mar 2016, LZO 2.08
Mar 17 09:57:44 vpn ovpn-server[1693]: daemon() failed or unsupported: Resource temporarily unavailable (errno=11)
Mar 17 09:57:44 vpn ovpn-server[1693]: Exiting due to fatal error
Christian David
quelle
Dieses Problem trat bei mir unter OpenVZ mit Ububtu 16.4 auf. Durch Auskommentieren LimitNPROCwie in der Antwort wurde der Dienst einwandfrei gestartet.
Piotr Kula

Antworten:

46

Ich habe auch nach einer Lösung dafür gesucht. Ich habe festgestellt, dass es funktioniert, wenn ich die LimitNPROCZeile in auskommentiere /lib/systemd/system/[email protected].

Vergiss nicht danach zu rennen systemctl daemon-reload.

Iain
quelle
3
Vielen Dank! Wie haben Sie das Problem diagnostiziert? Selbst wenn LimitNPROC lxdich die Antwort kenne und nach etwas google, hätte ich keinen Treffer erhalten, der mir sofort weiterhilft.
Christian David
5
Ich habe eine 15.10 lxd-Instanz gezogen und angefangen, die systemd-Konfiguration zu vergleichen. Das LimitNPROC war anfangs nicht verdächtig, aber es gab es in der älteren Konfiguration nicht, also habe ich versucht, es zu entfernen und es hat es gelöst. Zu diesem Zeitpunkt hatte ich mir einen Tag lang die Haare darüber ausgerissen.
Iain
8
Danke, das hat auch mein Problem behoben! Ich musste rennen, systemctl daemon-reloadbevor es in Kraft trat.
Quentin Skousen
1
Wurde dies gemeldet?
user1338062
2
Jemand hat dies als github.com/lxc/lxd/issues/3336
happyskeptic
14

Es ist besser zu vermeiden, systemd-Einheiten zu modifizieren, die aus Systempaketen stammen. Verwenden Sie einfach das Drop-In systemd override:

systemctl edit openvpn@

Der Gerätename für den OpenVPN- Server kann unterschiedlich sein, z. für die Paketversion 2.4.5-xenial0wird es sein

systemctl edit openvpn-server@

Dann in den Editor stellen:

[Service]
LimitNPROC=infinity

Es sollte eine /etc/systemd/system/[email protected]/override.confDatei erstellen (oder ähnlich für den entsprechenden Gerätenamen). Um es zu aktivieren, können Sie systemd mit neu laden

systemctl daemon-reload

Credits:
override: https://unix.stackexchange.com/a/398541/218321
"unbegrenztes Limit": https://unix.stackexchange.com/a/345596/218321

porbas
quelle
3
Dies behebt auch openvpnin openvzContainern
Stuart Cardall
Dies ist eine bessere Lösung als die akzeptierte. Ich habe gerade meinen Container aktualisiert und openvpn hat aufgehört zu arbeiten. Das lag daran, dass ich anstelle des Overrides die stock systemd-Datei aktualisiert habe.
WoJ
1

Ich musste auch die unten ihren jeweiligen Tunbruder hinzufügen

DeviceAllow=/dev/net/tap rw
DeviceAllow=/dev/net/tap1 rw

um es auf L2-Ebene auszuführen.

Thomas
quelle
Willkommen bei Ask Ubuntu! Ich empfehle , diese Antwort zu bearbeiten , um sie mit spezifischen Details zu erweitern. (Siehe auch Wie schreibe ich eine gute Antwort ?, um allgemeine Hinweise zu erhalten, welche Arten von Antworten auf Ask Ubuntu als am wertvollsten erachtet werden.)
David Foerster,