linuzer
- Beiträge
- 1
- Punkte Reaktionen
- 0
Hallo Leidensgenossen,
da ich jetzt mehrere Wochen damit verbracht habe das Internet rauf und runter zu Googeln, um einfach wieder per VPN vom Handy auf mein Netz zuzugreifen und dabei feststellen musste, dass das alles andere als trivial ist, wollte ich meine Erkenntnisse und Lösungen gerne anderen zur Verfügung stellen:
Meine Situation und Ausgangsbasis:
Ich bin es von meinem alten DSL-Anschluss gewohnt per Fritz-VPN vom Handy auf das LAN zuzugreifen, um z.B. per Fritz-App über das Festnetz zu telefonieren, oder auf Dokumente auf einer Netzwerk-Share zuzugreifen. Das soll alles wieder gehen. Dabei möchte ich so weit wie möglich keine Zusatzkosten haben und eine zukunftsorientierte Lösung anstreben. D.h. einfach einen RasPi hinstellen mit (kostenpflichtigem) IPv4-Tunnel, um direkt aus dem IPv4-Netz wieder erreichbar zu sein erschien mir nicht wirklich sinnvoll.
Lösung:
Das Hauptproblem bei der Geschichte ist die direkte Inkompatibilität zwischen IPv4 und IPv6. Da die Mobilfunkprovider bisher noch keine IPv6-Adressen vergeben, kann man also nicht vom Handy auf IPv6-Only Server zugreifen. Die Problematik ist hinlänglich bekannt und ich möchte sie hier nicht weiter vertiefen.
Bei DSL-Anschlüssen kann eine IPv6-Konnektivität i.d.R. sehr einfach über 2 Haken in der Fritzbox hergestellt werden, d.h. hier gibt es kein echtes Problem einfach über IPv6 auf "zu Hause" zuzugreifen. Anders ist dies beim Mobilfunk.
Zur Lösung verwende ich den Portmapper von feste-ip.net, der einen eingehenden IPv4-Verkehr auf den Ziel-Port 1194 meiner 6490 auf IPv6 leitet. Da sich die IPv6-Adresse ändern könnte, verwende ich den DynDNS-Dienst von MyFritz. Auf der 6490 gibt es eine Portfreigabe für 1194 auf die 7390. Die ist gefreetz, läuft im IP-Client-Modus und führt einen OpenVPN-Server aus, der die VPN entgegen nimmt und ins LAN leitet. Somit kann ich aus dem Mobilfunk über die OpenVPN-App eine IPv4-VPN aufbauen, die über feste-IP.net als IPv6-VPN an meiner 7390 ankommt und mir Zugriff auf mein ganzes LAN gibt. Das ist der Überblick, jetzt kommen die Details:
Freetz-Image:
Unter Packages das "OpenVPN"-Paket auswählen. Sehr wahrscheinlich ist wegen der Größe auch eine "Externisierung" (=Auslagerung auf USB-Stick) der Pakete nötig.
Danach das Image aufspielen, nicht das Paket für die externen Dateien vergessen.
Konfiguration OpenVPN:
Für den OpenVPN sind Zertifikate notwendig, die man von einer (eigenen) Zertifizierungsstelle bekommen muss. Wie man selbst eine solche aufsetzt würde jetzt hier den Rahmen sprengen, das ist aber nicht schwer und es gibt zahlreiche Tutorials im Netz. Kleiner Tipp: Ich arbeite mit http://sourceforge.net/projects/xca/
Die Settings sind eigentlich selbsterklärend, insbesondere durch die Erklärungen in den Tooltips.
Zu Beachten ist, dass wir hier unbedingt eine TUN-VPN wählen müssen, sowie als Protokoll TCP, weil feste-ip.net nur TCP-Pakete weiterleitet! Auch IPv6 ist anzuhaken.
Rechts sind in den Kategorien unterhalb von "Einstellungen" noch die Zertifikate wie folgt einzutragen:
Box Cert: Server Zertifikat für die VPN-Verbindung
CA Cert: Öffentliches RootCA-Zertifikat, mit dem das Server-Zertifikat unterschrieben ist
CRL: nicht notwendig
DH Param: die erstellten Diffie-Hellman Parameter
Private Key: der private Schlüssel, mit dem das Server-Zertifikat unter "Box Cert" erstellt wurde
Static Key: nicht notwendig
OpenVPN-Client:
Hier ist die Konfig-Datei für den Client:
Diese muss in die App OpenVPN eingefügt werden (in meinem Fall ging das über iTunes). Ausserdem muss das verwendete Root-Zertifikat als vertrauenswürdiges Zertifikat auf dem Handy Installiert werden. Bei iOS geht das per Email, bei Android weiss ich es nicht.
Konfiguration der 7390:
Ich lasse meine 7390 im IP-Client Modus laufen, da ich zum einen nur ein Kabel zur 6490 habe, zum anderen soll sie das gleiche WLAN wie die 6490 aufspannen, um so die Reichweite zu erhöhen. Deswegen hängt ein Teil meines LANs an der 6490, ein anderer Teil an der 7390. Am Ende möchte ich aber auf alles per VPN zugreifen können. Mit der 7390 im Router-Modus habe ich das nicht hinbekommen. Unter "Internet" - "Zugangsdaten" die Box also wie folgt konfigurieren:
Da sich die Fritzbox im IP-Client-Modus leider nicht automatisch eine IPv6-Adresse von der 6490 holt (warum auch immer, in meinen Augen ist das ein Bug!), müssen wir das von Hand erledigen. Dazu müssen wir uns die IPv6-Adresse erst "zusammenbauen" aus dem aktuellen Präfix, das man in der 6490 auf der Übersichtsseite nachschauen kann, z.B.: "2a02:908:b3a8:160" (ich habe alle Adressen verfälscht)
Das wird ergänzt durch den Interface-Teil der Fritzbox 7390, den man am besten in der 6490 nachsieht unter "Heimnetz" - "Netzwerk" - "Geräte und Benutzer". Wenn man dort bei dem Eintrag für die andere Fritzbox (7390) auf "Bearbeiten" klickt, sieht man die Link-lokale IPv6-Adresse, die mit "fe80::" beginnt, z.B. "fe80::224:fabf:fe9d:114f". Hier interessiert uns nur der hintere Interface-Teil, der zusammen mit dem öffentlichen Präfix zu einer vollständigen, öffentlichen IPv6-Adresse wird, in diesem Beispiel: "2a02:908:b3a8:160:224:fabf:fe9d:114f"
Diese trägt man dann auf der 7390 im Freetz WebUI unter "Freetz" - "Einstellungen" ganz unten unter "IPv6" folgendermaßen ein:
Da sich der zugewiesene Präfix von Zeit zu Zeit ändern kann, muss das bei jedem Wechsel erneut gemacht werden. Ich habe es bisher noch nicht geschafft, einen DHCP-Client für IPv6 auf der 7390 zum Laufen zu bekommen, der diesen Schritt abnehmen würde, aber vielleicht hat ja jemand eine gute Idee...
Jetzt fehlt nur noch eine Default-Route, um die 7390 mit dem IPv6-Internet zu Verbinden. Dazu braucht man die interne IPv6-Adresse der 6490, die nämlich als Gateway eingetragen werden muss. Man sieht sie auf der 6490 unter "Heimnetz" - "Netzwerk" - "Netzwerkeinstellungen", wenn man dort weiter unten auf "IPv6-Adressen" klickt. Dort wird die "Unique Local Address Ihrer FRITZ!Box" angezeigt. Wir brauchen den hinteren Teil, ohne "fd00::" und ohne "/64", z.B. "3681:c5ff:fed8:a382"
Somit kann man in einer Telnet-Session auf der 7390 jetzt die fehlende Route folgendermassen eintragen:
Eigentlich gehört dieser Eintrag unter Freetz in die rc.custom, wo er bei jedem Neustart der Box automatisch ausgeführt wird, allerdings hat das bei mir nicht funktioniert. Der Befehl wurde zwar ausgeführt, aber die Route hat nicht funktioniert. Ich musste sie in Telnet von Hand löschen und (identisch!) wieder anlegen, dann ging es.... sehr merkwürdig!
Damit sollte die 7390 bereits in der Lage sein IPv6-Seiten im Internet, z.B. six.heise.de anzupingen. Man kann das über eine Telnet-session mit ping6 überprüfen.
Konfiguration der 6490:
Die 6490 sollte bei MyFritz registriert sein. Dann kann man unter "Internet" - "Freigaben" eine neue MyFritz-Freigabe einrichten. Dabei als Netzwerkgerät die 7390 auswählen, Anwendung ist "andere Anwendung", Bezeichnung ist egal, Schema ist "http://" (das ist eigentlich auch egal, aber nur so kann man einen Port angeben), Port ist 1194 (oder der, den man im OpenVPN-Server konfiguriert hat). Wenn man das ganze speichert, sieht man in der Übersicht jetzt den öffentlichen Namen der 7390 - unseres OpenVPN-Servers. Dieser Name zusammen mit den Port 1194 muss im Account von feste-ip.net als Zielserver eingetragen werden.
Unter "Heimnetz" - "Netzwerk" - "Netzwerkeinstellungen" noch folgende Einstellungen vornehmen:
Dann weiter auf "IPv6-Adressen" klicken und folgendes einstellen:
Damit ist die 6490 als DHCPv6 Server im LAN konfiguriert.
Damit die LAN-Geräte auch auf Anfragen über die VPN antworten können, ist noch eine statische IPv4-Route für den Rückverkehr nötig. Dazu hier auf "IPv4-Routen" klicken und folgendes eintragen:
feste-ip.net Account
Der Portmapper-Account kostet nach einer 50-tägigen Testphase im Jahr knapp 5 € und ist das billigste, was ich zur Lösung des Problems gefunden habe. Nach der Registrierung legt man einen "Universellen Portmapper" an für den Ziel-Host, der in der 6490 als MyFritz-Freigabename für die 7390 angezeigt wurde, also z.B. fritzbox7390.kryptname.myfritz.net. Als Ziel-Port wählt man 1194 (oder den OpenVPN-Server-Port). Dann wird einem ein zufälliger IPv4-Port zugewiesen für den Hostnamen, den man gewählt hat, in diesem Beispiel: meinhost.feste-ip.net:23027
Dieser Name muss in der OpenVPN-Client config als Ziel eingetragen werden und der zugewiesene Port als VPN-Port. Auf diesen Namen müssen auch die Zertifikate ausgestellt sein!
Abschließend, known issues, etc...
Damit sollte eigentlich alles konfiguriert sein, und wenn man alles richtig gemacht hat, sollte man auf dem Handy in der Lage sein die VPN zu starten und die Fritz-App sollte sich verbinden. Auch Pings und Zugriffe auf andere Geräte sollten möglich sein.
Natürlich gibt es 2 Punkte, die im Moment noch wirklich unschön sind, nämlich dass bei einem Präfix-Wechsel die IPv6-Adresse für die 7390 von Hand angepasst werden muss und dass bei einem Neustart der 7390 die Default-Route nicht automatisch angelegt wird, sodass sie auch funktioniert. Für beides werde ich weiter nach einer Lösung suchen und diese hier posten. Falls jemand dafür schon eine Lösung haben sollte, ... nur her damit ;-)
Überhaupt werde ich diesen Post aktuell halten, wenn Änderungen nötig sind, oder sich Fehler eingeschlichen haben sollten.
Viel Erfolg beim Nachbauen!
Gruß,
linuzer
da ich jetzt mehrere Wochen damit verbracht habe das Internet rauf und runter zu Googeln, um einfach wieder per VPN vom Handy auf mein Netz zuzugreifen und dabei feststellen musste, dass das alles andere als trivial ist, wollte ich meine Erkenntnisse und Lösungen gerne anderen zur Verfügung stellen:
Meine Situation und Ausgangsbasis:
- Kabelanschluss mit DS-Lite von UnityMedia
- Kabel-Fritzbox 6490
- Weitere offene Fritzbox verfügbar (in meinem Fall eine 7390)
Ich bin es von meinem alten DSL-Anschluss gewohnt per Fritz-VPN vom Handy auf das LAN zuzugreifen, um z.B. per Fritz-App über das Festnetz zu telefonieren, oder auf Dokumente auf einer Netzwerk-Share zuzugreifen. Das soll alles wieder gehen. Dabei möchte ich so weit wie möglich keine Zusatzkosten haben und eine zukunftsorientierte Lösung anstreben. D.h. einfach einen RasPi hinstellen mit (kostenpflichtigem) IPv4-Tunnel, um direkt aus dem IPv4-Netz wieder erreichbar zu sein erschien mir nicht wirklich sinnvoll.
Lösung:
Das Hauptproblem bei der Geschichte ist die direkte Inkompatibilität zwischen IPv4 und IPv6. Da die Mobilfunkprovider bisher noch keine IPv6-Adressen vergeben, kann man also nicht vom Handy auf IPv6-Only Server zugreifen. Die Problematik ist hinlänglich bekannt und ich möchte sie hier nicht weiter vertiefen.
Bei DSL-Anschlüssen kann eine IPv6-Konnektivität i.d.R. sehr einfach über 2 Haken in der Fritzbox hergestellt werden, d.h. hier gibt es kein echtes Problem einfach über IPv6 auf "zu Hause" zuzugreifen. Anders ist dies beim Mobilfunk.
Zur Lösung verwende ich den Portmapper von feste-ip.net, der einen eingehenden IPv4-Verkehr auf den Ziel-Port 1194 meiner 6490 auf IPv6 leitet. Da sich die IPv6-Adresse ändern könnte, verwende ich den DynDNS-Dienst von MyFritz. Auf der 6490 gibt es eine Portfreigabe für 1194 auf die 7390. Die ist gefreetz, läuft im IP-Client-Modus und führt einen OpenVPN-Server aus, der die VPN entgegen nimmt und ins LAN leitet. Somit kann ich aus dem Mobilfunk über die OpenVPN-App eine IPv4-VPN aufbauen, die über feste-IP.net als IPv6-VPN an meiner 7390 ankommt und mir Zugriff auf mein ganzes LAN gibt. Das ist der Überblick, jetzt kommen die Details:
Freetz-Image:
Unter Packages das "OpenVPN"-Paket auswählen. Sehr wahrscheinlich ist wegen der Größe auch eine "Externisierung" (=Auslagerung auf USB-Stick) der Pakete nötig.

