次の設定を含む/lib/systemd/system/openvpn.serviceファイルがあります。
[Unit]
Description=OpenVPN client
After=network.target
[Service]
Type=forking
PIDFile=/var/run/openvpn/%i.pid
ExecStart=/usr/sbin/openvpn --dameon --writepid /var/run/openvpn/openvpn.pid --config /etc/openvpn/pia/Mexico.ovpn
ExecStop=-/bin/kill -TERM $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl start openvpnを実行するたびに、次のような奇妙なエラーが発生します。
Job for openvpn.service failed because a timeout was exceeded. See "systemctl status openvpn.service" and "journalctl -xe" for details.
ところでパブリックIPを確認してみるとVPN IPが出てきます。しかし、数秒ごとに変わりますが、OpenVPNが再起動されるためだと思います...
このエラーメッセージに対してコマンドを実行すると、次のようになります。
Jun 19 04:29:33 test systemd[1]: openvpn.service: PID file /var/run/openvpn/.pid not readable (yet?) after start: No such file or directory
/var/run/openvpnからls -l出力:
-rw-r--r-- 1 root root 5 Jun 19 04:32 openvpn.pid
それで、何が間違っている可能性があるのか理解できませんか?オペレーティングシステムは、ソースからコンパイルされたOpenVPN 2.4.2を含むUbuntu 16.04です。 Mexico.confは私のconfファイルです。 .ovpnを.confに名前を変更しました。
PIDFILEを次に変更すると、PIDFile=/var/run/openvpn/openvpn.pid
完全に起動しません。
この設定をガイドのどこかにコピーしましたが、名前が指定されていると機能します。 [Eメール保護]ただし、同じ設定でopenvpn.serviceという名前を指定すると、上記のエラーが発生します。特別な理由がありますか?設定は次のとおりです。
[Unit]
Description=OpenVPN client
After=network.target
[Service]
RuntimeDirectory=openvpn
PrivateTmp=true
KillMode=mixed
Type=forking
PIDFile=/var/run/openvpn/%i.pid
ExecStart=/usr/sbin/openvpn --daemon --writepid /var/run/openvpn/openvpn.pid --cd /etc/openvpn/pia/ --config Mexico.conf
ExecReload=/bin/kill -HUP $MAINPID
WorkingDirectory=/etc/openvpn
Restart=on-failure
RestartSec=3
ProtectSystem=yes
LimitNPROC=10
DeviceAllow=/dev/null rw
DeviceAllow=/dev/net/tun rw
[Install]
WantedBy=multi-user.target
名前を指定すると、これらの設定が機能することがわかりました。[Eメール保護]ただし、次のような致命的ではないエラーが発生します。
ERROR: Linux route add command failed: external program exited with error status: 7
WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
答え1
あなたのサービスが文句を言う理由は、受信できないパラメータが必要なためです。パラメータの位置は次のとおりです。[Eメール保護]どこでも見ることができるファイル%私、特にラインで
PIDFile=/var/run/openvpn/%i.pid
この内容も反映されなければなりません。実行開始交換するラインの下--writepid /var/run/openvpn/openvpn.pid何が起こったのか--writepid /run/openvpn/%i.pid。
サービスを使用する正しい方法。[Eメール保護]パラメータを渡すだけです。例えば
systemctl enable [email protected]
systemctl start [email protected]
この簡単な例では、渡されたパラメータ(顧客)はプロセスのPIDを格納するファイルの名前にすぎないので、好きなように名前を付けることができます。サービスファイルの名前を次のように変更します。/lib/systemd/システム/[Eメール保護]確信しています。インストールしたときと同じようにうまく機能します。
openvpnがまだ機能している理由は、実際にあなたが見逃した唯一のものはopenvpn設定ではなく、PIDファイルの名前です。
他の2つのエラーの場合、2番目のエラーは警告なので注意してください(=使用認証ノーキャッシュ構成ファイルのオプション)。第二に、診断のためにより多くの情報が必要です。つまり完全なエラーメッセージ、オープンVPN構成ファイルとルーティングテーブル(IPパスの表示)後ろにVPN設定後。