Leserartikel Android: OpenVPN Einwahl via Tomato

::1

Banned
Registriert
Apr. 2002
Beiträge
4.786
07.11.2012 - v2 online
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
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.

android-openvpn-tomato-01-cb.png


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:

android-openvpn-tomato-02-cb.png



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.

android-openvpn-tomato-03-cb.png


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!).

android-openvpn-tomato-04-cb.png


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:

android-openvpn-tomato-05-cb.png


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

android-openvpn-tomato-06-cb.png


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

android-openvpn-tomato-07-cb.png


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

android-openvpn-tomato-08-cb.png


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...

android-openvpn-tomato-09-cb.png


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

android-openvpn-tomato-10-cb.png


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.

android-openvpn-tomato-11-cb.png


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.

android-openvpn-tomato-12-cb.png


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.

android-openvpn-tomato-13-cb.png


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.

android-openvpn-tomato-14-cb.png


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

android-openvpn-tomato-15-cb.png


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.

android-openvpn-tomato-16-cb.png


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.

android-openvpn-tomato-17-cb.png


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.

android-openvpn-tomato-edit1_06


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

android-openvpn-tomato-18-cb.png


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.

android-openvpn-tomato-19-cb.png

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

android-openvpn-tomato-20-cb.png


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. ;)

android-openvpn-tomato-21-cb.png


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

android-openvpn-tomato-22-cb.png



---

Fragen? Fragen!
 
Zuletzt bearbeitet: (img-Urls aktualisiert)
Ein gutes Tut!
Was bringt das für Vorteile? Du kannst dann also von unterwegs über eine sichere Verbindung in dein LAN herstellen und Dateien herunterladen? Du könntest auch Videos oder Musik vom LAN streamen?
 
Danke! :)

Ich nutze es hauptsächlich um nicht offen wie ein Scheunentor zu sein, wenn ich mich in einem öffentlichen WLAN befinde (arp-spoofing). Streamen wird mit passender Gegenhardware und App bestimmt möglich sein - habe ich allerdings noch nicht getestet.

Wenn ich in den nächsten Wochen/Monaten dann endlich meinen Raspberry Pi bekomme, gibt es bestimmt die nächste Baustelle. ;)
 
Sehr gutes Tutorial.

Die Einrichtung in der Router-Firmware scheint ja wesentlich einfacher zu sein, als den Server selbst aufzusetzen. Ich hab mir nen Ast abgebrochen, als ich von außen LAN-Zugriff wollte und dafür statische Routen einrichten musste. Naja, irgendwann geh ichs nochmal an.
 
Danke. :)
 
v2 ist gerade online gegangen. Änderungen siehe HowTo.
 
wow cool. habe die anleitung jetzt aktuell aus zeitgründen noch nicht umgesetzt, aber wollte genau das mal machen und habe passenderweise auch genau die gleiche hardware wie du ;-)
eine sache habe ich noch, die ich immer vermisse: wie erzwinge ich, dass mein handy nur über VPN online geht? wenn einmal die verbindung abbricht, surfe ich ja praktisch wieder ohne vpn (annahme: VPN nicht nur zum zugriff auf privates netz, sondern auch aus sicherheitsgründen, z.b. unsicheres wlan)
 
Grade den guide überfolgen und wollte anmerken, dass die aktuelle OpenVPN app auch ohne root-rechte ihren dienst verrichtet (zumindest auf aktuellen android versionen)
Ansonsten ein schöner guide :)
 
@srynoname
Hm, darüber habe ich mich noch nicht informiert. Sorry.

@Causam
Stimmt, hast Recht. Dann streiche ich den root-Part mal aus dem HowTo. :)
 
Ein sehr gutes Tutorial :)

Habe das letztes Jahr mit meinem alten Handy(Defy), dem selben Router aber mit DD WRT gemacht. Ist ja vom Prinzip her gleich. Hat bei mir allerdings nen paar Anläufe mit den Zertifikaten gebraucht, irgendwas ist am Anfang immer schief gegeangen ;)

Der Router ist echt mit das beste zum experimentieren, was alternative Firmware angeht. Mittlweile geht VPN von Haus aus bei meinem HOX, habs aber damit noch nicht gemacht, da ich wegen meinem Inetanschlussauch auf ne FB umsteigen musste.
 
DANKE
fuer das geniale TUT. Ich nutze es in China. Es laeuft auf meinem Nexus 7 nur bricht die Verbindung nach ein paar Minuten ab. ich weiss nicht was hier alles reguliert wird. Gibt es noch ein anderes Setup der vielleicht stabiler in China laufen koennte?

Ich habe allerdings auch ein gerootetes HC Sensation mit CM10 am laufen da funktioniert die OpenVPN ab nicht und stuerzt immer ab. Es kommt eine Meldung dass der TUN/TAP nicht geoeffnet werden kann. gibt es da ein Fix fuer CM10?

Falls mir jemand helfen kann waere ich dankbar
Gruesse

Dreamoffice
 
Zurück
Oben