Eu compilei o openvpn a partir do código-fonte, executando openvpn --version
retornos:
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
E criei um /etc/openvpn/server.conf
arquivo com algumas configurações básicas. No entanto, quando tento iniciá-lo, sudo systemctl start openvpn@server
ele retorna
Failed to start [email protected]: Unit [email protected] not found.
E sudo systemctl status openvpn
retorna:
● 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)
O que me faz pensar que o serviço openvpn nem está registrado.
Eu verifiquei /lib/systemd/system/
, não tem openvpn.service
arquivo, mas /etc/systemd/system/
tem. Pelo que entendi, isso ocorre porque compilei em vez de apt-get install openvpn
?
Alguém pode sugerir como devo adicionar o openvpn autocompilado como um serviço?
Primeira vez compilando a partir do código-fonte, então qualquer conselho/dica será muito apreciado!
EDITAR 1:
Posso iniciar o servidor openvpn e conectar clientes a ele (apenas o serviço parece não funcionar):
sudo openvpn /etc/openvpn/server.conf
Responder1
Fez funcionar criando manualmente dois arquivos no formato /lib/systemd/system
.
O primeiro é 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
e o segundo é [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
Após criá-los, faça sudo systemctl daemon-reload
para recarregar as novas alterações.
Geralmente, os arquivos são os mesmos, como se o openvpn fosse instalado a partir do repositório oficial, a única diferença é ExecStart=/usr/sbin/openvpn
deveria ser ExecStart=/usr/local/sbin/openvpn
, apontando para o openVPN local compilado.
Editar: Se você usar o openvpn 2.4+, remova PIDFile=/run/openvpn/%i.pid
e --writepid /run/openvpn/%i.pid
do segundo arquivo, pois evita que o servidor seja iniciado na inicialização. Encontreiaqui
Responder2
Atualizando a partir da resposta de Ilya (não tenho reputação para comentar)
Eu estou trabalhando no Ubuntu 16.04 usando o serviço fornecido como modelo (portanto, um único arquivo de serviço), alterando duas coisas:
sudo cp ~/Downloads/openvpn-2.4.8/distro/systemd/[email protected] /lib/systemd/system/[email protected]
sudo vi /lib/systemd/system/[email protected]
Mudar:
- @sbindir@ para /usr/local/sbin/
- Type=notificar para Type=simple
Recarregue e comece
sudo systemctl daemon-reload
service [email protected] restart
service [email protected] status
Isso pressupõe que você já tenha sua configuração em /etc/openvpn/client/client.service.conf