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:

● 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 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

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/openvpn@.service.

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


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/openvpn@.service.d/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


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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.