Systemd ne parvient pas à démarrer openvpn dans le conteneur 16.04 géré par lxd

27

openvpndémarre très bien à partir de la ligne de commande en utilisant l' ExecStart=appel exact du systemdfichier d'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 confirme que le processus est 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/

Mais systemctl start openvpn@serverne réussit pas:

[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'.

J'interprète journalctl | grep ovpn-server | tail -n 100qu'il n'a pas réussi à bifurquer:

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
la source
Ce problème s'est produit pour moi sur OpenVZ avec Ububtu 16.4 - En commentant LimitNPROCcomme dans la réponse, le service a bien commencé.
Piotr Kula

Réponses:

46

J'ai également cherché un correctif pour cela. Ce que j'ai trouvé fonctionne, c'est de commenter la LimitNPROCligne /lib/systemd/system/[email protected].

N'oubliez pas de courir systemctl daemon-reloadaprès ça.

Iain
la source
3
Merci! Comment avez-vous diagnostiqué le problème? Même en connaissant la réponse, googler pour LimitNPROC lxdn'aurait pas retourné un coup qui m'a été immédiatement utile.
Christian David
5
J'ai extrait une instance 15.10 lxd et j'ai commencé à comparer la configuration systemd. Le LimitNPROC n'était pas suspect au début, mais il n'existait pas dans l'ancienne configuration, j'ai donc essayé de le supprimer et il l'a résolu. J'avais arraché mes cheveux dessus pendant une journée à ce moment-là.
Iain
8
Merci, cela a aussi résolu mon problème! J'ai dû courir systemctl daemon-reloadavant qu'elle ne prenne effet.
Quentin Skousen
1
Cela a-t-il été signalé?
user1338062
2
Quelqu'un l'a signalé sous github.com/lxc/lxd/issues/3336
happyskeptic
14

Il vaut mieux éviter de modifier les unités systemd provenant de packages système. Utilisez simplement le drop-in de remplacement de systemd:

systemctl edit openvpn@

Le nom d'unité du serveur openvpn peut être différent, par exemple. pour la version du package, 2.4.5-xenial0il sera

systemctl edit openvpn-server@

Puis mettez dans l'éditeur:

[Service]
LimitNPROC=infinity

Il doit créer un /etc/systemd/system/[email protected]/override.conffichier (ou similaire pour le nom d'unité correspondant). Pour l'activer, vous pouvez recharger systemd avec

systemctl daemon-reload

Si le démarrage de l'unité réussit, LimitNPROC=infinityrevenez en arrière et modifiez la limite à une valeur supérieure à la valeur par défaut de 10. La limite est importante pour empêcher le service de consommer tous les pids disponibles qui peuvent provoquer un déni de service.

Crédits:
remplacement: /unix//a/398541/218321
"limite illimitée": /unix//a/345596/218321

porbas
la source
3
cela corrige également à l' openvpnintérieur des openvzconteneurs
Stuart Cardall
C'est une meilleure solution que celle acceptée. Je viens de mettre à jour mon conteneur et openvpn s'est arrêté de fonctionner. En effet, j'ai mis à jour le fichier stock systemd au lieu de la substitution.
WoJ
1

J'ai aussi dû ajouter ceux ci-dessous à leur frère tun respectif

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

pour l'exécuter au niveau L2.

Thomas
la source
Bienvenue sur Ask Ubuntu! Je recommande de modifier cette réponse pour la développer avec des détails spécifiques sur la façon de procéder. (Voir aussi Comment écrire une bonne réponse? Pour des conseils généraux sur les types de réponses considérées comme les plus utiles sur Ask Ubuntu.)
David Foerster