Systemd non riesce ad avviare openvpn nel contenitore 16.04 gestito da lxd


27

openvpninizia bene dalla riga di comando usando la ExecStart=chiamata esatta dal systemdfile dell'unità:

/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 conferma che il processo è lì:

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/

Ma systemctl start openvpn@servernon ha successo:

● openvpn@server.service - OpenVPN connection to server
   Loaded: loaded (/lib/systemd/system/openvpn@.service; 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]: openvpn@server.service: 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]: openvpn@server.service: Unit entered failed state.
Mar 17 09:54:52 vpn systemd[1]: openvpn@server.service: Failed with result 'exit-code'.

Interpreto journalctl | grep ovpn-server | tail -n 100che non è riuscito a fork:

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

Questo problema si è verificato per me su OpenVZ con Ububtu 16.4 - Commentando LimitNPROCcome nella risposta, il servizio è iniziato bene.
Piotr Kula,

Risposte:


46

Ho cercato una soluzione anche per questo. Quello che ho trovato per funzionare è commentare la LimitNPROCriga in /lib/systemd/system/openvpn@.service.

Non dimenticare di correre systemctl daemon-reloaddopo.


3
Grazie! Come hai diagnosticato il problema? Anche conoscendo la risposta, cercare su Google LimitNPROC lxdnon mi avrebbe restituito un successo che mi è stato immediatamente utile.
Christian David,

5
Ho estratto un'istanza di 15.10 lxd e ho iniziato a confrontare la configurazione di systemd. All'inizio LimitNPROC non era sospetto, ma non esisteva nella configurazione precedente, quindi ho provato a rimuoverlo e l'ho risolto. A quel punto mi ero strappato i capelli per un giorno.
Iain

8
Grazie, anche questo ha risolto il mio problema! Ho dovuto correre systemctl daemon-reloadprima che entrasse in vigore.
Quentin Skousen,

1
Questo è stato segnalato?
user1338062

2
Qualcuno l'ha segnalato come github.com/lxc/lxd/issues/3336
happyskeptic,

14

È meglio evitare di modificare le unità di sistema originate dai pacchetti di sistema. Usa il drop-in di override di systemd:

systemctl edit openvpn@

Il nome dell'unità per il server openvpn potrebbe essere diverso, ad es. per la versione del pacchetto 2.4.5-xenial0sarà

systemctl edit openvpn-server@

Quindi inserisci nell'editor:

[Service]
LimitNPROC=infinity

Dovrebbe creare un /etc/systemd/system/openvpn@.service.d/override.conffile (o simile per il nome dell'unità corrispondente). Per attivarlo potresti voler ricaricare systemd con

systemctl daemon-reload

Se l'avvio dell'unità ha esito positivo, LimitNPROC=infinitytornare indietro e modificare il limite su un valore superiore rispetto al valore predefinito di 10. Il limite è importante per impedire al servizio di consumare tutti i pid disponibili che possono causare una negazione del servizio.

Crediti:
override: /unix//a/398541/218321
"limite illimitato": /unix//a/345596/218321


3
questo si risolve anche openvpnall'interno dei openvzcontainer
Stuart Cardall,

Questa è una soluzione migliore di quella accettata. Ho appena aggiornato il mio contenitore e openvpn ha smesso di funzionare. Questo perché ho aggiornato il file stockd di sistema anziché l'override.
WoJ,

1

Ho anche dovuto aggiungere quelli sotto il loro rispettivo fratello tun

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

per eseguirlo a livello L2.


Benvenuti in Ask Ubuntu! Consiglio di modificare questa risposta per espanderla con dettagli specifici su come eseguire questa operazione. (Vedi anche Come posso scrivere una buona risposta? Per consigli generali su quali tipi di risposte sono considerate più preziose su Ask Ubuntu.)
David Foerster,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.