:: fischer-net.de

Wer wie ich eine FRITZ!Box 7390 und ein Android Smartphone mit Gingerbread im Einsatz hat, der hatte vielleicht auch schon mal mit dem Gedanken gespielt, sich über ein VPN von seinem Androiden in sein lokales Netz verbinden zu wollen. Der Grundgedanke scheint ja erstmal keine große Baustelle zu sein, doch wie so oft ist es in der Theorie meist anders als in der Praxis.

Im Folgenden beschreibe ich wie ein VPN Zugang auf der FRITZ!Box eingerichtet wird, so dass dieser mit einen Android Smartphone genutzt werden kann. Als Ergebnis hat man die Möglichkeit FHEM (und natürlich auch andere Dienste) sicher über das Internet steuern zu können.

 

Voraussetzungen auf dem Smartphone

Damit sich das Android Smartphone mittels IPSec-Tunnel in das lokalen Netzwerk über die FRITZ!Box verbinden kann, wird ein rooted (jaibreaked, unlocked) Smartphone benötigt. Wie Andoid "gerooted" wird erspare ich mir an dieser Stelle; dazu gibt es genug Quellen, die das ausführlich (auch für den Laien) beschreiben.

Des Weiteren muß der Kernel des Smartphones das TUN device unterstützen. Leider ist das nicht in allen Kerneln der Fall, so dass man an dieser Stelle, je nach verwendetem Stock-ROM, auch evtl. kein Glück hat. Auch hier verweise ich auf die bekannten Foren der Community da die Unterstützung stark variiert. In meinem Fall setze ich auf meinem HTC Desire CyanogenMod 7.2 ein, der die Unterstützung des TUN device im Kernel (CONFIG_TUN=y) beinhaltet.

TUN.ko InstallerTUN.ko InstallerBevor man überlegt das Stock-ROM zu wechseln, kann eventuell die Applikation TUN.ko Installer weiter helfen. Diese Applikation nutzt ein Repository in dem zahlreiche TUN Kernel-Module für verschiedene Stock-ROMs gelistet sind.

An dieser Stelle sei erwähnt, das nicht einfach ein x-beliebiges TUN.ko auf dem Smartphone genutzt werden kann. Dieses Modul muss exakt für die Android-Version, den Kernel sowie der Build-Version übersetzt sein. 

Die notwendigen Informationen bezieht man direkt aus seinem Smartphone. In meinem HTC Desire mit CyanogenMod findet man diese in den "Einstellungen" unter dem Punkt "Über das Telefon". Eventuell kann dieser Menüpunkt je nach Version anders lauten. Entscheidend sind folgende Informationen: Android-Version, Kernel-Version und die Build-Nummer. Bei meinem HTC Desire mit CyanogenMod Stock-ROM entspricht das: Android-Version 2.3.7, Kernel-Version 2.6.37.6-cyanogenmod-g2a32a61 und Build-Nummer GWK74

Bevor der "TUN.ko Installer" auf dem Smartphone installiert wird, lohnt also ein Blick in das Repository. Ist das eigene Smartphone mit den identischen Daten gelistet, kann das Kernel-Modul mit dem Installer auf dem Smartphone sehr einfach installiert werden.

VPNC WidgetVPNC WidgetSchließlich wird auf dem Smartphone noch die kostenlose Applikation VPNC Widget von Matthias Meier benötigt. Diese kann direkt über Google Play installiert werden. Dabei ist darauf zu achten, dass das die Applikation nicht auf der SD-Karte abgelegt wird, sondern im Telefonspeicher. Widgets unter Android haben diese Abhängigkeit und sind sonst nicht nutzbar.

Das Widget wird dann auf dem Homescreen platziert. VPNC Widget benötigt "Superuser" Rechte, die dann auf Anfrage gewährt werden müssen. Dies ist unter Anderen einer der Gründe, warum ein rooted Smartphone vorliegen muss.

