Systemd no puede iniciar openvpn en el contenedor 16.04 administrado por lxd

27

openvpncomienza bien desde la línea de comando usando la ExecStart=llamada exacta del systemdarchivo de la unidad:

/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 confirma que el proceso está ahí:

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/

Pero systemctl start openvpn@serverno tiene éxito:

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

Interpreto journalctl | grep ovpn-server | tail -n 100que no se pudo bifurcar:

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
fuente
Este problema me sucedió en OpenVZ con Ububtu 16.4 - Al comentar LimitNPROCcomo en la respuesta, el servicio comenzó bien.
Piotr Kula

Respuestas:

46

He estado buscando una solución para esto también. Lo que he encontrado que funciona es comentar la LimitNPROClínea /lib/systemd/system/[email protected].

No te olvides de correr systemctl daemon-reloaddespués de eso.

Iain
fuente
3
¡Gracias! ¿Cómo diagnosticaste el problema? Incluso sabiendo la respuesta, buscar en Google LimitNPROC lxdno habría devuelto un golpe que me sea inmediatamente útil.
Christian David
55
Extraje una instancia de 15.10 lxd y comencé a comparar la configuración de systemd. El LimitNPROC no era sospechoso al principio, pero no existía en la configuración anterior, así que intenté eliminarlo y lo resolvió. Había estado arrancándome el pelo por un día en ese momento.
Iain
8
¡Gracias, esto también solucionó mi problema! Tuve que correr systemctl daemon-reloadantes de que entrara en vigor.
Quentin Skousen
1
¿Se ha informado esto?
user1338062
2
Alguien informó esto como github.com/lxc/lxd/issues/3336
happyskeptic
14

Es mejor evitar las unidades systemd modyfying que se originan en los paquetes del sistema. Solo use el menú desplegable de anulación systemd:

systemctl edit openvpn@

El nombre de la unidad para el servidor openvpn puede ser diferente, por ejemplo. para la versión del paquete 2.4.5-xenial0será

systemctl edit openvpn-server@

Luego poner en editor:

[Service]
LimitNPROC=infinity

Debe crear un /etc/systemd/system/[email protected]/override.confarchivo (o similar para el nombre de la unidad correspondiente). Para activarlo, es posible que desee volver a cargar systemd con

systemctl daemon-reload

Si el inicio de la unidad es exitoso LimitNPROC=infinity, regrese y cambie el límite a un valor más alto que el predeterminado 10. El límite es importante para evitar que el servicio consuma todos los pids disponibles que pueden causar una denegación de servicio.

Créditos:
anulación: /unix//a/398541/218321
"límite ilimitado": /unix//a/345596/218321

porbas
fuente
3
esto también se arregla openvpndentro de los openvzcontenedores
Stuart Cardall
Esta es una mejor solución que la aceptada. Acabo de actualizar mi contenedor y openvpn dejó de funcionar. Esto se debió a que actualicé el archivo stock systemd en lugar de la anulación.
WoJ
1

También tuve que agregar a esos debajo de su respectivo hermano hermano

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

para ejecutarlo en el nivel L2.

Thomas
fuente
Bienvenido a Ask Ubuntu! Recomiendo editar esta respuesta para expandirla con detalles específicos sobre cómo hacer esto. (Consulte también ¿Cómo escribo una buena respuesta? Para obtener consejos generales sobre qué tipos de respuestas se consideran más valiosas en Ask Ubuntu.)
David Foerster