Модуль systemd для openvpn: как использовать файлы конфигурации, заканчивающиеся на .ovpn?

По умолчанию файл клиентского модуля systemd openvpn предполагает, что все файлы конфигурации заканчиваются на .conf . Многие из моих конфигурационных файлов заканчиваются на .ovpn . Изменение расширения имени файла нежелательно в моей среде.

Файл клиентского модуля openvpn по умолчанию: /usr/lib/systemd/system/openvpn-client@.service

 [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 и [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 

Есть ли причина, по которой я не должен редактировать этот файл и изменять строку ExecStart , удаляя расширение .conf следующим образом?

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

В этом случае я бы передал полное имя файла конфигурации с расширением в systemctl. Включает ли расширение что-нибудь, что касается systemd? Есть ли другая причина, почему расширение файла не может быть использовано?

Смежные вопросы, касающиеся линии ExecStart :

Обычно моя командная строка openvpn включает в себя --daemon . Разве это не требуется при запуске через systemd? Я вижу, что это не включено выше. Если я хочу, чтобы он работал как демон, нужно ли его включать?

Кроме того, почему --suppress-timestamps ? В настоящее время я не получаю дублированные метки времени в журналах / журнале. Это изменится, если я начну через systemd?

Вот мой предложенный (непроверенный) файл модуля:

 [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 и [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 

Он должен работать без расширения, это просто соглашение, установленное модульным файлом. systemctl не жалуется на точки в именах модhive.

Модули systemd обычно не демонизируют команды, которые они запускают, что облегчает systemd отслеживать запущенные процессы.

--suppress-timestamps , вероятно, потому что journald добавляет время в любом случае. Просто попробуйте оба и посмотрите, в чем разница.