systemd를 사용한 openvpn: 다시 연결

systemd를 사용한 openvpn: 다시 연결

서비스로 활성화된 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

관련 정보