FRITZ!

Seit geraumer Zeit ist eine VPN-Verbindung aus dem Internet mit der FRITZ!Box zu Hause oder im Office über IPv4 nicht mehr möglich. Der Hauptgrund ist das Aussterben von IPv4 und die damit verbundene Umstellung auf IPv6. Es mag noch den einen oder anderen IPv4-Anschluss geben, aber für die meisten Nutzer wird IPv4 nur noch über DSL-Lite bereitgestellt. Das bedeutet, die IPv4-Pakete werden in IPv6 gepackt, was einen entscheidenden Haken hat: Die FRITZ!Box hat keine öffentliche IPv4 Adresse mehr. Und damit haben die einzigen beiden VPN-CLients für die FRITZ!Box ein Problem: Weder der hauseigene FRITZ!-Client FRITZ!Fernzugang noch der VPN Access Manager von Shrewsoft verstehen IPv6, was VPN mit der FRITZ!Box den Todesstoß versetzt. An dieser Stelle setzt der Ehrgeiz an und getreu dem Motto „Geht nicht gibts nicht!“ werde ich versuchen einen VPN-Zugang ins interne Netz über IPv6 mit gängigen MItteln zu realisieren. High-End Lösungen bleiben aussen vor, denn das kann ja jeder…Spass beiseite, aber als kleineres oder mittelständiges Unternehmen oder als Selbständiger mit endlichem Budget und ohne eigene IT-Abteilung und zudem noch geringeren Anforderungen sucht man eher nach einer passenden und schmalen, sprich individuellen und kostengünstigen Lösung. Für grössere Unternehmen sind die Angebote des Softwarehändlers Ihrer Wahl per se nicht abzuweisen.

Der Plan

Die FRITZ!Box ist als VPN-Server untauglich, zumindest solange bis AVM den Client auf IPv6 nachrüstet. Von daher ist der erste Plan einen VPN-Server im internen Netz zu installieren und einen VPN-CLient über Port-Forwarding durch die FRITZ!Box zu verbinden. Der einfachste Weg und auch ein übliches Szenario ist ein Windows-PC als Client. Wir wollen auch den eingebauten VPN-Client verwenden um die Installation weiterer Programme zu vermeiden. Als VPN-Server für Windows bietet sich PPTPD an. PPTPD ist einfach zu konfigurieren und von der Verschlüsselung her ausreichend. Auf Windows-Seite müssen nur IP, Login und Passwort eingetragen werden und die Verbindung wird aufgebaut. Das ist zumindest der Plan, die Fallen sind in den folgenden Absätzen beschrieben.

Wie schon erwähnt sollen nur gängige Hausmittel zum Einsatz kommen:

  • FRITZ!Box (uh)
  • MyFritz!-Service: Ist inklusive.
  • Subdomain home.meineseite.de o.ä.. Das sollte kein Problem sein, fast jeder hat heutzutage eine Website und kann Subdomains erstellen
  • Linux-Rechner für VPN-Server (PPTPD oder OpenVPN). Falls man keinen Server im Netz stehen hat, empfiehlt sich ein SBC wie der Raspberry Pi 4 für ca. 35 €. Hier reicht auch ein älteres Modell wie der 3+ völlig aus, der mit Gehäuse und Zubehör schon ab 20 € zu haben ist (bei amabay oder ezone).

Dann kann die Tour beginnen….

DynDNS?

In der FRITZ!Box sind einige DynDNS-Anbieter hinterlegt. Der Gedanke liegt nahe darüber sich einen IPv4 Zugang zu „erschleichen“. Nach kurzer Überlegung stellt man fest, dass es sich um einen Holzweg handelt. DSL-Lite und die Verpackung bzw. Entpackung der Pakete stellt sich quer (Mehr dazu hier).
Ohne vorhandene IPv4-Adresse fehlen dem DynDNS die notwendigen Infos um einem Hostnamen bei dem jeweiligen Anbieter eine IP zuzuweisen. Zudem sind die meisten der DynDNS-Anbieter auch noch der Zeit hinterher und können nur mit IPv4 umgehen:

No-IP

Da sich die IP-Adresse der FRITZ!Box trotz IPv6 dann und wann ändert – sonst könnten die Provider für die Option „statische IP“ kein Geld mehr verlangen- wäre es schon nett einen hübschen Hostnamen zu haben. Klar, über MyFritz kann man sich auch was hinbiegen, zumindest um Zugriff auf die Weboberfläche zu bekommen. Von daher ist es auch müßig an dieser Stelle weiter zu suchen. Momentan sind die Methodem mit DysnDNS eher Kategorie „Gefrickel“, MyFRITZ! sieht da besser aus.