Danach das Image aufspielen, nicht das Paket für die externen Dateien vergessen.
Konfiguration OpenVPN:
Für den OpenVPN sind Zertifikate notwendig, die man von einer (eigenen) Zertifizierungsstelle bekommen muss. Wie man selbst eine solche aufsetzt würde jetzt hier den Rahmen sprengen, das ist aber nicht schwer und es gibt zahlreiche Tutorials im Netz. Kleiner Tipp: Ich arbeite mit http://sourceforge.net/projects/xca/

Die Settings sind eigentlich selbsterklärend, insbesondere durch die Erklärungen in den Tooltips.
Zu Beachten ist, dass wir hier unbedingt eine TUN-VPN wählen müssen, sowie als Protokoll TCP, weil feste-ip.net nur TCP-Pakete weiterleitet! Auch IPv6 ist anzuhaken.
Rechts sind in den Kategorien unterhalb von "Einstellungen" noch die Zertifikate wie folgt einzutragen:
Box Cert: Server Zertifikat für die VPN-Verbindung
CA Cert: Öffentliches RootCA-Zertifikat, mit dem das Server-Zertifikat unterschrieben ist
CRL: nicht notwendig
DH Param: die erstellten Diffie-Hellman Parameter
Private Key: der private Schlüssel, mit dem das Server-Zertifikat unter "Box Cert" erstellt wurde
Static Key: nicht notwendig
OpenVPN-Client:
Hier ist die Konfig-Datei für den Client:
Code:
<i>
</i>client
remote meinhost.feste-ip.net 23027
proto tcp
dev tun
ns-cert-type server
tun-mtu 1500
float
mssfix
nobind
pull
cipher AES-128-CBC
comp-lzo
verb 3
keepalive 10 120
<ca>
-----BEGIN CERTIFICATE-----
MIIFJ..........................
...............................
...................MfXnqS1+rRc5
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
MIIEuTCCA.....................
..............................
...........IOi+RxRpomKGrQ4YOvI
8A4CkaMcPHK1m2VlZA==
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
MIIEv........................
.............................
..................1UOjoiVbdY=
-----END PRIVATE KEY-----
</key>
Konfiguration der 7390:
Ich lasse meine 7390 im IP-Client Modus laufen, da ich zum einen nur ein Kabel zur 6490 habe, zum anderen soll sie das gleiche WLAN wie die 6490 aufspannen, um so die Reichweite zu erhöhen. Deswegen hängt ein Teil meines LANs an der 6490, ein anderer Teil an der 7390. Am Ende möchte ich aber auf alles per VPN zugreifen können. Mit der 7390 im Router-Modus habe ich das nicht hinbekommen. Unter "Internet" - "Zugangsdaten" die Box also wie folgt konfigurieren:

