- Anzeige -

HOWTO: VPN vom Handy auf LAN hinter DS-Lite

In vielen Netzen von Unitymedia sind Internet und Telefonie bereits verfügbar.
Wichtig:
  • Kunden aus Hessen und Nordrhein-Westfalen können über die Rufnummer 0221 / 466 191 00 Hilfe bei allen Problemen in Anspruch nehmen.
  • Kunden aus Baden-Württemberg können über die Rufnummer 0711 / 54 888 150 Hilfe bei allen Problemen in Anspruch nehmen.

HOWTO: VPN vom Handy auf LAN hinter DS-Lite

Beitragvon linuzer » 08.04.2015, 19:28

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:
  • Kabelanschluss mit DS-Lite von UnityMedia
  • Kabel-Fritzbox 6490
  • Weitere offene Fritzbox verfügbar (in meinem Fall eine 7390)
Ziel:
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.
Bild
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/
Bild
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: Alles auswählen
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>

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:
Bild

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: Alles auswählen
lan 2a02:908:b3a8:160:224:fabf:fe9d:114f/64

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:
Code: Alles auswählen
ip -6 route add default via fe80::3681:c5ff:fed8:a382 dev lan

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:
Bild

Dann weiter auf "IPv6-Adressen" klicken und folgendes einstellen:
Bild
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:
Bild

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
linuzer
Kabelneuling
 
Beiträge: 1
Registriert: 08.04.2015, 15:37

Re: HOWTO: VPN vom Handy auf LAN hinter DS-Lite

Beitragvon jokerkrefeld » 09.04.2015, 17:50

Hallo.
Da hast du eine sehr gute Anleitung geschrieben. Hätte mir sehr geholfen und viele Stunden und Tage rumtüftelei gespart. Hab es fast genau wie du eingerichtet, nur statt einer 2. Fritzbox habe ich ne Synology Diskstation auf der ein VPN-Server läuft und das ohne irgendwelche Einschränkungen, alle Routen werden Automatisch angelegt. Für 5€ im Jahr endlich wieder uneingeschränkten zugriff auf mein Heimnetzwerk vom Handy aus.
jokerkrefeld
Kabelneuling
 
Beiträge: 3
Registriert: 09.04.2015, 17:41

Re: HOWTO: VPN vom Handy auf LAN hinter DS-Lite

Beitragvon SpaceRat » 15.04.2015, 13:50

linuzer hat geschrieben:bei einem Präfix-Wechsel die IPv6-Adresse für die 7390 von Hand angepasst werden muss


Versuche doch mal mit Freetz die folgende Einstellung:
conf/interface/*/accept_ra
zu überschreiben.

Neben den wohldokumentierten Werten
0 = keine Router-Advertisements akzeptieren (Wird dämlicher Weise auch implizit aktiv wenn "forwarding=1" gesetzt wird).
1 = Router-Advertisements akzeptieren (Wird implizit deaktiviert wenn "forwarding=1")

gibt es noch den mies dokumentierten Wert
2 = Router Advertisements immer akzeptieren (Auch bei "forwarding=1")!

Das ist auch wieder so ein Grund, wieso Linux nicht einmal 2% Marktanteil überschritten kriegt, was ja selbst CrApple schafft:
Nichts funktioniert so, wie es geschrieben steht!

Und bei "accept_ra – BOOLEAN" braucht man eigentlich nicht mehr weitersuchen, denn boolsch heißt eben 0/1, false/true bzw. no/yes, aber nicht tri-state mit einem dritten Wert "2".
In Wirklichkeit ist accept_ra kein boolscher Wert, sondern ein Integer-Wert mit den sinnvollen Werten 0, 1 und 2 ...

accept_ra=2 sollte es der Fritz!Box also ermöglichen, einerseits IPv6-Pakete an Clients zu forwarden und trotzdem auch selber automagisch eine IPv6 zu beziehen.
Receiver/TV:
  • Vu+ Duo² 4xS2 / OpenATV 5.3@Samsung 50" Plasma
  • AX Quadbox HD2400 2xS2 / OpenATV 6.0@Samsung 32" TFT
  • 2xVu+ Solo² / OpenATV 6.0
  • DVBSky S2-Twin PCIe@SyncMaster T240HD (PC)
  • TechniSat SkyStar HD2@17" (2.PC)
Pay-TV: Schwarzfunk, Redlight Elite Mega HD, Brazzers, XXL, HD-, Sky
Fon: VF Komfort-Classic (ISDN), Siemens S79H+S1+Telekom Modula+Siedle DoorCom Analog@F!B 7390
Internet: UM 1play 100 / Cisco EPC3212+Linksys WRT1900ACS / IPv4 (UM) + IPv6 (HE)
Bild
Benutzeravatar
SpaceRat
Kabelkopfstation
 
Beiträge: 2619
Registriert: 08.05.2010, 01:30
Wohnort: Kreis Aachen


Zurück zu Internet und Telefon über das TV-Kabelnetz

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], Google [Bot] und 25 Gäste