MyFRITZ!

Der MyFRITZ!-Service von AVM ist schon mal die erste Anlaufstelle um aus dem Internet Zugriff auf seine FRITZ!Box zu bekommen. Dazu ist nur eine Anmeldung nötig, danach ist die FRITZ!Box unter dem Schema https://abcdefghijklmop.myfritz.net:12345 zu erreichen. Das wird später nötig um die IPv6-Adressen des VPN-Servers auszulesen. Den Buchstabensalat kann sich kaum ein Mensch merken – man will es auch eigentlich nicht. Hier kommt eine Subdomain und/oder ein DynDNS-Service wieder ins Spiel.

DynDNS – jetzt doch aber mit IPv6 bitte!

Neben dem oben beschriebenen IPv4-Debakel sind die „eingebauten“ DynDNS-Clients der FRITZ!Box auch nicht wirklich free. Einzig bei no-ip.com gibts noch einen Gratis-Dienst, der allerdings alle 30 Tage eine erneute Bestätigung erfordert und in der freien Variante kein IPv6 akzeptieren will.
Ich kann für einen wirklich freien DynDNS-Service http://freedns.afraid.org empfehlen. Keine versteckten Kosten und IPv6-fähig. Nach Erstellung eines Accounts setzt man die Daten in der FRITZ!Box unter
Internet->Freigaben->DynDNS->Benutzerdefiniert.
Die Felder erklären sich von selbst, einzig die Update-URL ist unter http://freedns.afraid.org/dynamic/ in Erfahrung zu bringen. Unten auf der Seite findet sich die Info unter Direct URL:

Das Schema ist http://freedns.afraid.org/dynamic/update.php?LANGERBUCHSTABENSALAT.
Mit dieser letzten Info ist DynDNS jetzt ready.

Mit Subdomain einfacher auf die FRITZ!Box

Mit DynDNS hat schon mal einen hübscheren Namen für die FRITZ!Box, möchte aber auf das Webinterface muß man sich immer noch den Port merken. Die Lösung ist hier beim Provider eine Subdomain einzurichten. Je nach Anbieter ist der Vorgang unterschiedlich, bei IONOS ist z.B. auf ein Zahnrad neben dem Domainnamen zu klicken, bei Domainfactory sieht das so aus:
SubdomainWichtig ist https und den Port nicht zu vergessen, sprich die vollständige URL angeben. Diese ist in der FRITZ!Box unter Internet->Online-Monitor->MyFritz! oder Internet->MyFRITZ! Konto zu finden.

VPN-Server (PPTPD)

Die Installation geschieht mit apt-get install pptpd (Raspian, Debian, Ubuntu). Danach sind einige Dateien zu bearbeiten:

  1. /etc/pptpd.conf
    localip <lokale IP des Rechners>
    Die IP ist über den Befehl ifconfig zu sehen und ist in der Standard-Konfiguration der FRITZ!Box 192.168.178.XX, z.B.:
    localip 192.168.178.24
    remoteip <Adressbereich>
    Beispiel:
    remoteip 192.168.178.231-239
    Dieser Adressbereich wird von der FRITZ!Box nicht über DHCP vergeben und macht somit keine Probleme.
  2. /etc/ppp/chap-secrets
    Hier sind die Logindaten einzuragen. client & secret nach Wahl, als server: pptpd, als IP addresses trägt man einen Stern * ein.
  3. /etc/ppp/pptpd-options
    Optional dns/wins-server falls es klemmt. Sollte aber für den ersten Test auch ohne funktionieren