Da sich die Fritzbox im IP-Client-Modus leider nicht automatisch eine IPv6-Adresse von der 6490 holt (warum auch immer, in meinen Augen ist das ein Bug!), müssen wir das von Hand erledigen. Dazu müssen wir uns die IPv6-Adresse erst "zusammenbauen" aus dem aktuellen Präfix, das man in der 6490 auf der Übersichtsseite nachschauen kann, z.B.: "2a02:908:b3a8:160" (ich habe alle Adressen verfälscht)
Das wird ergänzt durch den Interface-Teil der Fritzbox 7390, den man am besten in der 6490 nachsieht unter "Heimnetz" - "Netzwerk" - "Geräte und Benutzer". Wenn man dort bei dem Eintrag für die andere Fritzbox (7390) auf "Bearbeiten" klickt, sieht man die Link-lokale IPv6-Adresse, die mit "fe80::" beginnt, z.B. "fe80::224:fabf:fe9d:114f". Hier interessiert uns nur der hintere Interface-Teil, der zusammen mit dem öffentlichen Präfix zu einer vollständigen, öffentlichen IPv6-Adresse wird, in diesem Beispiel: "2a02:908:b3a8:160:224:fabf:fe9d:114f"
Diese trägt man dann auf der 7390 im Freetz WebUI unter "Freetz" - "Einstellungen" ganz unten unter "IPv6" folgendermaßen ein:
Code:
lan 2a02:908:b3a8:160:224:fabf:fe9d:114f/64
Jetzt fehlt nur noch eine Default-Route, um die 7390 mit dem IPv6-Internet zu Verbinden. Dazu braucht man die interne IPv6-Adresse der 6490, die nämlich als Gateway eingetragen werden muss. Man sieht sie auf der 6490 unter "Heimnetz" - "Netzwerk" - "Netzwerkeinstellungen", wenn man dort weiter unten auf "IPv6-Adressen" klickt. Dort wird die "Unique Local Address Ihrer FRITZ!Box" angezeigt. Wir brauchen den hinteren Teil, ohne "fd00::" und ohne "/64", z.B. "3681:c5ff:fed8:a382"
Somit kann man in einer Telnet-Session auf der 7390 jetzt die fehlende Route folgendermassen eintragen:
Code:
ip -6 route add default via fe80::3681:c5ff:fed8:a382 dev lan
Damit sollte die 7390 bereits in der Lage sein IPv6-Seiten im Internet, z.B. six.heise.de anzupingen. Man kann das über eine Telnet-session mit ping6 überprüfen.
Konfiguration der 6490:
Die 6490 sollte bei MyFritz registriert sein. Dann kann man unter "Internet" - "Freigaben" eine neue MyFritz-Freigabe einrichten. Dabei als Netzwerkgerät die 7390 auswählen, Anwendung ist "andere Anwendung", Bezeichnung ist egal, Schema ist "http://" (das ist eigentlich auch egal, aber nur so kann man einen Port angeben), Port ist 1194 (oder der, den man im OpenVPN-Server konfiguriert hat). Wenn man das ganze speichert, sieht man in der Übersicht jetzt den öffentlichen Namen der 7390 - unseres OpenVPN-Servers. Dieser Name zusammen mit den Port 1194 muss im Account von feste-ip.net als Zielserver eingetragen werden.
Unter "Heimnetz" - "Netzwerk" - "Netzwerkeinstellungen" noch folgende Einstellungen vornehmen:

Dann weiter auf "IPv6-Adressen" klicken und folgendes einstellen:

Damit ist die 6490 als DHCPv6 Server im LAN konfiguriert.
Damit die LAN-Geräte auch auf Anfragen über die VPN antworten können, ist noch eine statische IPv4-Route für den Rückverkehr nötig. Dazu hier auf "IPv4-Routen" klicken und folgendes eintragen:

feste-ip.net Account
Der Portmapper-Account kostet nach einer 50-tägigen Testphase im Jahr knapp 5 € und ist das billigste, was ich zur Lösung des Problems gefunden habe. Nach der Registrierung legt man einen "Universellen Portmapper" an für den Ziel-Host, der in der 6490 als MyFritz-Freigabename für die 7390 angezeigt wurde, also z.B. fritzbox7390.kryptname.myfritz.net. Als Ziel-Port wählt man 1194 (oder den OpenVPN-Server-Port). Dann wird einem ein zufälliger IPv4-Port zugewiesen für den Hostnamen, den man gewählt hat, in diesem Beispiel: meinhost.feste-ip.net:23027
Dieser Name muss in der OpenVPN-Client config als Ziel eingetragen werden und der zugewiesene Port als VPN-Port. Auf diesen Namen müssen auch die Zertifikate ausgestellt sein!
Abschließend, known issues, etc...
Damit sollte eigentlich alles konfiguriert sein, und wenn man alles richtig gemacht hat, sollte man auf dem Handy in der Lage sein die VPN zu starten und die Fritz-App sollte sich verbinden. Auch Pings und Zugriffe auf andere Geräte sollten möglich sein.
Natürlich gibt es 2 Punkte, die im Moment noch wirklich unschön sind, nämlich dass bei einem Präfix-Wechsel die IPv6-Adresse für die 7390 von Hand angepasst werden muss und dass bei einem Neustart der 7390 die Default-Route nicht automatisch angelegt wird, sodass sie auch funktioniert. Für beides werde ich weiter nach einer Lösung suchen und diese hier posten. Falls jemand dafür schon eine Lösung haben sollte, ... nur her damit ;-)
Überhaupt werde ich diesen Post aktuell halten, wenn Änderungen nötig sind, oder sich Fehler eingeschlichen haben sollten.
Viel Erfolg beim Nachbauen!
Gruß,
linuzer