OpenVPN autocompilado no se inicia desde systemd

OpenVPN autocompilado no se inicia desde systemd

He compilado openvpn desde la fuente, ejecutando openvpn --versiondevoluciones:

OpenVPN 2.4.4 x86_64-unknown-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [MH/PKTINFO] [AEAD] built on Nov 19 2017
library versions: OpenSSL 1.0.2g  1 Mar 2016, LZO 2.08

Y creó un /etc/openvpn/server.confarchivo con algunas configuraciones básicas. Sin embargo, cuando intento iniciarlo, sudo systemctl start openvpn@servervuelve

Failed to start [email protected]: Unit [email protected] not found.

Y sudo systemctl status openvpnregresa:

● openvpn.service
   Loaded: masked (/dev/null; bad)
   Active: inactive (dead) since Sun 2017-11-19 14:21:06 HKT; 4 days ago
 Main PID: 1502 (code=exited, status=0/SUCCESS)

Lo que me hace pensar que el servicio openvpn ni siquiera está registrado.

Lo he comprobado /lib/systemd/system/, no tiene openvpn.servicearchivo, pero /etc/systemd/system/sí. Según tengo entendido, esto se debe a que compilé en lugar de apt-get install openvpn?

¿Alguien puede sugerir cómo debo agregar openvpn autocompilado como servicio?

Es la primera vez que compilamos desde la fuente, por lo que cualquier consejo/consejo será muy apreciado.

EDITAR 1:

Puedo iniciar el servidor openvpn y conectar clientes con él (solo el servicio no parece funcionar):

sudo openvpn /etc/openvpn/server.conf

Respuesta1

Lo hizo funcionar creando manualmente dos archivos en formato /lib/systemd/system.

El primero es openvpn.service:

[Unit]
Description=OpenVPN service
After=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/true
ExecReload=/bin/true
WorkingDirectory=/etc/openvpn

[Install]
WantedBy=multi-user.target

y el segundo es [email protected]:

[Unit]
Description=OpenVPN connection to %i
PartOf=openvpn.service
ReloadPropagatedFrom=openvpn.service
Before=systemd-user-sessions.service
Documentation=man:openvpn(8)
Documentation=https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
Documentation=https://community.openvpn.net/openvpn/wiki/HOWTO

[Service]
PrivateTmp=true
KillMode=mixed
Type=forking
ExecStart=/usr/local/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/%i.conf --writepid /run/openvpn/%i.pid
PIDFile=/run/openvpn/%i.pid
ExecReload=/bin/kill -HUP $MAINPID
WorkingDirectory=/etc/openvpn
ProtectSystem=yes
CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_READ_SEARCH CAP_AUDIT_WRITE
LimitNPROC=10
DeviceAllow=/dev/null rw
DeviceAllow=/dev/net/tun rw

[Install]
WantedBy=multi-user.target

Después de crearlos, hazlo sudo systemctl daemon-reloadpara recargar los nuevos cambios.

Generalmente, los archivos son los mismos, como si openvpn se instalara desde el repositorio oficial, la única diferencia es que ExecStart=/usr/sbin/openvpndebería ser ExecStart=/usr/local/sbin/openvpn, que apunta al openVPN local compilado.

Editar: si usa openvpn 2.4+, elimine PIDFile=/run/openvpn/%i.pidy --writepid /run/openvpn/%i.piddel segundo archivo, ya que evita que el servidor se inicie al arrancar. Lo encontréaquí

Respuesta2

Actualización de la respuesta de Ilya (no tengo reputación para comentar)

Lo tengo funcionando en Ubuntu 16.04 usando el servicio proporcionado como plantilla (es decir, un único archivo de servicio), cambiando dos cosas:

sudo cp ~/Downloads/openvpn-2.4.8/distro/systemd/[email protected] /lib/systemd/system/[email protected]

sudo vi /lib/systemd/system/[email protected]

Cambiar:

  • @sbindir@ a /usr/local/sbin/
  • Tipo=notificar a Tipo=simple

Recargar y comenzar

sudo systemctl daemon-reload
service [email protected] restart
service [email protected] status

Esto supone que ya tienes tu configuración en /etc/openvpn/client/client.service.conf

información relacionada