Damit wären die Voraussetzungen für das Smartphone erstmal abgeschlossen.

 

Voraussetzungen auf der FRITZ!Box

Um einen VPN Zugang auf der FRITZ!Box bereit zu stellen, nutzt man in der Regel die Software "FRITZ!Box Fernzugang einrichten" von AVM. Diese kann über das AVM VPN Service-Portal bezogen werden. Dort erhält man auch weiterführende Informationen rund um das Thema FRITZ!Box und VPN. Da jedoch die Software eine etwas abweichende Konfiguration des VPN-Tunnels vornimmt, mit der keine Verbindung zu dem Smartphone zu Stande kommt, wird diese Software für diese Beschreibung nicht benötigt! Ausserdem wird die Software nur für Windows-Plattformen angeboten, was einem Linux-Enthusiasten wie mir nicht sonderlich hilft.

Mit einem beliebigen Editor wird die folgende Konfigurationsdatei erstellt. In diesem Beispiel vergebe ich den Namen: roadwarrier1_android_vpn.cfg. Roadwarrier wird in der IT gerne als Bezeichnung für einen "reisenden Geschäftsmann" verwendet, der eine mobile Internetverbindung zu seinem lokalem Netz nutzt. Da ggf. weitere Nutzer Zugriff auf das lokale Netz bekommen sollen, ist diese Datei also die Konfiguration des "Roadwarriers 1 mit Android Smartphone". 

Datei roadwarrier1_android_vpn.cfg:

vpncfg {
        connections {
                enabled = yes;
                conn_type = conntype_user;
                name = "<EMAILADDRESS>";
                always_renew = no;
                reject_not_encrypted = no;
                dont_filter_netbios = yes;
                localip = 0.0.0.0;
                local_virtualip = 0.0.0.0;
                remoteip = 0.0.0.0;
                remote_virtualip = <LOCALIP>;
                remoteid {
                        key_id = "<EMAILADDRESS>";
                }
                mode = phase1_mode_aggressive;
                phase1ss = "all/all/all";
                keytype = connkeytype_pre_shared;
                key = "<TUNNELKEY>";
                cert_do_server_auth = no;
                use_nat_t = yes;
                use_xauth = yes;
                use_cfgmode = no;
                xauth {
                        valid = yes;
                        username = "<USERNAME>";
                        passwd = "<PASSWORD>";
                }
                phase2localid {
                        ipnet {
                                ipaddr = 0.0.0.0;
                                mask = 0.0.0.0;
                        }
                }
                phase2remoteid {
                        ipaddr = <LOCALIP>;
                }
                phase2ss = "esp-all-all/ah-none/comp-all/no-pfs";
                accesslist = "permit ip 0.0.0.0 0.0.0.0 <LOCALIP> 255.255.255.255";
        }
        ike_forward_rules = "udp 0.0.0.0:500 0.0.0.0:500",
                            "udp 0.0.0.0:4500 0.0.0.0:4500";
}

In der obigen Datei werden Platzhalter verwendet, die an die eigenen Vorgaben angepasst werden müssen. Die jeweilige Bedeutung wird in der folgenden Tabelle erklärt.

Platzhalter   Beschreibung
<EMAILADDRESS>   Zur Verwendung als Name des Fernzugangs (wird in der FRITZ!Box Oberfläche angezeigt), sowie der Remote-ID.
     
 <LOCALIP>   IP-Adresse, die dem Client des "Roadwarriers" im lokalen Netz zugewiesen wird (z.B. 192.168.1.240, bei einem lokalem Netz 192.168.1.0)
     
 <TUNNELPASSWORD>   Der Schlüssel für den IPSec-Tunnel mit möglichst  vielen Zeichen (Zahlen, Buchtstaben, Sonderzeichen, Groß- und Kleinschreibung) lang.
     
 <USERNAME>   Frei zu wählender Benutzername für den "Roadwarrier" zur Authentifizierung
     
 <PASSWORD>   Frei zu wählendes Passwort für den "Roadwarrier" zur Authentifizierung

