Wer z.B. bei einem günstigen DSL-Anbieter oder meist bei den Kabel-Anbietern (um diese geht es nachfolgend) mit einem DS-Lite-Anschluss bedient wird, hat zwar in der Regel beim durchschnittlichen Surfen keine Probleme, bekommt aber beim Betrieb eigener öffentlich zugänglicher Server oder wenn eingehendes VPN verwendet werden soll Schwierigkeiten, da zwar ein IPv6-Subnetz zur Verfügung steht oder keine öffentlich zugängliche IPv4-Adresse.
Mal abgesehen von den Gegebenheiten des Kabelanschlusses, da es ein shared medium ist (je mehr dran hängen, desto bescheidener wird’s) und meist die Upload-Rate eher mäßig ausfällt, macht einem das Fehlen einer öffentlichen IPv4-Adresse das Leben schwer, da IPv6 nicht unbedingt überall funktioniert.
Bei (Business-)DSL und Standleitungen sieht die Welt in der Regel anders aus. Je nach Region kann die Lage allerdings eine ganz andere sein wie Gespräche mit Kollegen neulich auf einer Schulung zeigten. Mitunter ist DSL keine Lösung, da nicht verfügbar oder grottenschlecht, so das dann eigentlich nur Kabel übrig bleibt (teurere Standleitungen, sofern sie überhaupt angeboten oder gebaut werden und SkyDSL lassen wir mal außen vor). Da es ja nach Anbieter oder sogar mit dem gleichen Anbieter und unterschiedlichen Ansprechpartner durchaus kuriose Geschichten geben kann, kommt erschwerend hinzu.
Eine öffentliche IPv4-Adresse gibt es im Regelfall nur mit Geschäftskundentarif, sofern verfügbar. Ein Gewerbenachweis kann dafür nötig sein, so mancher Kollege berichtete dabei, das mal danach gefragt wird, mal nicht, also irgendwie nicht einheitlich. Richtig witzig wurde dieses Thema bereits bei freien Berufen, da dort i.d.R. kein Gewerbe angemeldet ist. Ob der Anbieter das dann akzeptiert ist wiederum so eine (weitere) Sache.
Lange Vorrede. Jetzt hat es uns dieses Thema erwischt bei einer Kundin (freier Beruf) und nur ein Vodafone- (vormals Kabel Deutschland) Anschluss vorhanden. Es soll ein VPN verwendet werden, die Daten bleiben im Haus, also eingehend. Vorhanden ist eine AVM FRITZ!BOX 6490 Cable vom Anbieter. Der Anruf bei der Hotline war einigermaßen ernüchternd: Ja, Business-Tarif mit IPv4 wäre möglich, aber erst nach Ablauf der restlichen Vertragslaufzeit (ca. ein Jahr) und andere aktuell genutztes Tarif-Vorteile (TV/Handy/…-Komplettpaket) würden verloren gehen. Man kann sagen: “Doppelautsch” und meiner Meinung nach nicht im Sinne des Kunden, genau genommen auch nicht im Sinne des Anbieters. So lange und mit so vielen Nachteilen konnte und wollte man nicht warten, also musste ein Plan B her.
Dieser sieht so aus, das mit von IPv4 auf IPv6 tunnelt oder wenn man so will umleitet. Das Ganze geht relativ einfach und schnell mit wenig Aufwand von statten. An dieser Stelle kommt ein wenig Linux und das Paket 6tunnel ins Spiel, mit dessen Hilfe das Vorhaben schnell und gut umgesetzt werden kann. Auf diese Weise können recht bequem TCP-Verbindungen von IPv4 auf IPv6 umgeleitet werden. UDP- oder IPsec geht (leider) nicht.
Nebenbei bemerkt: Wem das Einrichten und betreiben eines Root- oder vServer zu aufwendig ist, der kann auf Dienste wie z.B. Feste-IP.Net – Portmapper (kostenpflichtig) zurückgreifen.
Voraussetzungen
Ein Root- oder vServer mit einer öffentlichen IPv4- und IPv6-Adresse und einem beliebigen Linux oder BSD. Nachfolgend wird Debian verwendet.
Zugang zum Provider-/Kabel-Router. In diesem Fall die zuvor erwähnte FRITZ!BOX, die Daten waren der Kundin bekannt, von daher kein Problem.
Die IPv6-Adresse des Routers/der FRITZ!BOX und des dahinter liegenden OpenVPN-Servers müssen bekannt sein. Beides lässt sich am Beispiel der FRITZ!BOX auf der Status-Seite und in der Heimnetzübersicht auslesen:
Ein OpenVPN-Server hinter dem Provider-/Kabel-Router. Das IPsec-basierte VPN der FRITZ!BOX kann aufgrund der Gegebenheiten nicht verwendet werden. Da die Kundin ein Synology-NAS einsetzt, war OpenVPN kein Problem. Alternativ kann z.B. ein Raspberry Pi, pfSense, OPNsense, usw. verwendet werden. Wichtig ist, das man den OpenVPN-Server von “udp” (Voreinstellung/Standard) auf “tcp” umstellen kann.
Schritt 1: Root- oder vServer vorbereiten
Wer (noch) keinen solchen Server hat kann günstig z.B. bei active-servers einen Mieten oder das kostenlose DHP Minipaket von KAMP nutzen. Letztgenanntes wurde für dieses Szenario herangezogen.
Wofür man sich entscheidet ist vom persönlichen Anspruch als auch ggf. den Datenmengen abhängig. KAMP beschränkt auf 10GB mit Gigabitgeschwindigkeit pro Tag (danach wird auf 10Mbit reduziert, kann erweitert werden). Damit kann man imho schonmal was anfangen. Wichtig ist, das man sich alle paar Wochen mal am ControlCenter anmeldet, da man sonst wegen Inaktivität bzw. Nicht-Nutzung rausfliegt.
Da nur ein wenig Netzwerkverkehr durchgeleitet wird, werden keine großartigen Ressourcen benötigt. Von daher Reichen die eine vCPU, der 1GB RAM und die 25GB Storage dicke aus. Als Betriebssystem wird schlicht das aktuelle Debian mit den Vorgaben installiert.
Bei KAMP wird “ab Werk” zunächst keine Verbindung zum vServer zugelassen. Dies verhindert die Firewall des DHP. Das installierte Linux lässt sich über die Konsole des DHP ControlCenter konfigurieren, alternativ kann man “ssh” (Port 22/tcp) freischalten. Für OpenVPN wird der Port “1194/tcp” (Nicht udp!) benötigt. Möchte man auch auf die FRITZ!BOX von extern zugreifen, so ist der entsprechende Port freizuschalten.
Hinweis: Der Port, den die FRITZ!BOX verwendet, wird einmalig dynamisch bei der Einrichtung von z.B. MyFRITZ festgelegt, dieser kann unter “Internet – Freigaben” eingesehen bzw. geändert werden.
Schritt 2: 6tunnel installieren, konfigurieren und automatischen Start einrichten
Läuft der Root- bzw. vServer soweit, kann 6tunnel installiert werden:
apt install 6tunnel
Die Syntax des Tools ist simple:
sudo 6tunnel 1194 <Ziel-IPv6-Adresse_oder_Hostname> 1194
So würde z.B. die Weiterleitung von OpenVPN schon funktionieren. Für jeden Port muss eine eigene 6tunnel-Instanz gestartet werden. Damit das automatisch z.B. nach einem Reboot funktioniert, kann man das Ganze als Shell-Skript verpacken und mittels cron ausführen lassen:
#!/bin/sh # Da das Skript direkt nach dem (Re)Boot ausgefuehrt wird, # erst einen Moment warten sleep 10s # Ggf. vorhandene 6tunnel-Instanzen beenden killall 6tunnel # Pause sleep 10s # 6tunnel starten # FritzBox 6tunnel 49073 <Ziel-IPv6-Adresse_der_FRITZ!BOX> 49073 # OpenVPN 6tunnel 1194 <Ziel-IPv6-Adresse_des_Synology-NAS> 1194
Beim Test gab es direkt nach dem Neustart erstmal Schwierigkeiten, das nicht alle Tunnel aufgebaut wurden, daher die Pause von 10 Sekunden.
Nicht vergessen: Das Skript mittels “chmod +x tunnels.sh” ausführbar machen!
Dieses Shell-Skript muss zwingend mit root-Rechten ausgeführt werden. Daher es im crontab des root-Benutzers eintragen:
sudo crontab -e
@reboot /home/debian/tunnels.sh
Ab nun werden die Tunnel direkt nach dem Neustart, genau genommen nach der Pause, aufgebaut.
Schritt 3: Die FRITZ!BOX-Freigabe(n) einrichten
Die FRITZ!BOX-Firewall muss die Anfragen zu sich selbst bzw. zum OpenVPN-Server durchlassen. Dazu die entsprechenden Freigaben unter “Internet – Freigaben – Portfreigaben” erstellen:
Wichtig: Nur den “Internetzugriff über IPv6” aktivieren, andernfalls klappt es in dieser Konstellation nicht!
Bemerkung: Für die FRITZ!BOX selbst muss keine gesonderte Freigabe erstellt werden, dies geschieht z.B. bei der Einrichtung von MyFRITZ automatisch und wird an dieser Stelle auch nicht angezeigt.
Schritt 4: OpenVPN-Server einrichten
Je nachdem was man für einen OpenVPN-Server betreibt, fällt die Einrichtung unterschiedlich komplex aus. Wie bereits erwähnt kommt hier ein Synology-NAS zum Einsatz, daher ist die Einrichtung sehr einfach:
- Über das “Paket-Zentrum” den “VPN Server” installieren.
- Aus dem Hauptmenü dann “VPN Server” starten.
- Unter “VPN Server einrichten” auf “OpenVPN” klicken.
Wenn man möchte, kann man die Voreinstellungen belassen. Wichtig ist nur das Protokoll von “udp” auf “tcp” zu ändern:
Hinweis: Unter “Privileg” können die VPN-Benutzer eingeschränkt werden. Es sollten nur die Benutzer das Recht haben sich per VPN einzuwählen, für die es relevant ist.
- Abschließend auf “Konfigurationsdatei exportieren” klicken.
Schritt 5: OpenVPN-Client installieren und Einstellungen importieren
Je nach Betriebssystem stehen verschiedene OpenVPN-Clients zur Verfügung. Für Windows z.B. das Original oder die Variante von Securepoint, für MacOS z.B. Tunnelblick, usw. Unter Windows verwende ich gerne den Client von Securepoint, da dieser durch das “versteckte” Protokoll und die bessere farbliche Statusmeldung für den gemeinen Anwender leichter zu verstehen bzw. zu handhaben ist.
Bevor man nun die zuvor exportierte Konfigurationsdatei importiert, muss man das ZIP-Archiv entpacken und die darin enthaltene “VPNConfig.ovpn”-Datei editieren. Bei “YOUR_SERVER_IP” muss die IPv4-Adresse des vServers eingetragen werden. Nun kann die Datei in den jeweiligen OpenVPN-Client importiert werden. Beim (ersten) Verbindungsaufbau wird man nach Benutzername und Kennwort gefragt. Es gelten die gleichen Angaben, wie wenn man z.B. ein Netzaufwerk verbindet.
(Abschluss-)Bemerkung
Die hier vorgestellte Lösung ist nicht der einzige Weg, neben 6tunnel gibt es weitere Optionen, auch ließe sich mittels VPN noch was drehen. Mir erschien dieser Weg neben der Nutzung externer Portmapper-Dienste soweit als möglichst einfachster und kostengünstigster.
Quellen
Björn’s Techblog – Server hinter Unitymedia DS-Lite Anschluss betreiben
bjoerns1983/6tunnel_command.sh
askubuntu – How to set up a root cron job properly
nixCraft – Linux Execute Cron Job After System Reboot
Update 26.06.2018
Zur Info:
Feste-IP.net – Supportforum – Anleitung OpenVpn Unitymedia/DS-Lite Iphone
Neben 6tunnel soll das Ganze, gemeint das Weiterleiten von IPv4 zu IPv6, zudem mittels socat oder xinetd gehen:
serverfault – Use iptables to forward ipv6 to ipv4?
Update 23.07.2020
Links aktualisiert.
Update 23.01.2023
Kleine Korrekturen.
Verheiratet, Vater von zwei Kindern, eines an der Hand, eines im Herzen. Schon immer Technik-Freund, seit 2001 in der IT tätig und seit über 10 Jahren begeisterter Blogger. Mit meiner Firma IT-Service Weber kümmern wir uns um alle IT-Belange von gewerblichen Kunden und unterstützen zusätzlich sowohl Partner als auch Kollegen.
Hallo Wolfgang,
6Tunnel verpackt die IPv4-Pakete in IPv6-Pakete.
Wichtig in Verbindung mit OpenVPN ist das dieser auf TCP (Standard ist UDP) konfiguriert wird, da 6Tunnel nur TCP kann.
Vom vServer aus muss dann der Port 1194/TCP auf die IPv6-Adresse des Raspi weitergeleitet werden.
Die *.ovpn-Dateien für die Clients müssen die IPv4-Adresse des vServers und auch auf TCP eingestellt sein.
Hallo, Vielen Dank für die super Anleitung!
Läuft super bei mir in dieser Kombination.
Könntest du mir bitte nochmal erklären wie ich das Startskript anlege und ausführbar mache?
Linux ist mir noch neu und ich weiß leider nicht wie man so etwas macht.
Danke
Alex
Hallo Alex,
wie weit kommst du denn?
Das Skript an sich kann beispielsweise mit nano oder vim erstellt werden.
Alternativ von Windows aus via WinSCP.
Damit das Skript ausgeführt werden kann muss mit chmod (steht im Beitrag) das entsprechende Recht zugewiesen werden.
Blöde Frage: Der OpenVPN-Server muss dann auch IPv6 können, oder? Leider kann das OpenVPN in QNAP nur IPv4. Aber wenn ich mir die Screenshots aus dem Artikel anschaue, wird doch beim Synology OpenVPN die Option “IPv6-Servermodus aktivieren” gar nicht angekreuzt. Wieso funktioniert das dann? Oder werden die IPv4-Pakete beim NAS dann wieder “ausgepackt”?
Nein, bei diesem Punkt geht es darum, das IPv6 über OpenVPN übertragen werden kann.
Super, danke für die schnelle Antwort. Schade, dann ärgere ich mich jetzt, dass ich mich damals gegen Synology und für QNAP entschieden habe. Naja, dann werde ich halt nen Raspi nehmen und dann gleich auf wireguard statt OpenVPN setzen… Aber dein Artikel hat mir trotzdem weitergeholfen 🙂
Hallo zusammen,
mal für halbwissende: Kann ich damit von unterwegs aus meinem Tablet per Remotedestkopclient auf meinen Heim Desktop PC zugreifen ?
Im WLAN Netzwerk geht das ja schon nativ, aber jeden Versuch den ich bisher gestartet habe von Unterwegs in mein Heimnetzwerk einzugreifen lief vergeblich. Ich möchte mir da ungern nochmehr Arbeit machen.
Ja, aber bloß kein RDP ohne VPN über das Internet nutzen!
Hi, wie sieht es mit einem Home Webserver aus?
Kann dieser an einem DS-Lite Anschluss betrieben werden?
VPN hat bei mir den Webserver nicht erreichbar gemacht von außen.
Cu
Ja, das ist möglich.
I.d.R. wenn es nicht funktioniert liegt es an Firewall, Routing oder Zugriffe von außen oder dem VPN-Netz sind nicht auf den Webserver zugelassen.
Hi Andy,
danke fuer dein Guide. Ist die Ziel IPv6 Adresse die FritzBox oder die Synology? Denke mal die FritzBox, da doch der Port freigegeben wird?
Ist mir irgendwie nicht so ersichtlich, bin neu im Thema.
Danke,
David
Hallo David,
da muss die IPv6-Adresse des Ziel-Geräts, am Beispiel des Beitrags vom Synology NAS, rein.
Dein Gedankengang funktioniert nur für IPv4.
Der Beitrag wurde in dieser Hinsicht etwas überarbeitet.
Moin. Ich beisse mir seit einem Jahr die Zähne aus. Ich habe einen DS Lite Anschluss von Inexio. Bin der Anleitung hier gefolgt. Komme aber immer noch nicht weiter. Der vServer bei Kamp läuft. Ich kann wenn ich Open VPN connect starte auch sehen wie dieser angepingt wird. Jedoch wird die Anfrage abgelehnt. In der Fritzbox habe ich die Portfreigabe Anderes Gerät TCP 1194 Zugriff über IPV6. Im NAS OpenVPN installiert. eine Konfigurationsdatei erstellt. Diese mit der vServer IP bearbeitet und in VPN Connect eingelesen. Das fragt dann noch nach einer Zertifikatsdatei. Das crt Format kann es nicht gebrauchen. Also ohne Zertifikat. Da wird die Verbindung nicht aufgebaut. Ich habe keine Idee mehr.
Sehr einfach lässt sich diese DS-Lite Thematik auch mit einem einfachen, preiswerten vServer bei einem Provider lösen und den klassischen VPN Clients die jedes Betriebssystem immer mit an Bord hat.
Eine sehr genaue Beschreibung für so ein einfaches Jumphost Setup findet man hier:
https://administrator.de/tutorial/ikev2-vpn-server-fuer-windows-und-apple-clients-mit-raspberry-pi-1754377434.html
Ohne Zertifikat wird das nicht funktionieren, da PSK von Synology meines Wissens nach nicht unterstützt wird.
Wie sehen denn die Logs von OpenVPN-Server und -Client aus?
Im Beitrag wird unter anderem ein vServer verwendet. Dies wird unter anderem bei den Voraussetzungen erwähnt.
Ob nun IPsec IKEv2 einfacher ist mag Geschmackssache sein.
Grundsätzlich gibt es mehrere Wege wie man das Thema angehen kann.
Port-Mapper wie 6tunnel oder socat sind da ein (sehr einfacher) Weg und VPN-Lösungen ein anderer Weg.
Zu letzterem gibt es ebenfalls mehrere Beiträge:
https://www.andysblog.de/?s=ds-lite
Ich habe es auch schon in anderen Foren versucht.
Normalerweise bekomme ich sowas hin.
Hier beisse ich mir jedoch die Zähne aus.
Hatte auch schon vorgeschlagen einer schaut mal per Teamviewer in meine Fritte.
Aber ich bekomme immer nur Sprüche. Ich total doof. Andere total schlau.
Aber wirksam helfen will da niemand.
Es ist da sehr frustrierend.
Das im Beitrag beschrieben Konstrukt habe ich 2018 erfolgreich gebaut und da lief das alles.
Soweit mir bekannt ist sollte das auch heute noch oder so ähnlich gehen.
Das eine oder andere Update wurde ja gepostet.
> Ich kann wenn ich Open VPN connect starte auch sehen wie dieser angepingt wird. Jedoch wird die Anfrage abgelehnt.
Wo genau sieht du das?
Poste bitte mal anonymisiert die Logs von beiden OpenVPN-Seiten.
Ansonsten: Ab Montag 09:00 Uhr bin ich wieder in der Firma erreichbar und kann mal per pcvisit schauen: https://its-weber.de/
Ich sehe das im Server Log online. Das kann ich aufrufen. Da sehe ich dann wie von einer IP permanent versucht wird über den Port 1194 zu kommen.
Das muss die IP sein die aus dem CGNAT resultiert.
So lange bis der VPN Connect auf gibt. Dann ist da wieder Ruhe.
Ich bin jetzt auch nicht daheim. Komme an das OpenVPN log daheim nicht ran.
Erst Sonntag Abend vermutlich. Oder Montag. Oder Dienstag.
Hängt am Streik. Weiß noch nicht wann und wie es heim geht.
Auf Server-Seite muss beim Verbindungsaufbau die öffentliche IPv6-Adresse des vServers erscheinen, da ja die Verbindung des Clients von IPv4 auf IPv6 durch 6tunnel auf dem vServer “übersetzt” wird.
Ist das nicht der Fall, stimmt vmtl. etwas mit der 6tunnel- oder Client-Konfiguration nicht.