Always-on-VPN mit dynamischer IP/DynDNS

balombi

Cadet 2nd Year
Registriert
Okt. 2021
Beiträge
31
Hallo,

ich habe eine Frage bzgl. VPN mit einer dynamischen IP-Adresse bzw. DynDNS.

Ich möchte gerne eine Always-on-VPN-Verbindung vom Handy (Android) nach Hause aufbauen.
Als VPN-Server-Adresse verwende ich eine DynDNS-Adresse.

Bisher hatte ich aber sowohl mit WireGuard als auch mit OpenVPN das Problem, dass nach einem Wechsel der dynamischen IP das VPN zwar noch aufgebaut war, aber keine Verbindung mehr möglich war, da die VPN-Clients die IP-Adresse über DynDNS nicht neu aufgelöst haben. Erst nach einem trennen und erneutem verbinden des VPNs konnte wieder eine Netzwerkverbindung aufgebaut werden.

Kennt jemand eine Lösung, wie ich erreichen kann, dass die neue IP-Adresse auch neu aufgelöst/verwendet wird, solange das VPN aktiv ist ?

Funktioniert das evtl. mit einem IPsec VPN besser ?
Oder gibt es andere Möglichkeiten ?


Vielen Dank für Tipps/Anregungen


balombi
 
Bei Wireguard ist das leider auf Android und IOS meines Wissens nicht möglich. Auf Linux Client System wird das einfach gelöst indem einfach der DNS Eintrag dauernd re-resolved wird [1].
Ähnlich könnte man wahrscheinlich auch auf Windows verfahren (Aufgabenplanung).

Praktikabel ist also nur eine statische IP Adresse oder eine langzeit dynamische IP (Telekom hat 6-Monate).
 
@metallica2006 : Es geht nicht darum, dass der nicht näher genannte DDNS-Dienst nicht funktioniert. Das Problem ist, dass eine bestehende WireGuard-Verbindung es nicht mitbekommt, wenn sich die IP hinter der DDNS-Domain ändert, was vollkommen unabhängig davon ist ob das nu no-ip oder ein beliebiger anderer DDNS-Anbieter ist.

@balombi : Zumindest bei OpenVPN ist es so, dass es einen KeepAlive-Ping gibt, der regelmäßig auch bei Inaktivität für Traffic sorgt. Ändert sich die IP des VPN-Partners, geht der Tunnel down und wird neu verbunden, inkl. neuer Auflösung der Ziel-IP über die DDNS-Domain. Ich wundere mich ein wenig, dass WireGuard das augenscheinlich nicht kann. Offensichtlich gibt es schon Leute, die dafür extra Linux-Scripts schreiben

Zur Not wäre daher OpenVPN einen Versuch wert, wenn es dir zu umständlich ist, ab und zu mal das VPN neu zu verbinden.
 
Vielen Dank erstmal für die Antworten und Tipps. Komischerweise hat bei mir OpenVPN die Verbindung auch nicht wiederhergestellt, als ich das getestet habe. Muss man den KeepAlive-Ping irgendwo konfigurieren ?
 
--keepalive 10 60 definiert beispielsweise, dass alle 10 Sekunden ein Ping durch das VPN geht und nach 60 Sekunden ohne Antwort ein Timeout erkannt wird. keepalive ist eine Kombi-Option, die sowohl die --ping als auch die --ping-restart Option in einer Zeile zusammenfasst. Ping-restart ist dabei der eigentliche Neustart des Tunnels. inkl. neuer DNS-Auflösung des Servernamens.

OpenVPN schreibt dazu:

--ping-restart n Similar to --ping-exit, but trigger a SIGUSR1 restart after n seconds pass without reception of a ping or other packet from remote.This option is useful in cases where the remote peer has a dynamic IP address and a low-TTL DNS name is used to track the IP address using a service such as http://dyndns.org/ + a dynamic DNS client such as ddclient.

If the peer cannot be reached, a restart will be triggered, causing the hostname used with --remote to be re-resolved (if --resolv-retry is also specified).
Quelle: openvpn.net

bzw.

--keepalive interval timeout A helper directive designed to simplify the expression of --ping and --ping-restart.This option can be used on both client and server side, but it is enough to add this on the server side as it will push appropriate --ping and --ping-restart options to the client. If used on both server and client, the values pushed from server will override the client local values.

The timeout argument will be twice as long on the server side. This ensures that a timeout is detected on client side before the server side drops the connection.


For example, --keepalive 10 60 expands as follows:

if mode server:
ping 10 # Argument: interval
ping-restart 120 # Argument: timeout*2
push "ping 10" # Argument: interval
push "ping-restart 60" # Argument: timeout
else
ping 10 # Argument: interval
ping-restart 60 # Argument: timeout

Die keepalive-Option muss explizit in der OVPN-Konfigurationsdatei angegeben werden. Steht sie im Server, wird sie automatisch an die Clients gepusht und man braucht in den Clients keinen Eintrag. Allerdings möchte ich noch erwähnen, dass ich nicht meine Hand dafür ins Feuer lege, dass sich der OpenVPN-Client unter Android 1:1 so verhält wie unter Windows. Ich habe das selbst in der Praxis nur mit einem Windows-Client getestet.
 
Zurück
Oben