Ich möchte, dass meine OpenVPN-Clientanwendung (die auf A ausgeführt wird ) beendet wird, wenn keine Verbindung zu einem Server ( B ) hergestellt (oder eine neue Verbindung hergestellt ) werden kann. Ich benutze das UDP-Protokoll. Sowohl A als auch B sind Linux-Systeme.
Genauer gesagt erhalte ich immer wieder die folgenden Protokolleinträge.
UDPv4 link remote: [AF_INET] [remote-ip]
TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
TLS Error: TLS handshake failed
SIGUSR1[soft,tls-error] received, process restarting
Re-using SSL/TLS context
UDPv4 link remote: [AF_INET] [remote-ip]
...
Ich weiß, warum A nicht auf B zugreifen kann . Anstatt den Prozess neu zu starten, möchte ich, dass OpenVPN beendet wird.
man openvpn
Ich habe versucht, einige Optionen zu verwenden.
- Ich habe
resolv-retry
auf eine kleine Zahl gesetzt (funktioniert nicht, die Adresse von B kann aufgelöst werden). - Ich habe
connect-retry-max
auf 1 gesetzt (funktioniert nicht, ich verwende UDP).
Ich vermute, dass ich über eine Option nachdenke ...
BEARBEITEN: Hintergrundinfo: Ich möchte dies wegen Firewalllochung tun. B befindet sich hinter einer Firewall, die nur SSH-Verkehr zulässt. Bevor ich den Client auf A starte, führe ich ein Skript aus, das den Datenverkehr von A nach B ermöglicht . Dies funktioniert für eine Weile, aber die Lücke in der Firewall von B muss nach einiger Zeit 'erneuert' werden (z. B. aufgrund von Netzwerkproblemen, aber auch, weil A eine dynamische IP-Adresse hat). Da es kein up-pre
Gegenstück zu gibt down-pre
und ich keinen Patch anwenden und OpenVPN selbst kompilieren möchte, um ihn hinzuzufügen, führe ich auf A ein Wrapper-Skript aus , das ein neues Loch stanzt (in B)Firewall) und startet OpenVPN jedes Mal, wenn OpenVPN nicht mehr ausgeführt wird. Dies würde funktionieren, wenn nur OpenVPN beendet würde ....