Bisher ging es hauptsächlich um die Serverseite des VPN-Tunnels. Wir haben herausbekommen, ob wir das Virtual Private Network auf IPv4 aufbauen können, oder ob wir IPv6 verwenden müssen. Und wir haben mit PiVPN einen OpenVPN Server auf Basis eines Raspberry Pi installiert. Nun wird es Zeit, dass wir uns der Clientseite des VPN-Tunnels zuwenden. Android verfügt zwar selber über VPN-Fähigkeiten, kann aber von sich aus nicht mit einem OpenVPN Server kommunizieren. Wir brauchen also eine App, die das ermöglicht. Ich werde in diesem Artikel drei OpenVPN Clients für das Android Smartphone vorstellen. Und sobald wir einen davon installiert haben, können wir den VPN-Tunnel zum ersten Mal testen. In diesem Artikel geht es ausschließlich um Android als Smartphone Betriebssystem, wer ein Apple oder Microsoft Mobiltelefon verwendet, der findet aber entsprechende OpenVPN Clients in seinem App-Store.
Nachfolgend werde ich drei OpenVPN-Clients für Android Smartphones vorstellen, die alle drei mit unserem PiVPN-Server zusammenarbeiten können.
Installation und Konfiguration
Wie man unter Android eine App aus dem Google Play Store installiert, das brauche ich hier nicht zu erklären, das hat jeder schon mehrfach gemacht. Bei diesen VPN Apps funktioniert das ganz genauso. Auffällig sind nach der Installation die Schlüssel- bzw. App-Icons in der Symbolleiste des Smartphones ganz oben und die entsprechenden Einträge, wenn man den Finger von oben nach unten zieht. Die Konfiguration funktioniert bei allen drei Apps ähnlich und ist denkbar einfach, denn wir brauchen nur die .ovpn Client Konfigurationsdatei, die wir bereits am Raspberry Pi erzeugt haben, in die App importieren. Dazu muss man diese Datei aber erst mal auf das Smartphone bekommen. Dazu steckt man das Handy per USB an den PC und kopiert die Datei. Alternativ könnte man sie auch per E-Mail schicken.
Nach dem Import der Konfigurationsdatei in der App muss nur noch der Connect-Schalter betätigt werden – initial einmal das vergebene Passwort eingetragen und gespeichert werden und der Client nimmt Verbindung zum Server auf. Näheres zu Erfolg oder Misserfolg zeigt die Logdatei an, die man innerhalb der App einsehen kann.
Drei OpenVPN Clients
Die nachfolgend aufgeführten OpenVPN Client Apps haben folgende Gemeinsamkeiten:
- Sie sind kostenlos aus dem Google Play Store installierbar,
- benötigen keine Rootrechte,
- können .ovpn Konfigurationsdateien importieren,
- beherrschen IPv4- und IPv6-Tunnel, auch zusammen als Dual Stack,
- stellen den Tunnel beim Wechsel von WLAN zu mobile Internet und umgekehrt automatisch wieder her und
- bieten Statusanzeige und Logdatei.
OpenVPN Connect von OpenVPN
Dieser ausschließlich englischsprachige Client stammt von den Machern von OpenVPN und ist damit der Original-OpenVPN Client. (Getestet wurde die Version 3.0.5.)
Von der Bedienung her ist die App recht gut gemacht. Es gibt einen einfachen Ein-/Ausschalter für das VPN und auf der selben Seite werden gleich die Verbindungsdaten angezeigt. Das Log ist von hier auch nur einen Klick entfernt. Warum allerdings beim Verlassen der App noch der Home-Screen eingeblendet werden muss, über den sich nur neue Verbindungen einrichten lassen, das erschließt sich mir nicht.
Dual Stack ist bei dieser App von Haus aus aktiv, der Umgang mit IPv6 lässt sich aber auch in den Settings einstellen. Den nächtlichen IP-Adressenwechsel am heimischen Router bewältigt dieser Client einwandfrei. Am Morgen ist der Tunnel immer aktiv.
Probleme habe ich allerdings beim Netzwechsel bei aktiviertem Tunnel. Ein Übergang von WLAN zu mobilem Internet wird einwandfrei erkannt und die Tunnelverbindung steht nach wenigen Sekunden wieder. Der umgekehrte Wechsel von mobilem Internet zum WLAN wird von der App aber gar nicht bemerkt und im Log dann fortlaufend der Fehler UDP send error: send: Invalid argument
ausgegeben. Einen Reconnect schafft die App dann aus eigenem Antrieb nicht – mit Betätigen des Aus-/Einschalters von Hand ist aber wieder alles in Ordnung. Diese Problem ist wohl seit Jahren bekannt und als Fehler #313 beim Hersteller registriert. Dass es immer noch nicht behoben ist, scheint mir ein Anzeichen dafür zu sein, dass es nur selten auftritt – vielleicht eine Besonderheit meines Smartphones.
OpenVPN für Android von Arne Schwabe
Das ist eine freie Open-Source-Software und der Quasi-Standard für offene Software, der auch von PiVPN empfohlen wird. Die App ist mehrsprachig und wird auf Deutsch installiert. (Getestet wurde die Version 0.7.8.)
Die Bedienung ist recht holprig, so kann zwar mit einem Fingerdruck die Verbindung aufgebaut werden, das Trennen muss aber in einem Unterfenster noch bestätigt werden. Die Logaufzeichnung ist vom Loglevel her konfigurierbar, das Log aber bei bereits bestehender Verbindung nur schwer erreichbar und dann muss noch mühsam von Hand ans Ende gescrollt werden. Die App ist sehr umfangreich konfigurierbar, es können sogar Apps konfiguriert werden, die den Tunnel nutzen, oder explizit nicht nutzen dürfen.
Der Android-Client interpretiert die UDP6 Einstellung in der Konfigurationsdatei so, dass UDP und UDP6 (also IPv4 und IPv6) verwendet werden können, sofern das möglich ist. Eine eigene Einstellung für einen Dual-Stack-Betrieb ist also nicht nötig und auch nicht möglich.
Netzwechsel (von WLAN zu mobilem Internet und umgekehrt) bewältigt der Client sehr gut. Was aber leider in der Grundeinstellung nicht funktioniert ist der nächtliche Wechsel der IP-Adresse am Internet Router. Der Client schafft es nicht, an dieser Stelle eine neue DNS-Abfrage zu machen und bleibt im Status „Warte auf Serverantwort“ hängen, bis von Hand die Verbindung beendet und neu aufgebaut wird. Abhelfen kann man dem allerdings, wenn man die Option Persistentes tun-Device abwählt. Diese Einstellung findet man, in dem man auf den Bleistift neben dem Profil drückt und dann weiter unter Erweitert – Client-Verhalten. Ohne Persistentes tun-Device arbeitet der Client auch die nächtlichen IP-Adressenwechsel sehr zuverlässig ab.
OpenVPN Client Free bzw. VPN Client Pro von colucci.web.it
Der OpenVPN Client Free ist die kostenlose und abgespeckte Variante eines kommerziellen VPN-Clients. Der Free Client wird wohl gerade vom Hersteller durch den VPN Client Pro ersetzt, die Funktionen der beiden scheinen aber gleich zu sein. Beide sind kostenlos und auf Englisch und Italienisch einstellbar. (Getestet wurde die Version 3.00.03)
Die Bedienung ist sehr durchdacht, es gibt einen einfachen Ein-/Ausschalter und die gebräuchlichsten Ansichten, also Connect, Status und Log können einfach erreicht werden, ohne kompliziert über Menüs zu gehen.
Die Einstellung UDP6 in der Konfigurationsdatei wird streng interpretiert. Für Dual Stack kann in den Einstellungen aber von UDP6 auf UDP umgestellt werden (Bleistift – Remote Servers – Edit remote server – UDP und Speichern nicht vergessen). Dann wird sowohl IPv6 als auch IPv4 verwendet.
Der Client kommt ganz gut über einen nächtlichen IP-Adressenwechsel des heimischen Internet-Routers, laut den Log-Einträgen kann das aber oft eine halbe Stunde dauern, bis die Verbindung wieder steht. Halb so schlimm, wenn das in der Nacht passiert. Die Stabilität im täglichen Betrieb ist recht ordentlich. Nur selten hat der Client bei Wechseln vom mobilen Internet zum WLAN und umgekehrt Probleme die Verbindung wieder herzustellen. Er zeigt in solchen Fällen zwar nach wie vor den Status Connected an, bekommt aber keine Daten mehr durch den Tunnel. Nach Trennen und Neuverbinden läuft aber wieder alles. Die Stabilität hat sich von Version 2.20 zu Version 3 stark verbessert.
Keine Empfehlung
Alle drei OpenVPN Client Apps sind in der Lage ein Android Smartphone mit einem PiVPN-Server zu verbinden. Am stabilsten läuft auf meinem Smartphone die OpenVPN für Android App von Arne Schwabe, auch wenn dieser Client von der Bedienung her eher der schlechteste ist. Ich möchte aber explizit keinen Client empfehlen, Funktionsumfang, Stabilität und Bedienungsfreundlichkeit hängen immer an den aktuellen Versionen und die ändern sich laufend. Auch die geschilderten Probleme tauchen vielleicht nur auf meinem Smartphone auf und bei anderen Typen überhaupt nicht. Ich empfehle deshalb durchaus zwei oder alle drei Clients nacheinander zu probieren und den zu behalten, der am besten am eigenen Smartphone funktioniert.
Wie kommt das Smartphone ins Internet?
Am Smartphone ist das unkompliziert, nachdem die VPN-Client-App konfiguriert ist, braucht es nur noch einen Knopfdruck auf der Bedienungsoberfläche der App und schon versucht diese eine Verbindung zum heimischen VPN-Server aufzunehmen. Sofern eine geeignete Netzwerkverbindung besteht, so dass auf beiden Enden des VPN-Tunnels entweder IPv4 oder IPv6 (oder beides) zur Verfügung stehen, wird das auch innerhalb einer Sekunde passieren. Beobachten lässt sich der Vorgang im Log der App und hier finden wir auch Fehlerhinweise, falls ein Verbindungsaufbau einmal scheitern sollte. Um die Dinge, die rund um den VPN-Tunnel im Hintergrund passieren, wie der Namensauflösung, dem Handshake zwischen Client und Server, dem nächtlichen Wechsel der IP-Adresse und einem Netzwechsel, wenn wir mit dem Smartphone unterwegs sind, brauchen wir uns nicht mehr kümmern, das haben wir richtig konfiguriert und den Rest übernimmt die App. Wer hierzu mehr wissen will, dem empfehle ich einen Blick in Artikel Teil 11 zu werfen. Dort gibts ein paar übersichtliche Diagramme zur Netzwerktechnik.
Klar sein muss aber auch, dass der Weg ins Internet immer durch den Tunnel ins heimische Netzwerk läuft und erst von dort aus zurück ins Internet. Ein klein wenig Performance kann das natürlich theoretisch kosten – speziell wenn die heimische Internetanbindung nicht allzu stark ist – aber spürbar ist das kaum.
Und wenn alles Stricke reißen und der VPN-Client partout den Server nicht erreichen kann? Das passiert zum Beispiel, wenn die verfügbaren IP-Versionen auf beiden Seiten des Tunnels nicht zusammen passen, oder wenn der Betreiber eines WLAN-Hotspots den Port 1194 (für OpenVPN) gesperrt hat. In diesem Fall bleibt uns immer noch der Rückfall auf einen direkten Internetzugang ohne VPN – mit allen sicherheitsrelevanten Nachteilen versteht sich. Dann in der App einfach das VPN abschalten und alles funktioniert so wie vorher ohne VPN.
Weitere Artikel in dieser Kategorie:
- Raspberry Pi VPN – Teil 1: Smartphone Sicherheit
- Raspberry Pi VPN – Teil 2: Konzept eines Virtual Private Network
- Raspberry Pi VPN – Teil 3: IPv4 versus IPv6
- Raspberry Pi VPN – Teil 4: VPN-Server unter IPv4
- Raspberry Pi VPN – Teil 5: Vorarbeiten für ein VPN unter IPv6
- Raspberry Pi VPN – Teil 6: VPN-Server unter IPv6
- Raspberry Pi VPN – Teil 8: Dual Stack VPN Tunnel
- Raspberry Pi VPN – Teil 9: Installation Pi-Hole
- Raspberry Pi VPN – Teil 10: Datenanalyse mit Wireshark
- Raspberry Pi VPN – Teil 11: Netzwerkdiagramme
- Raspberry Pi VPN – Teil 12: Tipps & Tricks
- Raspberry Pi VPN – Teil 13: IPv4 VPN mit (trotz) DS-Lite