1. #1
    Banned
    Dabei seit
    Apr 2002
    Beiträge
    4.668

    [Anleitung] Android: OpenVPN Einwahl via Tomato

    Zur Diskussion

    07.11.2012 - v2 online
    Spoiler!
    Ein paar Schritte überarbeitet; u.a. wurden die Android-Apps durch eine einzige App ersetzt. Die alten Schritte befinden sich in Spoilern.



    In diesem HowTo möchte ich Euch zeigen, wie man aus den Zutaten Android, OpenVPN und der alternativen Routerfirmware Tomato eine anständige VPN-Suppe kocht.


    Wichtiger Warnhinweis: In diesem HowTo werden teilweise tiefgreifende Änderungen am und im Android-OS bzw. dem Router durchgeführt. Führt die nachfolgenden Schritte nur aus, wenn ihr auch wisst was ihr da tut und ihr euch sicher seid! Für Schäden an Hard- und Software übernehme ich keine Haftung!


    Ich möchte in dieser ersten Version versierte Nutzer ansprechen, die von der Materie schon etwas Ahnung haben. In einer späteren Version werde ich die Schritte wahrscheinlich näher erläutern und erklären, um auch technisch nicht so fortgeschrittene Nutzer anzusprechen.


    1. Die Hardware

    1.1 Der Router
    Als Router kommt bei mir ein Linksys WRT54GL v1.1 zum Einsatz. Das Modell ist zwar schon etwas älters, hat sich die offene Firmware aber zu einem wahren Mod- und Firmware-Wunder entwickelt.

    1.2 Das Smartphone
    Seit Dezember 2011 nenne ich ein (gerootetes) Samsung Galaxy Nexus mit zurzeit Android ICS 4.0.4 JB 4.1.2 mein Eigen. Auf das Rooten werde ich nicht eingehen!



    2. Die Software

    2.1 Das Betriebssytem
    Ich führe alle Windows-basierten Schritte auf einem System mit installiertem Windows 7 Professional x64 und administrativen Berechtigungen (angemeldet als Administrator) aus. In der Win7 x86 Version und/oder anderen Betriebssystemen können Pfade und Befehle anders lauten. Darauf werde ich aber nicht eingehen!

    2.2 Die Tomato Firmware
    Bei der Tomato Firmware handelt es sich um eine schlanke Linux-Distribution, die für einige WLAN-Router verfügbar ist. Durch zusätzliche Funktionen wie z.B. iptables oder QoS ist diese Firmware meist viel mächtiger als die vorinstallierten Herstellerfirmwares. Die originale Tomato Firmware bringt jedoch keine Unterstützung für OpenVPN mit. Aus diesem Grund nehmen wir die TomatoUSB VPN Version.

    Ob Euer Router unterstützt wird könnt ihr hier herausfinden.

    2.3 OpenVPN
    OpenVPN ist ein Programm zum Aufbau eines Virtuellen Privaten Netzwerkes (VPN) über eine verschlüsselte TLS-Verbindung.
    (Quelle: http://de.wikipedia.org/wiki/OpenVPN)
    Dieses Zitat beschreibt es eigentlich am besten.

    2.4 Benötigte Android Apps
    Um eine OpenVPN-verschlüsselte Verbindung zum Router aufbauen zu können, benötigen wir einige zwei Apps:

    • Superuser - wird benötigt um den nachfolgenden Apps die entsprechenden root-Rechte zu gewähren
    • OpenVPN für Android - der OpenVPN-Client für Android
    • BusyBox - bringt diverse Unix-Tools mit und kann als Befehlssammlung verstanden werden
    • OpenVPN Installer - installiert die OpenVPN Binaries ins /system/xbin-Verzeichnis auf dem Androiden
    • OpenVPN Settings - sorgt dafür, dass wir die nachher erstellte OpenVPN-Config auch anwenden können



    3. Die Firmware flashen
    Da ich meinen Router bereits vor langer langer Zeit mit der Tomato Firmware geflashed habe, kann ich keine Anleitung für andere Firmwares geben. Mi scusi!

    Ladet Euch von der TomatoUSB Homepage die VPN-Version mit dem Kernel 2.4 (stable) herunter und entpackt die RAR Datei.

    Startet den Browser Eurer Wahl, gebt die IP-Adresse des Routers ein und meldet Euch an. Navigiert zum Punkt Administration > Upgrade und klickt auf den Choose File Button. Wählt jetzt die vorhin entpackte TRX Datei aus und klickt auf Upgrade. Bestätigt die Abfrage mit einem Klick auf OK. Die Firmware wird jetzt installiert und der Router startet nach etwa einer Minute automatisch neu.

    Nach dem Neustart solltet ihr im Menü zwei weitere Punkte finden: USB and NAS und VPN Tunneling



    4. OpenVPN installieren

    4.1 Windows
    Im OpenVPN Downloadbereich ladet Ihr den Windows Installer der Version 2.1.4 herunter und installiert diesen mit den Standardeinstellungen. Bei der Frage, ob ein TAP-Win32-Netzwerkadapter installiert werden soll, klickt Ihr auf Installieren. (Hier bin ich mir nicht ganz sicher, ob das wirklich nötig ist. Ich habe es bisher aber immer mit installiert.)

    Warum nicht die aktuellste Version? Weil ich meine CA (Certification Authority; Zertifizierungsstelle) noch unter 2.1.4 aufgebaut habe und die aktuelle Version 2.2.2 nur Pkcs11 Unterstützung mitbringt. Dafür habe ich im Moment aber noch keine Verwendung.

    4.2 Android
    Startet die OpenVPN für Android-App und gewährt ihr root. Vorerst sind hier keine weiteren Schritte notwendig.

    v1
    Spoiler!
    4.2.1 BusyBox
    Ihr habt auf Eurem Android bereits root und die Superuser App ist installiert? Wunderbar! Startet jetzt die BusyBox App und gewährt ihr root-Berechtigungen. Wählt BusyBox 1.20.0 als zu installierende Version und /system/xbin als Installationsverzeichnis aus und drückt auf Install. Nach ein paar Sekunden sollte BusyBox melden, dass alles erfolgreich installiert wurde.



    4.2.2 OpenVPN Installer
    Hier das gleiche Spiel. OpenVPN Installer App starten, root gewähren und auf Install drücken. Die jetzt auftauchende Sicherheitswarnung lesen, verstehen (!) und wieder auf Install drücken. Als Installationsverzeichnis wählt Ihr auch hier wieder /system/xbin aus. Ist alles installiert, sollte es so aussehen:





    5. Zertifizierungsstelle und Zertifikate erstellen

    5.1 Zertifizierungsstelle erstellen
    Startet eine Admin-Kommandozeile, wechselt in das Verzeichnis C:\Program Files (x86)\OpenVPN\easy-rsa und gebt als ersten Befehl init-config ein.



    Durch init-config wurden zwei Dateien mit dem Namen var.bat und openssl.cnf erstellt. Die var.bat öffnen wir jetzt mit Notepad oder Notepad++ (meine Empfehlung!).



    In Zeile 6 ändern wir den Pfad in %ProgramFiles (x86)%\OpenVPN\easy-rsa um. Ab Zeile 31 müssen die Daten an uns angepasst werden. Ein Beispiel:



    Danach wird die Datei gespeichert und in der Kommandozeile ausgeführt.



    Der nächste Befehl, clean-all, erstellt Umgebungsvariablen und benötigte Ordner. Die Fehlermeldungen können ignoriert werden.



    Mit dem Befehl build-ca erstellen wir nun unsere CA.



    Wir werden jetzt aufgefordert einige Daten (Ländername, Bundesland, Stadt, ...) einzugeben. Da wird diese Daten bereits in der vars.bat angegeben haben, können wir mit ENTER bestätigen. Ganz wichtig: Bei Common Name muss etwas eingegeben werden. Gebt dort euren Namen oder so an...



    Das wars. Im Unterzeichnis easy-rsa/keys sind jetzt zwei Dateien (ein Root CA Zertifikat und ein Root CA Schlüssel) erstellt worden.



    5.2 Zertifikate erstellen

    5.2.1 Serverzertifikat erstellen
    Gebt in der Kommandozeile den Befehl build-key-server tomato ein. Das tomato kann beliebig ersetzt werden. Achtet nur darauf, dass der jetzt vergebene Name später exakt gleich beim Common Name eingegeben werden muss. Alle anderen Abfragen können wieder mittels ENTER bestätigt werden. Am Ende noch zweimal "Y" drücken damit das Zertifikat zertifiziert wird.



    Im Verzeichnis easy-rsa/keys finden wir jetzt drei Dateien (crt, csr und key) mit dem vorhin vergeben Namen. Hinter crt versteckt sich das Zertifikat, hinter key der Schlüssel.

    5.2.2 Clientzertifikat erstellen
    Anderer Befehl, gleiche Vorgehensweise. Um den Prozess zu starten, gebt in die Kommandozeile build-key galaxynexus ein. Auch hier kann wieder ein frei wählbarer Name an Stelle von galaxynexus vergeben werden. Zum Schluss wieder zweimal mit "Y" bestätigen.



    Dieser Prozess kann beliebig oft wiederholt werden. Es muss nur jeweils ein anderer Name bei build-key und beim Common Name gewählt werden. Für jeden Client werden, wie beim Server, drei Dateien im easy-rsa/keys-Verzeichnis erstellt.

    Fehlermeldungen können auch hier wieder ignoriert werden.

    5.2.3 Diffie Hellmann Datei erstellen
    Was genau ist Diffie Hellman (DH)? Read it!

    Wir erstellen uns jetzt jedenfalls eine DH-Datei. Der Befehl dafür lautet build-dh.



    Auch hier dürfen Fehlermeldungen wieder gekonnt ignoriert werden. Warum der hier immer an unterschiedlichen Stellen abbricht? Ich weiß es nicht... Funktioniert trotzdem alles wie gewollt!

    Die soeben erstelle Datei (dh1024.pem) finden wir wieder im easy-rsa/keys-Verzeichnis.



    6. DynDNS Dienst einrichten
    DynDNS? Toller Dienst! Man muss sich nie wieder IP-Adressen merken und der Router kann immer über einen DynDNS-Alias angesurft werden. Genau das richtige für uns! Also Account auf DynDNS.com erstellen und unter My Services > Host Services einen Hostname erstellen. Bei Service Type unbedingt Host with IP wählen. Der Rest, insbesondere der Hostname, ist vollkommen egal.

    Im Router könnt Ihr den Dienst dann unter Basic > DDNS einrichten. Bei IP address einfach User WAN IP Address auswählen und dann Euren Login sowie Hostnamen unter Dynamic DNS 1 eingeben. Fertig.



    7. OpenVPN Konfigurationsdatei erstellen
    Geht in das Verzeichnis C:\Program Files (x86)\OpenVPN\sample-config und öffnet dort mit Notepad++ die Datei sample.ovpn. Löscht den kompletten Inhalt aus der Datei und befüllt es mit diesen Daten:

    client
    dev tun
    proto tcp
    remote morphiumvpn.dyndns.org 1194
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    script-security 2
    redirect-gateway def1

    ca ca.crt
    cert galaxynexus.crt
    key galaxynexus.key
    ns-cert-type server
    cipher AES-128-CBC
    comp-lzo
    verb 4
    In Zeile 4 gebt Ihr dann Euren DynDNS Hostnamen an, den Port lasst Ihr auf 1194. Im zweiten Abschnitt müssen dann nur noch die Namen des Zertifikats (Zeile 13) und Schlüssels (Zeile 14) angepasst werden. Alles andere kann so bleiben. Speichert diese Datei unter einem neuen Dateinamen.



    8. Tomato für OpenVPN einrichten
    Öffnet Euren Browser, surft die Adminoberfläche des Routers an und geht dort ins Menü VPN Tunneling > Server. Wählt dort Server 1 > Basic aus und übernehmt die Einstellungen wie im Bild.



    Geht jetzt auf Advanced. Auch hier übernehmt Ihr wieder die unten angegeben Einstellungen.



    Im letzten Schritt müssen noch die erstellten Zertifikate und Schlüssel eingefügt werden. Klickt dazu auf Keys und fügt die Schlüssel ein. Öffnet das entsprechende Zertifikat bzw. den Schlüssel aus dem easy-rsa/keys-Verzeichnis mit Notepad++ und kopiert den Inhalt in das entsprechende Feld. Bei der tomato.crt wird nur das Zertifikat zwischen --BEGIN CERTIFICATE-- und --END CERTIFCATE-- benötigt.



    Speichert die gemachten Einstellungen mittels Klick auf Save und startet danach den VPN Server durch einen Klick auf Start Now.



    9. Den Androiden einrichten
    Erstellt auf dem Androiden einen Ordner openvpn auf der root-Ebene. Kopiert in diesen die Dateien galaxynexus.key, galaxynexus.crt und ca.crt (aus easy-rsa/keys) und die oben erstellte ovpn-Datei (aus sample-config). Die Datei ca.crt kommt zusätzlich noch einmal direkt in die root-Ebene.

    Geht jetzt in die Einstellungen in den Punkt Sicherheit > Von Speicher installieren. Dort sollte jetzt ein Zertifikat ca angezeigt werden. Installiert es.



    Die ca.crt aus der root-Ebene ist danach weg. Also nicht wundern.

    Startet die OpenVPN für Android App. Wählt nach dem Starten den Punkt VPN Liste aus. Wie ihr seht, sind noch keine VPN Profile definiert. Die vorhin erstellte opvn-Datei kann man über das Ordner-Symbol hinzufügen. Navigiert dazu zu dem openvpn-Ordner auf der root-Ebene und wählt in diesem die ovpn-Datei aus. Bestätigt diesen Schritt mit einem Klick auf Auswählen. Ihr solltet jetzt angezeigt bekommen, dass die Konfigurationsdatei erfolgreich gelesen wurde.

    Jetzt kommt der große Moment. Deaktiviert auf dem Androiden WLAN und aktiviert mobiles Internet. Sobald ihr verbunden seid, aktiviert ihr die ovpn-Config. Jetzt kann es ein bisschen dauern, meistens benötigt der Punkt auth am längsten. Aber nach ein paar Sekunden solltet Ihr in der Statusleiste die gewünschte Meldung connceted sehen.



    v1
    Spoiler!
    Startet die OpenVPN Settings App. Unter OpenVPN configurations sollte die ovpn-Datei aufgelistet sein.



    Aktiviert erst OpenVPN, ruft dann das Kontextmenü der ovpn-Datei auf, wählt dort Preferences > Enable Logging und bestätigt indem Ihr die Zurück-Taste nutzt.

    Jetzt kommt der große Moment. Deaktiviert auf dem Androiden WLAN und aktiviert mobiles Internet. Sobald ihr verbunden seid, aktiviert ihr die ovpn-Config. Jetzt kann es ein bisschen dauern, meistens benötigt der Punkt auth am längsten. Aber nach ein paar Sekunden solltet Ihr in der Statusleiste die gewünschte Meldung tomato.ovpn: Connceted sehen. Unter der ovpn-Config wird euch auch noch angezeigt mit welcher IP Ihr Euch nun im VPN Subnet befindet.



    Startet jetzt auf Eurem Rechner eine Kommandozeile und setzt einen ping auf die VPN-IP ab.



    Auf Eurem Android könnt Ihr nun auf z.B. http://www.meineip.de gehen und gucken was für eine IP Euch angezeigt wird. Bei mir ist es die von meinem VDSL-Anschluss in meiner Wohnung und nicht mehr die vom mobilen Internet.



    Eine genaue Übersicht findet Ihr im Router. Geht dort auf VPN Tunneling > Server > Server 1 > Status für alle weiteren Infos.




    ---

    Fragen? Fragen!
    Geändert von ::1 (17.07.2013 um 14:04 Uhr) Grund: img-Urls aktualisiert

  2. Anzeige
    Logge dich ein, um diese Anzeige nicht zu sehen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •