He compilado openvpn desde la fuente, ejecutando openvpn --version
devoluciones:
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.conf
archivo con algunas configuraciones básicas. Sin embargo, cuando intento iniciarlo, sudo systemctl start openvpn@server
vuelve
Failed to start [email protected]: Unit [email protected] not found.
Y sudo systemctl status openvpn
regresa:
● 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.service
archivo, 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-reload
para 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/openvpn
debería ser ExecStart=/usr/local/sbin/openvpn
, que apunta al openVPN local compilado.
Editar: si usa openvpn 2.4+, elimine PIDFile=/run/openvpn/%i.pid
y --writepid /run/openvpn/%i.pid
del 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