IPSec Server für Android Handys

Nachdem ich nun mein HTC One X habe, wollte ich dieses auch gleich via VPN in mein heimisches Netz bringen können, wenn ich mal unterwegs bin. Bei meinem vorherigen Handy, dem Motorola Milestone, war meine Lösung, das Handy zu rooten und dort OpenVPN zu installieren. Da meine damaligen Versuche mit IPSec Servern nicht wirklich gefruchtet haben und OpenVPN relativ einfach zu konfigurieren war, war das entsprechend die Lösung meiner Wahl.

Nun gibt es ja bei HTC Geräten zwar die Möglichkeit, diese offiziell via HTC zu unlocken so dass man sich entsprechend auch mit Root-Rechten ausstatten kann, nur kommt das für mich nicht in Frage, da damit auch ein gewisser Garantieverlust für das Gerät einhergeht. Die andere Option, inoffiziell via S-OFF (=Security Off) Root-Rechte zu erlangen, steht derzeit nicht zur Verfügung, da an dieser noch gearbeitet wird.

Entsprechend fiel meine Wahl auf den Versuch, einen IPSec Server in Betrieb zu nehmen, der offiziell von Android unterstützt wird.

Nach kurzer Suche war klar, dass das OpenSWAN sein könnte. Entsprechend habe ich diesen nach diversen Anleitungen im Internet konfiguriert, konnte aber leider keine erfolgreiche Verbindung aufbauen. Dank Google war auch recht schnell klar, warum:

Wie in diesem Thread beschrieben wird, gibt es momentan unter Android 4 einen bekannten Bug, der verhindert, das man erfolgreich eine Verbindung aufbauen kann. Er gäbe die Möglichkeit, eine relativ aktuelle OpenSWAN Version zu nehmen, in der diesem Bug entgegen gewirkt wurde oder wie am Ende des Threads von einem User beschrieben, den Racoon Server einzusetzen.

Da der Racoon Server in der Ubuntu-Distribution vorhanden ist und ich zum jetzigen Zeitpunkt nirgendwo aktuelle OpenSWAN Pakete gefunden habe, in welchen der Bug gefixt ist, habe ich mich entsprechend für Racoon entschieden.

Die Anleitungen sind zwar relativ rar zu diesem, ich konnte den trotzdem erfolgreich in Betrieb nehmen. Hier beschreibe ich wie:

Installation

Installiert zuerst folgende Pakete:

apt-get install xl2tpd racoon ipsec-tools

Nun kann es mit der Konfiguration weiter gehen.

Konfiguration

Editiert nachfolgende Dateien und passt deren Inhalt wie folgt an:

/etc/racoon/racoon.conf

path pre_shared_key "/etc/racoon/psk.txt";
padding {
        maximum_length 20;
        randomize off;
        strict_check off;
        exclusive_tail off;
}
remote anonymous {
    exchange_mode aggressive;
    nat_traversal on;
    generate_policy on;
    proposal_check obey;
    proposal {
        encryption_algorithm 3des;
        hash_algorithm sha1;
        authentication_method pre_shared_key;
        dh_group 2;
    }
}
sainfo anonymous {
    encryption_algorithm aes;
    authentication_algorithm hmac_sha1;
    compression_algorithm deflate;
}

/etc/racoon/psk.txt

# format is:  'identifier' 'key'
myNetwork meinStrengGeheimerKey

/etc/xl2tpd/xl2tpd.conf

[global]
port = 1701
access control = no
ipsec saref = yes
debug avp = yes
debug network = yes
debug state = yes
debug tunnel = yes
listen-addr = 192.168.100.200

[lns default]
exclusive = yes
ip range = 192.168.100.210-192.168.100.229
local ip = 192.168.100.202
length bit = yes
name = 192.168.100.200
ppp debug = yes
require authentication = yes
unix authentication = no
require chap = yes
refuse pap = yes
pppoptfile = /etc/ppp/options.xl2tpd

Anmerkung: Die 4 debug Zeilen in der Global-Sektion könnt ihr raus nehmen, wenn alles läuft.

/etc/ppp/options.xl2tpd

lock
auth
name "l2tp-server"
dump
# CCP seems to confuse Android clients, better turn it off
noccp
novj
novjccomp
nopcomp
noaccomp
require-mschap
require-mschap-v2
ms-dns 192.168.100.254
lcp-echo-interval 120
lcp-echo-failure 10
idle 1800
connect-delay 5000
nodefaultroute
noipdefault
proxyarp

/etc/ppp/chap-secrets

# client        server  secret          IP addresses
username        *       password         *

Anpassung an eigenes Network

Durchsucht nun die Konfiguration und passt folgendes an für eure Netzwerk:

  • 192.168.100.254 -> euer interner Gateway
  • 192.168.100.202 -> IP, die der VPN-Gateway nutzt (muss frei sein)
  • 192.168.100.200 -> reguläre IP des Rechners, auf dem der IPSec-Server läuft
  • 192.168.100.210-192.168.100.229 -> IP Range, aus dem die IPs für die Clients vergeben werden

Jetzt geht es noch darum, die passenden Passwörter usw. zu setzen.

In der Datei chap-secrets werden Benutzernamen und Passwörter definiert, die sich anmelden können/dürfen. In der Datei psk.txt wird das „Secret“ definiert, die alle in den Verbindungseinstellungen verwenden müssen. Passt das an für eure Bedürfnisse. Ist das soweit passiert, geht es an die Android-Konfiguration.

Konfiguration Android

Ruft die VPN Einstellungen auf und wählt dort VPN hinzufügen aus. Anschließend tragt ihr bei Namen einen Namen/Bezeichnung ein, der beschreibt, wohin ihr euch verbindet.

Anschließend wählt ihr bei Typ L2TP/IPSeec PSK aus.

Bei Server-Adresse tragt ihr den Hostname oder die IP ein, oder welcher der IPSec-Server erreichbar ist.

Das Feld L2TP-Schlüssel lasst ihr leer, im Feld IPSec-ID tragt ihr den Identifier aus der psk.txt ein. Im Feld Vorinstallierter IPSec-Schlüssel den Key aus der psk.txt

Das war es mit der Grundeinstellung! Speichern und weiter gehts!

Wenn ihr jetzt den Eintrag auswählt, werde ihr nach Benutzername und Passwort gefragt. Tragt dort das ein, was ihr euch vorher in der chap-secrets eingetragen habt.

Das wars! Wenn alles geklappt habt, könnt ihr euch via IPSec verbinden!

Firewall

Damit der IPSec-Server auch über einen Router im Internet erreichbar ist, müssen bestimmte Freigaben gemacht werden. Folgende sind notwendig:

  • ESP
  • GRE
  • 500/UDP
  • 1701/UDP
  • 4500/UDP

Das könnte Dich auch interessieren...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.