Zudem ist noch folgender Befehl notwendig für das Routing notwendig (Details z.B. hier: http://www.ducea.com/2006/08/01/how-to-enable-ip-forwarding-in-linux/)
sysctl -w net.ipv4.ip_forward=1
und in /etc/sysctl.conf folgende Einträge vom Kommentarzeichen (#) zu befreien:
net.ipv4.ip_forward=1
net.ipv6.conf.all-forwarding=1

Test: Von einem anderen Windows-PC aus dem internen Netz sollte jetzt über „VPN-Verbindung einrichten“ mit den Daten aus chap-secrets und der IP (war hier im Beispiel 192.168.178.24) eine Verbindung herstellbar sein. Bitte testen ob die Verbindung aufgebaut wird und ob z.B. der Browser noch funktioniert.

Ports an der FRITZ!Box durchschleusen

Es geht an der FRITZ!Box weiter: Unter Internet->Freigaben->Portfreigaben ist der VPN-Server als Gerät für Freigaben hinzuzufügen. Eine Google-Suche liefert die benötigten Ports:

  • To allow PPTP traffic, open TCP port 1723.
  • To allow L2TP w/ IPSec traffic, open UDP ports 500, 1701 & 4500.

Die Freigaben für Ipv4 sind nicht nötig.
PPTP Freigabe

IP-Adresse des VPN-Servers finden (für DynDNS Test)

Das ist wieder eine einfachere Übung. An der FRITZ!Box unter Internet->Freigaben->Name des VPN-Servers auf den Stift (Bearbeiten) klicken und in dem Feld Freigaben findet sich die IP-Adresse im Internet. Um Fehler bei DynDNS auszuschliessen kann man diese Adresse benutzen.

SET-READY-GO:FAIL!

Gut. In Windows die IP-Adresse gegen die IP-Adresse von eben oder den DynDNS-Eintrag austauschen und es klappt nicht:
PPTP Error

Und jetzt?

Geht nicht gibts nicht – insofern gibt es eine Lösung.

  • VPNServer nutzen, der IPv6-taugliche Protokolle beherrscht, z.B: SoftEther für SSTP. OpenVPN wäre die High-End-Lösung, aber der Plan war den eingebauten Windows-VPN-Client zu nutzen und die Installation des VPN-Servers sollte keine „Rocket-Science“ sein. Ja, es gibt haufenweise Installer-Scripte im Internet, aber für diesen speziellen Anwendungsfall habe ich (zumindest) kein taugliches gefunden. Und falls man ein Script findet, sollte man es auch nicht laufen lassen, ohne zu verstehen was das Script macht…
    UPDATE: SoftEther ist so kompliziert wie sicherheitsrelevante Software nun mal ist. Im Verhältnis zu anderen Produkten aber mit weitaus weniger Hürden behaftet. Die Anleitungen sind gut und somit war die Installation weitaus einfacher als erwartet. SoftEther bietet weiterhin einen wirklich guten Client an und ist kostenfrei. Zum Laufen bekommt man SoftEther schon auf einem Raspberry Pi. Open Source, regelmäßige Updates und eine ständig wachsende Community machen für uns die Suche nach Alternativen überflüssig. Mit SoftEther umgeht man nicht direkt das IPV6-Problem, aber die Lösung ist mit MyFRITZ!, und einer Port-Freigabe schnell erstellt. Das Vorgehen ist fast identisch wie bei RDP im Post hier beschrieben.
  • Portmapper
    Es gibt Anbieter welche die MyFritz!-Adresse in IPv4 mappen. Ein Beispiel ist feste-ip.net. Einschränkung ist, daß nur TCP funktioniert. UDP wird nicht gemappt und läuft weiterhin ins Leere. PPTP benötigt nur TCP Port 1723, könnte also klappen. In wie weit das wirklich funktioniert schaue ich mir in einem weiteren Beitrag an.
    UPDATE: Wir haben diesen Anbieter und Methode getestet. Es funktioniert, aber die Einrichtung ist unserer Ansicht nach nicht wirklich intuitiv. Weiterhin ist der Dienst kostenpflichtig. Die Bezahlung erfolgt über Credits – das ist wie die Einrichtung irgendwie „um die Ecke“. Nichtsdestotrotz: Im Allgemeinen quält man sich nur einmal durch die Einrichtung und mit den Kosten muß man sich auch einmal klar machen.
    Info: Wir bekommen für die Empfehlung weder Vergütung noch andere Vorteile – die Bewertung hier ist voll und ganz unsere eigene Meinung und somit diskutabel.

Im Moment Holzwege:

  • 6tunnel
    6tunnel ist ein IPv6<->IPv4 und vice versa Proxy. Problem hier: Der VPN-Client verweigert bei PPTP die EIngabe einer IPv6-Adresse, somit ist 6tunnel in dieser Konfiguration keine Hilfe. Mit SoftEther und einer MyFRITZ!-Freigabe bin ich fast sicher dass es läuft.

UPDATE:

Das war der erste Anlauf mit der Problematik warm zu werden. Es sind viele Themen (Baustellen) angerissen und als guter Informatiker kann meine Allround-Lösung empfehlen. Je nach Use case gibt es einfache Methoden, wie z.B: hier beschrieben (Thema RDP): https://netandworx.de/wp-admin/post.php?post=216