Googles mobiles Betriebssystem Android bringt in der Version 4 und höher (Ice Cream Sandwich, Jelly Beans, etc. pp.) endlich nicht nur im Stock Kernel ein ‚tun‘ Modul mit, sondern auch für Apps die Möglichkeit, ein VPN aufzubauen. Waren in früheren Versionen noch gewaltige Querelen nötig, um um die schwachbrüstige IPSEC Implementierung ein funktionierendes VPN Setup herumzubauen, kann man nun getrost was Vernünftiges verwenden, was nicht nur zuverlässiger funktioniert, sondern auch noch deutlich einfacher einzurichten ist und dabei keinen Streß mit NAT und co. macht. Die Rede ist von OpenVPN, welches ich schon seit Jahren für VPN einsetze – derzeit auf meinem pfsense als Server. pfsense erwähne ich nur, weil ich es momentan sehr zufrieden verwende, das ist für das Gelingen einer OpenVPN Verbindung mit dem Mobilgerät aber keinesfalls ein Muss, ein nacktes Linux, *BSD oder gar Windows mit dem OpenVPN Server erfüllt seinen Zweck genauso gut.
Ich gehe in diesem Artikel davon aus, dass das serverseitige Setup bereits läuft und konfiguriert ist und – je nach Sicherheitsbedürfnis – ein Clientzertifikat und/oder Benutzer/Passwort eingerichtet wurde. Anderenfalls, ist das OpenVPN 2.0 Howto wärmstens zu empfehlen.
Ich benutze OpenVPN for Android von Arne Schwabe als Client auf dem Androiden, da dieses eine brauchbare GUI aufweist (und damit meine ich auch die Möglichkeit, sich zur Fehlerdiagnose, den reinen Log anschauen zu können) und auf unmodifizierten Geräten (nicht einmal root-Zugriff wird benötigt!) funktioniert.
OpenVPN kann sowohl Config und Zertifikate in einzelnen Dateien, als auch ein Configfile mit den Zertifikaten inline eingebettet verwende. Für welchen Weg man sich entscheidet ist dabei egal und bleibt der eigenen Präferenz überlassen – ‚OpenVPN for Android‘ kann beides verwenden.
Zuerst müssen alle benötigten Dateien auf das Telefon gebracht werden. Dabei ist es egal, wie das passiert. Man kann die Zertifikate via Herausnehmbarer SD-Karte, über USB-Verbindung zum PC, Bluetooth usw. auf das Gerät kopieren.
Um sich nerviges Klicken und Tippen am Gerät zu ersparen, kann man neben Zertifikaten auch die Config Datei für den Client mit auf das Gerät kopieren, dieses kann dann importiert werden. Dazu benutzt man in der „VPN Liste“ das Ordner-Icon. Dabei werden referenzierte Zertifikatsdateien (Achtung: Relative Pfade verwenden!) als auch Eingebettete erkannt und übernommen. Unbekannte Direktiven werden auch ausgewertet und unter Advanced -> Eigene Optionen eingetragen. pfsense hat die Optionen passtos
und resolv-retry infinite
exportiert, die nicht verstanden werden. Diese kann man dort wieder löschen, oder man deaktiviert „Eigene Optionen“ via Checkbox darüber, sonst schlägt der erste Verbindungsversuch fehl.
Selbstverständlich kann man alle Optionen, die in der Config stehen, auch selbst über die GUI setzen und die Zertifikatsdateien im Dateisystem auswählen.
Ist alles eingestellt, kann die Verbindung durch „Antippen“ des Eintrags in der VPN-Liste gestartet werden. Man bekommt den Log gezeigt, an dessen Ende nun bald „Initialization Sequence Completed“ stehen sollte, anderenfalls hat man hier einen Anhaltspunkt darauf, was schief gelaufen sein könnte. Ist die Verbindung hergestellt, wird dies mit einem Schlüsselsymbol in der Statuszeile des Telefons angezeigt, im Benachrichtigungsbereich kann man sich dann auch Infos zur Verbindung ansehen und diese trennen.
Zuletzt noch der Hinweis, dass man sowohl in der Clientconfig auf dem Android, als via serverseitiger Push-Option einstellen kann, ob der gesamte Traffic durch den VPN-Tunnel geleitet werden soll (default gateway). Der gepushte DNS Server wird per default auch verwendet, was praktisch ist, wenn man Hostnamen überschreiben oder eigene, lokale TLDs zur internen Namensauflösung verwenden möchte.
Ich bekomme die Verbindung einfach nicht hin. Habe ein Tablet und die cert. Dateien vom Server sowie user cert + Key nun muss ich ja bei der Konfiguration Benutzer und Kennwort eingeben. Habe ich leider nicht. Vom server Admin habe ich nur die Besagten Dateien. Unter windows muss ich die ja nur die Config bearbeiten und den Dateipfad angeben. Das reicht für eine Verbindung. Ein Benutzername oder Passwort wird da nicht abgefragt.
Wie stelle ich das an?
Ich habe jetzt seit 2 Tagen mit der Verbindung zu kämpfen, ich bekomme immer die Meldung TLS Handshake failed.
Ich bin mir aber auch nicht sicher was bei Android unter Benutzer und Passwort drinstehen muss.
Alle files sind eingebettet, habe es auch schon mit einer P12 versucht, aber immer derselbe Fehler.
Gruß
Marco
TLS Handshake failed deutet auf ein HMAC Authentifizierungsproblem hin. Check mal die Einstellungen zu ta.key und Schlüsselrichtung bzw. tls-client. Muss auf dem Client passend zu den Server Einstellungen eingerichtet werden
Hy,
ich habe nun mal TLS abgeschalten. Bekomme die Verbindung hin, kann mich auch mit meinem LAN verbinden. Aber bei eingeschaltetem Tunnel geht kein Internet mehr. bzw wenn ich im LAN mir ein Bild anzeigen lassen will, dann läd es eeeewig. Woran kann das liegen. So ist das ganze unbrauchbar
Gruß Marco
Dann leitest Du mit redirect Gateway Deinen ganzen Verkehr über den OpenVPN Server und dieser wird dort entweder von der firewall blockiert oder es gibt keine Regel um den Verkehr mithilfe von NAT wieder ins Internet zurückzuleiten.
Eine Verbindung ohne TLS HMAC Autentifizierung ist genauso sicher verschlüsselt wie mit, aber der Server wird so anfälliger gegenüber DoS Angriffen gegen den ovpn Dienst – ich wurde es allenfalls kurzfristig zum Testen so betreiben
Hallo,
kann mir jemand sagen wie ich ein Nutzerzertifikat erstellen kann? Ich benötige eine Datei um an meiner HS dieseses Zertifikat erstellen kann. Wie mache ich das?
Gruß Marco
Das Nutzerzertifikat bekommst Du zusammen mit Hinweisen zur Konfiguration von Deiner HS. Alternativ gibt es bei einigen Unis / Hochschulen die Möglichkeit, einen SSL Key + Certificate Request zu generieren, der dann von Deiner HS signiert wird. Siehe dazu: http://www.commander1024.de/wordpress/2008/12/openssl-cheat-sheet/
Hallo,
hat irgendwer ein ordentliches OpenVPN Howto für pfsense 2.0.1 (serverseitig), damit ich diese Anleitung auf meinem Androiden fortführen kann ?
Ich blick durch die verschiedenen allgemeinen Howtos für den OpenVPN Server nicht mehr durch.
Besten Dank
Daniel
Ich würd Dir empfehlen, einfach den pfsense 2.0 OpenVPN wizard durchzugehen, ein englisches Howto habe ich per google gefunden: http://blog.stefcho.eu/?p=492
Wichtig ist eigentlich nur, dass Du das, was Du serverseitig einstellst, auch im Client konfigurierst, aber dafür gibts ja das OpenVPN Client Export Addon im Package Manager.