Sonntag, 2. November 2014

Fritz!Box VPN (IPSec) und DNS

Vorbemerkung

Warum will man eine VPN-Verbindung über das Internet zur eigenen Fritz!Box herstellen? Hierzu sei auf http://blog.rotzoll.net/2010/07/iphone-per-vpn-an-fritzbox-7270-einbinden/ verwiesen. Kurz zusammengefasst: Man will von außen eine Verbindung in sein Heimnetzwerk herstellen und/oder man benötigt eine Gegenstelle, um über eine sichere Verbindung in einem öffentlichen WLAN Internet zu nutzen.

Fritz!-VPN

Seit geraumer Zeit bieten die Fritz!Boxen bereits die Möglichkeit, Tunnel über das Protokoll IPSec herzustellen. Allerdings war es früher[tm] notwendig, sich mit einer Windows-Software für jede Verbindung bzw. jeden Benutzer eine VPN-Profildatei zu erzeugen und diese über die Weboberfläche der Fritz!Box hochzuladen. Seit einigen Fritz!OS Versionen ist es nun möglich, ganz ohne den Umweg über VPN-Profildateien allein über die Weboberfläche VPN für einen Benutzer freizuschalten bzw. zu aktivieren.
Voraussetzung ist, dass die Fritz!Box von außen über einen (Dyn)DNS-Eintrag erreichbar ist. AVM bietet hierfür den Dienst "MyFritz" an. Alternativ dazu kann man auch einen der "üblichen Verdächtigen" (z.B. noip, freedns.afraid.org etc., Vergleichstest in c't 07/2013 ab S. 108) nehmen.
Im Prinzip geht man wie in diesem Tutorial des Herstellers (hier für iOS-Clients) beschrieben vor, also zuerst über den Punkt "System" > "Fritz!Box-Benutzer" einen neuen Benutzer (mit Benutzername und Kennwort) anlegen und "VPN" für diesen Benutzer aktivieren. (Die anderen Optionen können allesamt abgeschaltet werden!) Unter dem Link "VPN-Einstellungen anzeigen" des neu angelegten Benutzers ist das "shared secret" zu erfahren, das in den Clients neben Benutzername und Kennwort eingetragen werden muss. (Es werden keine Zertifikate verwendet, sondern pre-shared keys, was etwas unsicherer ist.)
Das war es auch schon -- eigentlich.

iOS / DNS

Ich habe dann anschließend die IPSec-VPN-Verbindung unter iOS 8.1 eingerichtet, was wie in oben erwähnten Tutorial funktionierte. Das Herstellen der VPN-Verbindung aus dem Mobilnetz hat dann auch wie erwartet funktioniert, nur konnten dann vom iPhone weder Webseiten aufgerufen werden noch hatten Apps (wie Mail oder Threema) eine funktionierende Internetverbindung. In Safari bekam ich allerdings nach Eingabe der IP-Adresse meiner Fritz!Box in die Adresszeile die Weboberfläche selbiger angezeigt. Ich vermutete also ein DNS-Problem. (Nicht verifiziert habe ich dieses allerdings aus Zeit- und Testmangel unter anderen Betriebssystemen.)
Dass ich nicht der einzige mit exakt diesem Problem bin, kann man hier oder hier nachlesen. Mit irgendwelchen Fritz!OS-Zwischen- oder -Labor-Versionen schien es wohl mal zu gehen, aber mit der derzeit aktuellsten (nicht-Labor-)Version wohl wieder nicht "out of the (Fritz!)box"...
Was bei mir dann endgültig weiter geholfen hat, war der Tipp in diesem Kommentar: Man muss in der Weboberfläche der Fritz!Box unter "Internet" > "Filter" > Tab "Listen" > "NetBIOS-Filter aktiv" ausschalten, mit "Übernehmen" bestätigen und denn wieder einschalten und erneut mit "Übernehmen" bestätigen. (Scheint also wohl irgendwie ein Bug zu sein...)
Jetzt funktioniert auch die Namensauflösung, wenn man über IPSec VPN mit der Fritz!Box verbunden ist. Auf dem iPhone wird (bei bestehender VPN-Verbindung) in entsprechenden Apps (ich verwende die Funktion "Gerät" der App "TrafficMonitor") als externe IP-Adresse die externe IP-Adresse meines Internetanschlusses daheim angezeigt.

Alles gut?

Naja, wenn das iPhone auf Standby geht, wird die VPN-Verbindung beendet, und man muss sie manuell erneut herstellen, wenn man wieder auf der "sicheren Seite" sein möchte. Es gibt wohl seit einigen iOS-Releases Möglichkeiten, dies zu persistieren, aber damit habe ich mich noch nicht beschäftigt.