서비스로 활성화된 openvpn을 사용하고 있습니다. 잘 작동하지만 새 IP 주소가 할당되거나 연결이 끊어지면 더 이상 인터넷에 액세스할 수 없습니다. 그런 다음 systemctl을 다시 시작해야 합니다.[이메일 보호됨]수동으로. 매번 루트로 로그인하고 수동으로 서비스를 다시 시작할 필요가 없도록 이 문제를 어떻게 해결할 수 있습니까?
[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