O OpenVPN auto-compilado não inicia a partir do systemd

2

Eu compilei o openvpn do código-fonte, executando openvpn --version returns:

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 criou um arquivo /etc/openvpn/server.conf com algumas configurações básicas. No entanto, quando tento iniciá-lo com 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 não está nem registrado.

Eu verifiquei /lib/systemd/system/ , não tem openvpn.service , mas /etc/systemd/system/ . Pelo que entendi isso é porque eu compilei em vez de apt-get install openvpn ?

Alguém pode sugerir como devo adicionar o openvpn auto-compilado como um serviço?

Primeira vez que compila a partir da fonte, então qualquer conselho / dicas muito apreciadas!

EDIT 1:

Eu posso iniciar o servidor openvpn e conectar clientes a ele (somente o serviço parece não funcionar):

sudo openvpn /etc/openvpn/server.conf
    
por Ilya 23.11.2017 / 10:52

1 resposta

1

Feito isso, criando manualmente dois arquivos em /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

Depois de 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 deve ser ExecStart=/usr/local/sbin/openvpn , apontando para o openVPN local compilado.

Editar: Se você usar openvpn 2.4+, remova PIDFile=/run/openvpn/%i.pid e --writepid /run/openvpn/%i.pid do segundo arquivo, já que ele impede que o servidor inicie na inicialização. Encontrou aqui

    
por 23.11.2017 / 13:39