Glasfaser und CGNAT – Der Weg ins Heimnetz ist gar nicht so leicht…

Glasfaser und CGNAT – Der Weg ins Heimnetz ist gar nicht so leicht…

Endlich liegt die Glasfaser-Leitung, das Heimnetz ist mit einer richtig guten Geschwindigkeit ans Internet angebunden. Doch, Moment… was ist denn da los?! Wenn es dir so geht, wie mir, bist du vielleicht überrascht, dass plötzlich deine VPN-Verbindung von anderen Netzwerken nach Hause in dein Heimnetz nicht mehr klappt.

Was bitteschön ist denn nun CGNAT?!

Tja, gerade eben hast du dich noch über deine hohe Geschwindigkeit gefreut und jetzt musst du feststellen: Du teilst dir deine „öffentliche“ IPv4-Adresse mit anderen Kund:innen deines Providers.

Das bedeutet: Zwischen deinem Heimnetz und dem öffentlichen Internet steckt nicht nur dein eigener Router, sondern noch weitere Geräte deines Providers. Und durch die kommst du nicht hindurch (Stichwort: Portfreigabe), denn du kannst zwar Geräte hinter deinem Router so freigeben, dass sie von außerhalb deines Routers erkannt werden können, aber außerhalb deines Routers befindet sich leider nicht das öffentliche Internet, sondern weitere Netzwerkschichten deines Providers.

Und was mache ich jetzt? Kann ich VPN jetzt vergessen?!

Die gute Nachricht lautet: Nein, alles wird gut! Voraussichtlich… Denn was mein Anbieter mir zuteilt sind individuelle IPv6-Adressen. Und, wenn ich die Idee hinter IPv6 richtig verstanden habe, soll das auch so bleiben. Eine Übersetzung von Netzwerkadressen (wie bei IPv4 üblich) soll bei IPv6 im Regelfall nicht stattfinden, sodass wirklich jedes Gerät eine eigene IPv6-Adresse bekommt.

Und wenn dein Router einigermaßen aktuell und auch noch richtig konfiguriert ist, dann kommt er auch schon mit IPv6 klar und ist darüber direkt aus dem Internet erreichbar. Aus allen Netzen, die selbst IPv6 unterstützen, kann also eine VPN-Verbindung problemlos aufgebaut werden.

Aber einen Haken gibt’s, oder?!

Es gibt wirklich noch einen kleinen Haken, sonst würde sich ja ein Blog-Artikel nicht lohnen! Und der besteht darin, dass dein VPN nur aus Netzen erreichbar ist, die IPv6 unterstützen – und das sind eben noch nicht alle. Heimnetze, die noch nicht entsprechend konfiguriert sind, öffentliche WLANs in Restaurants oder Hotels und auch einige berufliche Netzwerke unterstützen noch keinen Zugang über IPv6. Dann klappt natürlich auch die Verbindung nach Hause nicht.

Die Rettung heißt hier: VPS. Ein virtueller privater Server. So etwas kannst du dir anmieten – mitsamt eigener IPv4-Adresse. Ich zahle für meinen um die 5 Euro im Monat und hoste mir dort gleich noch eine eigene Nextcloud mit 100GB Speicher, über die ich viel mehr Kontrolle habe, als über vergleichbare Cloud-Dienstleistungen der großen Firmen.

Über ein paar einfache Kommandozeilenbefehle kannst du Datenverkehr, der über einen bestimmten Port deiner IPv4-Adresse ankommt auf eine IPv6-Adresse weiterleiten. Dieser Mechanismus ermöglicht, dass du dich – statt gleich mit deinem Router zuhause – aus IPv4-Netzen eben erst mit deinem VPS verbindest, der den Datenverkehr dann über IPv4 tunnelt.

Und so geht das dann

Vorausgesetzt, auf deinem VPS läuft Linux, kannst du dann mit dem Befehl „socat“ verschiedene Tunnel öffnen:

socat UDP4-LISTEN:PORT,fork,reuseaddr,su=nobody UDP6:IP-HOSTNAME:PORT

Beispiel:

socat UDP4-LISTEN:80,fork,reuseaddr,su=nobody UDP6:12345.myfritz.net:80

So wäre der Port 80 des eigenen Servers weitergeleitet an die Adresse 12345.myfritz.net (ebenfalls an Port 80). Anstatt UDP-Ports weiterzuleiten (UDP4-LISTEN) sind auch andere Protokolle (TCP4-LISTEN) möglich. Eine genaue Übersicht gibt es hier.

Script erstellen und als Service starten

Damit das Ganze dann auch immer funktioniert – also zum Beispiel auch nach einem Neustart deines VPS – legst du dir idealerweise noch ein Shell-Script an und lässt es beim Systemstart als Service starten.

Shell-Script anlegen und bearbeiten:

sudo nano /etc/vpstunnel.sh

Das Shell-Script kann beispielsweise so aussehen:

#!/bin/bash 
# Da das Skript direkt nach dem (Re)Boot ausgefuehrt wird,
# erst einen Moment warten
sleep 10s
# Ggf. vorhandene socat-Instanzen beenden
killall socat &
# Neue socat-Instanz(en) starten
/usr/bin/socat UDP4-LISTEN:12345,fork,reuseaddr,su=nobody UDP6:123abc456def789ghi.myfritz.net:12345

Script ausführbar machen:

chmod +x /etc/vpstunnel.sh

Service zum Script erstellen:

sudo nano /lib/systemd/system/vpstunnel.service

Der Service kann beispielsweise so aussehen:

[Unit]
Description=Tunnel ins Heimnetzwerk
[Service]
ExecStart=/etc/vpstunnel.sh
[Install]
WantedBy=multi-user.target

Service starten und aktivieren:

sudo systemctl daemon-reload
sudo systemctl enable vpstunnel.service
sudo systemctl start vpstunnel.service

Fertig! Jetzt startet dein VPS immer automatisch auch deinen eben erstellten Service, der dir einen Tunnel aus einem reinen IPv4-Netzwerk auf die IPv6-Adresse deines Heimnetz-Routers erstellt.

Noch ein kleiner Hinweis zum Schluss…

Wenn es so noch nicht klappt, ist vermutlich eine Firewall auf deinem VPS aktiv. Und das ist auch gut so! Die blockt erst einmal allen Datenverkehr, der nicht bekannt ist.

Du musst also deiner Firewall noch sagen, dass sie deine Ports öffnen soll. Wie genau das geht, liest du am besten in der Dokumentation deiner Linux-Distribution nach.

Bei Ubuntu nennt sich die Firewall beispielsweise „ufw“ – mehr dazu gibt es hier.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.