DebianマシンでOpenVPNクライアントを実行したいと思っています。サービスが実行されていることがわかります。
# Sudo service openvpn status
● openvpn.service - OpenVPN service
Loaded: loaded (/lib/systemd/system/openvpn.service; enabled; vendor preset: enabled)
Active: active (exited) since Thu 2017-12-28 19:01:14 UTC; 1h 8min ago
Process: 19416 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 19416 (code=exited, status=0/SUCCESS)
そして、デーモンを介してOpenVPNを起動し、バックグラウンドで実行できるようにします
# Sudo openvpn --config /etc/openvpn/client.conf --daemon
ロギングとWAN IP)をチェックすることで、期待どおりに実行されていることを確認できます。
ただし、OpenVPNサービスを停止することはできます...
# Sudo service openvpn stop
# Sudo service openvpn status
● openvpn.service - OpenVPN service
Loaded: loaded (/lib/systemd/system/openvpn.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Thu 2017-12-28 20:10:00 UTC; 37s ago
Process: 19416 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 19416 (code=exited, status=0/SUCCESS)
しかし、デーモンはまだバックグラウンドで実行されており、VPNに接続したままで、パブリックVPNIPアドレスを取得しています。
では、サービスとデーモンの違いは何ですか?彼らはお互いに依存していませんか?
私の目標は、コンピューターの起動時にOpenVPNをバックグラウンドで実行し、無期限に実行し続けることです。起動時に実行するようにサービスを設定しようとしていましたが、上記のアクションにより、それを実現する方法について混乱しています...
更新:これがこのファイルです:/lib/systemd/system/openvpn.service
# This service is actually a systemd target,
# but we are using a service since targets cannot be reloaded.
[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
このコンテキストでの「サービス」は、デーモン、開始、停止、リロードなどを制御するためのインターフェースです。openvpnサービスは、systemdの制御下にあるopenvpnの単なるインスタンスです。
Client.confのopenvpnサービス構成を有効にしていないようです。 Systemdは、openvpnの複数のインスタンスを個別に制御できます。これらには個別にopenvpn @ <config> .serviceという名前が付けられます。ここで、<config>は.confファイルの名前です。例: [email protected]
。構成を作成したら、それをサービスとして有効にする必要があります
systemctl enable [email protected]
Created symlink /etc/systemd/system/multi-user.target.wants/[email protected] → /lib/systemd/system/[email protected].
/lib/systemd/system/[email protected]
は、渡された引数を使用して指定されたインスタンスを実行するテンプレートファイルです。
特定のインスタンスを制御するには、通常どおりsystemctlコマンドを発行します
systemctl status openvpn@client
systemctl start openvpn@client
systemctl stop openvpn@client
等.