サービスとして有効になっているopenvpnを使用しています。うまくいきますが、新しいIPアドレスが割り当てられているか接続が失われると、インターネットにアクセスできなくなります。その後、systemctlを再起動する必要があります。[Eメール保護]手動で。毎回rootとしてログインし、手動でサービスを再起動する必要がないように、この問題をどのように解決できますか?
[root@arch paul]# cat /etc/openvpn/ipredator.conf
client
dev tun0
proto udp
remote pw.openvpn.ipredator.se 1194
resolv-retry infinite
nobind
auth-user-pass /etc/openvpn/ipredator.auth
auth-retry nointeract
ca [inline]
tls-client
tls-auth [inline]
ns-cert-type server
keepalive 10 30
cipher AES-256-CBC
tls-cipher TLSv1:!ADH:!SSLv2:!NULL:!EXPORT:!DES:!LOW:!MEDIUM:@STRENGTH
persist-key
persist-tun
comp-lzo
tun-mtu 1500
mssfix
passtos
verb 3
<ca>
-----BEGIN CERTIFICATE-----
###censored###
-----END CERTIFICATE-----
</ca>
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
###censored###
-----END OpenVPN Static key V1-----
</tls-auth>
答え1
私のシステムでは、systemd構成ファイルはすべての@client構成に常駐し、それを含みます。このセクションでは、以下を追加できます。/usr/lib/systemd/system/[email protected]
[Service]
Restart=on-failure
RestartSec=10
...終了(接続の再試行)時にサービスを再開します。この例では、10秒遅れています。
次に、実行してsystemctl daemon-reload
変更を加えてsystemdを更新します。
答え2
これを.ovpn設定に追加してみてください。
server-poll-timeout 4
引用:https://openvpn.net/vpn-server-resources/troubleshooting-client-vpn-tunnel-connectivity/
または、接続が失われたときにopenvpnを自動的に再起動する単純なbashスクリプトをcronジョブに追加することもできます。スクリプトは次のとおりです。
#!/bin/bash
# Makes sure that openvpn service is running all times.
# Add this to a cronjob that will run every minute
set -o pipefail
if $(/sbin/ip add | grep tun | grep inet)
then
echo "OpenVPN service is already running"
else
systemctl restart [email protected]
echo "Restarted OpenVPN service"
fi