openvpnのsystemdデバイス:.ovpnで終わる設定ファイルを使用するには?

openvpnのsystemdデバイス:.ovpnで終わる設定ファイルを使用するには?

デフォルトでは、systemd openvpnクライアントデバイスファイルは、すべての設定ファイルが.conf.で終わると想定しています.ovpn。私の環境では、ファイル拡張子を変更することは望ましくありません。

デフォルトのopenvpnクライアントデバイスファイルは次のとおりです。/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

ExecStartこのようにファイルを編集し、.conf拡張子を削除して行を変更しない理由はありますか?

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

この場合、拡張子を含む完全な構成ファイル名をsystemctlに渡します。 systemdに関する限り、拡張機能を含めると問題が発生しますか?ファイル拡張子が利用できない他の理由がありますか?

ラインに関する質問ExecStart:

通常、私のopenvpnコマンドラインは--daemonsystemdを使って起動する必要はありませんか?上記は含まれていないことがわかりました。デーモンとして実行するにはそれを含める必要がありますか?

また、なぜ--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

ベストアンサー1

拡張子がなくても機能する必要があります。これは単にユニットファイルによって設定されたルールです。systemctlユニット名のドットについて文句を言わないでください。

systemdデバイスは通常起動するコマンドをデーモン化しないため、systemdが実行されているプロセスを追跡しやすくなります。

--suppress-timestampsとにかく時間が追加されるからですjournald。どちらも試してみて、違いを確認してください。

おすすめ記事