systemd unit para openvpn: como usar arquivos de configuração que terminam com .ovpn?

0

Por padrão, o arquivo systemd openvpn client unit assume que todos os arquivos de configuração terminam em .conf . Muitos dos meus arquivos de configuração terminam com .ovpn . Alterar extensões de nome de arquivo é indesejável no meu ambiente.

O arquivo da unidade do cliente openvpn padrão é /usr/lib/systemd/system/[email protected]

[Unit]
Description=OpenVPN tunnel for %I
After=syslog.target network-online.target
Wants=network-online.target
Documentation=man:openvpn(8)
Documentation=https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
Documentation=https://community.openvpn.net/openvpn/wiki/HOWTO

[Service]
Type=notify
PrivateTmp=true
WorkingDirectory=/etc/openvpn/client
ExecStart=/usr/bin/openvpn --suppress-timestamps --nobind --config %i.conf
CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_OVERRIDE
LimitNPROC=10
DeviceAllow=/dev/null rw
DeviceAllow=/dev/net/tun rw
ProtectSystem=true
ProtectHome=true
KillMode=process

[Install]
WantedBy=multi-user.target

Existe uma razão para eu não editar esse arquivo e alterar a linha ExecStart removendo a extensão .conf assim?

ExecStart=/usr/bin/openvpn --suppress-timestamps --nobind --config %i

Nesse caso, eu passaria o nome completo do arquivo de configuração com extensão para systemctl. Incluir a extensão quebra qualquer coisa no que diz respeito ao systemd? Existe outra razão pela qual uma extensão de nome de arquivo não pode ser usada?

Questões relacionadas com a linha ExecStart :

Normalmente, minha linha de comando openvpn inclui --daemon . Isso não é necessário ao iniciar via systemd? Eu vejo que não está incluído acima. Se eu quiser que ele seja executado como um daemon, preciso incluí-lo?

Além disso, por que --suppress-timestamps está incluído? Atualmente, não recebo carimbos de data e hora duplicados nos logs / diário. Isso mudará se eu começar pelo systemd?

O seguinte é o meu arquivo de unidade proposto (não testado):

[Unit]
Description=OpenVPN tunnel for %i
After=syslog.target network-online.target
StartLimitIntervalSec=0
Wants=network-online.target

[Service]
Type=notify
PrivateTmp=true
WorkingDirectory=/etc/openvpn/client
ExecStart=/usr/bin/openvpn --suppress-timestamps --nobind --daemon --config %i
CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_OVERRIDE
LimitNPROC=10
DeviceAllow=/dev/null rw
DeviceAllow=/dev/net/tun rw
ProtectSystem=true
ProtectHome=true
KillMode=process
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
    
por MountainX 30.08.2018 / 21:32

1 resposta

1

Deve funcionar sem a extensão, é apenas uma convenção estabelecida pelo arquivo da unidade. systemctl não reclama de pontos em nomes de unidades.

As unidades systemd normalmente não daemonizam os comandos que iniciam, o que torna mais fácil para o systemd rastrear os processos que estão sendo executados.

--suppress-timestamps é provavelmente porque journald adiciona um horário mesmo assim. Apenas tente os dois e veja qual é a diferença.

    
por 30.08.2018 / 21:43