FRITZ!Box VPN EinstellungenFRITZ!Box VPN Einstellungen

Nach dem die zu verwendenden Werte wie beschrieben ausgetauscht und die Datei gespeichert wurde, muss diese in der FRITZ!Box Oberfläche unter Internet -> Freigaben -> VPN hochgeladen werden und wird durch einen Klick auf den Button "VPN-Einstellungen importieren" bereitgestellt.

Damit die FRITZ!Box im Internet immer unter dem gleichen Hostnamen erreichbar ist, muss über einen dynamischen DNS Anbieter (dyndns.org, no-ip.com, etc.) eine Namensauflösung der wechselnden IP-Adresse eingerichtet werden. Diese Einstellungen können in dem Tab "Dynamic DNS" auf der selben Seite vorgenommen werden.

Die Konfiguration der FRITZ!Box ist damit abgeschlossen.

 

IPSec-Tunnel auf Android Smartphone einrichten

Hat man bis hier alle Voraussetzungen geschaffen, wird in einem letzten Schritt der IPSec-Tunnel auf dem Smartphone eingerichtet. Dazu startet man die Applikation VPNC Widget und nimmt dort folgende Einstellungen vor:

VPNC WidgetVPNC Widget

Menüpunkt   Beschreibung
IPSecGateway   In der FRITZ!Box gesetzter Dynamic DNS Name (z.B. myfritzbox.dyndns.org)
     
IPSecID   Entspricht dem Wert des ersetztem Platzhalters <EMAILADDRESS> in "roadwarrier1_android_vpn.cfg"
     
IPSecSecret   Entspricht dem Wert des ersetztem Platzhalters <TUNNELPASSWORD> in "roadwarrier1_android_vpn.cfg"
     
XAuthUsername   Entspricht dem Wert des ersetztem Platzhalters <USERNAME> in "roadwarrier1_android_vpn.cfg"
     
XAuthPassword   Entspricht dem Wert des ersetztem Platzhalters <PASSWORD> in "roadwarrier1_android_vpn.cfg"

Die Einrichtung des IPSec-Tunnels auf dem Smartphone ist damit abgeschlossen.

 

Tunnel zum lokalen Netzwerk aufbauen und FHEM steuern

Wer die Anleitung bis hier ohne Fehler überstanden hat, der sollte nun als Belohnung eine Verbindung in sein lokales Netzwerk erhalten. Dazu wird mittels einfachem "Tap" auf das VPNC Widget der Tunnel aufgebaut. Es kommt vor, dass das Widget mehrfach ausgewählt werden muss. In der Statusleiste erscheint bei erfolgreichem Aufbau in der linken oberen Ecke das "Tunnel"-Symbol mit den grünen Pfeilen, wie es bereits in dem obigen Screenshot zu sehen ist. 

Um die Verbindung zu testen sollte WLAN ausgeschaltet werden, um sicher zu stellen, dass die Verbindung nicht direkt über das WLAN erfolgt. 

Über den Browser des Smartphones kann nun FHEM über die gewohnte Adresse 

http://<ip_des_fhem_servers>:<port_des_webinterfaces>/fhem

aufgerufen werden, wobei natürlich <ip_des_fhem_servers> und <port_des_webinterfaces> an die tatsächlichen Werte anzupassen sind.

FHEM über FRITZ!Box VPNFHEM über FRITZ!Box VPN

Man hat nun nicht nur die Möglichkeit sein Haus von unterwegs mittels FHEM zu steuern, sondern einen gesicherten Zugriff auf sein lokales Netz. So kann z.B. auf Überwachungskameras oder die Musiksammlung auf einer Synology Disk- oder RackStation zugegriffen werden und natürlich vieles mehr.

Viel Spass damit!

Powered by ...

 

 

reichelt elektronik – Elektronik und PC-Technik