OpenVPN und WireGuard kann man dazu verwenden sich dauerhaft mit seinem Heimnetz zu verbinden. Dabei spielt es keine Rolle ob man das Netzt wechselt von WLAN zu Mobil. Beide Lösungen verbinden sich stets automatisch neu mit dem Heimnetzwerk.
Voraussetzung für diese Anleitung ist natürlich ein vorhandener Raspberry Pi. Welche Variante spielt eigentlich keine Rolle.
Ich selber habe einen PI 3 und einen PI Zero W. Auf beiden Varianten ist die Installations gleich und auch die Funktion nach dem Einrichten Identsich.
Als Betriebssystem nutze ich "Raspberry Pi OS" vom Link. Dieses Betriebssystem baut auf Debian aufbaut. Der Installer auf der Seite macht die Installation absolut easy und zum Einrichten gibt es auch einige Anleitungen.
https://www.raspberrypi.com/software/
Vorbereitung:
Wichtig ist das ihr dem PI eine statische Adresse vergebt und wenn ihr mit VPN auch IPV6 nutzen möchtet zusätzlich eine statische IPV6 Adresse.
Hier mein Beispiel:
static ip_address > IPV4 Adresse des PI. Muss natürlich im Heimnetz sein.
static ip6_address > IPV6 Adresse des PI. Frei wählbar muss aber dem IPV6 Syntax entsprechen > Optional wenn IPV6 gewünscht.
static routers > IPV4 Adresse des Routers im Netz
static domain_name_servers > Lokaler DNS Server im Netz. Normalerweise die gleiche IPV6 Adresse wie der Router.
Aktivierung Weiterleitung
Damit IPV4 und wenn erwünscht auch IPV6 erfolgreich weitergeleitet wird vom Pi ins Heimnetz muss die sysctl.conf bearbeitet werden.
Die Datei ergänzen oder wenn die Einträge bereits vorhanden sind verändern um die folgenden Einträge:
Öffentliche Adresse:
Damit das Heimnetz auch immer von ausserhalb erreichbar ist müsst ihr natürlich erst mal eine öffentliche Adresse einrichten. Die meisten Router bitten dazu bereits eine Möglichkeit.
Telekom Speedport unter "Einstellungen für dynamisches DNS".
FritzBox > MyFritz Konto.
Da wir einen PI habe gehe ich an dieser Stelle auf dynv6.com ein. Dynv6 ist kostenlos und ohne jegliche Zwangsanmeldungen jeden Monat um das Konto erneut zu aktivieren.
Debian biettet den Daemon "ddclient" an zur Übermittlung der öffentlichen IP's an einen Dynamic DNS Server. Funktioniert für alle Anbieter.
Jetzt noch den Daemon nach jedem Neustart aktivieren.
Mit diesem Befehl kann man sich den Status ansehen und die Ausführung sofort erzwingen.
IPV6 Ergänzung:
Es gibt auch ein Script mit welchem man dynv6 sehr einfache updaten kann. Zusätzlich wird mit dem Script auch die öffentliche IPV6 Adresse weitergegeben.
https://gist.github.com/corny/7a07f5ac901844bd20c9
Ich habe das Script in einen neuen Ordner kopiert "/home/pi/ddclient_dynv6" und darin ein zweites Script erstellt welches die Anmeldeinformationen an das Script weitergibt.
Inhalt des Scripts wie folgt:
Beide Scripts ausführbar machen:
Die Datei "/etc/ddclient.conf" muss jetzt am Ende um folgenden Eintrag ergänzt werden:
Ab jetzt sollte auch die IPV6 Adresse bei dynv6 deiner öffentlichen Router Adresse folgen.
Installation OpenVpn und WireGuard:
Es gibt ein Skript das die Installation beider Vpn Lösungen auf dem Pi sehr vereinfacht.
Im Terminal folgenden Befehl ausführen und der Anleitung folgen:
Ich möchte das ganze etwas Abkürzen da die Hilfestellung beim ausführen des Scripts eigentlich selbsterklärend ist. Daher hier nur eine Beschreibung der wichtigsten Eingaben.
Falls man wie bereits oben beschrieben eine statische Adresse dem PI vergeben hat kann man hier auf NO gehen. Ansonsten kann man das hier noch nachholen.
Hier kommt die IPV4 Adresse vom Router rein.
Das ist der Port welcher am Router freigegeben werden muss damit der VPN-Dienst auf dem Pi von außerhalb der Router Firewall erreichbar ist. Am besten ist wenn man hier das Protokoll UDP wählt. Standard wird entgegen dem Bild für WireGuard Port 51820 vorgeschlagen. Es ist natürlich auch ganz wichtig das die Portfreigabe zum Pi auch auf dem Router eingerichtet wird. Wie das geht steht in der Router Anleitung.
Hier so wie im Bild markiert auswählen und deine öffentliche Adresse eintragen. Adresse ganz oben in der Anleitung "'dynv6 generierte Adresse zu finden unter Instructions". Als Beispiel "name.dynv6.net".
Hier ganz nach unten Scrollen und denn eigenen DNS-Server eintragen. Ist normalerweise die Adresse vom Router. Ansonsten funktioniert die interne Namensauflösung nicht.
Um OpenVPN und WireGuard auf dem PI zu installieren das Script nochmal ausführen mit dem anderen Dienst als Auswahl.
OpenVPN bittet eine höhere Sicherheit als WireGuard. Dafür ist WireGuard schlanker und soll schneller sein. Für den Normalnutzer ist aber sicher die Sicherheit von beiden Diensten ausreichend.
Damit ist die Grundkonfiguration beider Dienste abgeschlossen und mit dem folgenden Befehl können die Clients hinzu gefügt werden bei Installation von nur einem der beiden Dienste.
Wen beide Dienste installiert sind muss man dazuschreiben für welchen Dienst.
Wo findet man die Client APP und wie konfigurieren?
Mit WireGuard kann man sich zum Einscannen in die Client App einen QR-Code erzeugen lassen.
Beide Dienste erzeugen eine Konfigurationsdatei für den Client die man am Ende in der Client App laden kann.
WireGuard Client ist im App Store zu finden für OSX als auch für IOS.
https://apps.apple.com/de/app/wireguard/id1441195209
OpenVPN Client für IOS ebenfalls im App Store.
https://apps.apple.com/de/app/openvpn-connect/id590379981
Für OSX gibt es eine Installer.
https://openvpn.net/download-open-vpn/
Monterey
Seit Monterey muss ich für beide Dienste die MTU (Maximum Transmission Unit) ergänzen. Das ist anscheinend nicht immer nötig, aber bei mir wird die Verbindung ohne die MTU geblockt. Ich habe diese Konfiguration direkt in die Pi Konfiguration eingetragen.
WireGuard:
und in der Konfigurationsdatei folgende Zeile unter [Interface] ergänzen:
Für OpenVPN das gleiche:
und das ergänzen:
Additional IPV6
WireGuard kann man auch sehr leicht um IPV6 erweitern. Voraussetzung ist natürlich das in deinem Heimnetz auch IPV6 eingerichtet wurde.
Die WireGuard Konfiguration muss dazu um die nötigen IPV6 Einstellungen ergänzt werden.
Hier als Beispiel.
[Interface] erhält zusätzlich für wg0 eine feste IPV6 Adresse und denn dazu gehörigen Adressbereich
Weiter muss in [Interface] eine Routing Weiterleitung auf eth0 ergänzt werden. Ich bin mir nicht sicher ob das bei jeder Pi Konfiguration nötig ist oder nur bei meiner da ich auf dem Pi auch dnsmasq am laufen habe als eignen DNS, IPV4 und IPV6 Server.
Weiter oben in der Anleitung haben wir ja bereits ein Routing für IPV4 und IPV6 gesetzt.
Jetzt noch für die Clients die IPV6 Adresse ergänzen. Nach dem Ergänzen müssen die Client Konfigurationen neu erstellt werden oder ihr ergänzt das zusätzlich in der Client Konfiguration.
Am Ende sieht meine Konfiguration wie folgt aus mit funktionierendem IPV6.
Abschluss
Nicht vergessen einen Neustart vom Pi machen damit auch alles neue eingestellte aktiviert wird.
Folgende Befehle sind Hilfreich zur Fehlersuche und zum Prüfen ob die Verbindung klappt.
Viel Spass mit OpenVpn und WireGuard.
Freue mich über jegliche Anmerkungen und Verbesserungsvorschläge. Ist nicht einfach eine Anleitung aus dem Kopf zu schreiben und hat sicher Verbesserungspotential.