Skip to content

Android: VPN automatisch in fremden WLANs aufbauen

Android

Als ich vor fast drei Jahren endlich VDSL bekam, war fast meine erste Handlung, auf meinem Raspberry Pi einen OpenVPN-Server zu installieren. Wobei, installiert hatte ich ihn schon vorher, mit der schnellen Leitung konnte ich ihn nun aber wie geplant nutzencool

Der Sinn des VPN war und ist für mich weniger, auf meine Geräte zu Hause zuzugreifen, sondern in fremden WLANs eine sichere Verbindung ins Internet zu haben.
Mein Smartphone/Tablet/Laptop baut das VPN nach Hause auf und der ganze Internetverkehr geht nun aber meine heimische VDSL-Leitung. Im fremden WLAN kann niemand mehr mithören. Denn WLAN ist eine offene Verbindung, unverschlüsselten Datenverkehr könnte jeder, der im gleichen WLAN ist, mithören. Und auch mit SSL (https) gesicherte Verbindungen werden in kommerziellen “freien” Netzen oftmals am Hotspot aufgebrochen. Da könnte der Anbieter also alle Verbindungen mitlesen. Auch zum Onlineshop oder Onlinebanking. “Machen die ja nicht” ist mir da kein Argument, wenn sie es nicht können wollen würden, müssten sie die SSL-Verbindung nicht aufbrechen. Und selbst wenn es einfach eine Standardfunktion des Zugangs-Routers ist, kann dieser selbst kompromittiert werden. SSL-Interception ist ein absolutes No-Go, daher nutze ich auch weder das WLAN von real, noch vom UCI Kino.

Mit VPN ist das aber kein Problem, alles geht einfach gekapselt erst zu Hause ins Internet. In fremden WLANs baue ich daher immer das VPN auf. OpenVPN könnte auch automatisch das VPN aufbauen, aber leider nur grundsätzlich bei jeder WLAN Verbindung. Auch, wenn ich zu Haus bin und das hat gar keinen Sinn. Also brauchte ich eine Lösung, um das VPN automatisch, aber nicht zu Hause (oder anderen vertrauenswürdigen Netzen). Und das erledige ich nun mit Tasker:


Tasker ist ein mächtiges Werkzeug, dementsprechend ist es auch etwas komplexer, als nur einen bunten Knopf zu drücken. Die regeln, die ich hier verwende, sind aber simpel und kratzen nur an der Oberfläche von dem, was Tasker kann.

Benötigt wird — neben dem VPN-Server — auf dem Gerät wie erwähnt Tasker sowie das OpenVPN Tasker Plugin und für das VPN verwende ich OpenVPN für Android. von Arne Schwabe. Von Tasker gibt es auf der Webseite eine 7 Tage Testversion zum download.

In Tasker richten wir in dem Reiter “Profile” ein neues Profil ein über den + Knopf unten rechts. Wir benötigen eines vom Typ “Status”, dann “Netzwerk” und schließlich “WiFi Verbunden”. Eine weitere Konfiguration ist nicht notwendig, über den Pfeil oben links einfach wieder zurück gehen. Das war unsere Bedingung, bei der etwas erledigt werden soll.Tasker Profiltypen
Es öffnet sich selbstständig eine Schaltfläche “Neuer Task”, diese tippen wir an. Der Name ist optional, ich habe keinen Vergeben. Wir befinden uns nun im Editor für die Aufgaben. Über das + unten rechts fügen wir nun eine Aufgabe hinzu. Hier wählen wir die Kategorie “Plugin” und dann das “OpenVpn Tasker Plugin”. Über das Stiftsymbol bei “Konfiguration” wird das VPN-Profil ausgewählt, das gestartet werden soll. Darunter habe ich bei “Timeout” 20 Sekunden Wartezeit eingerichtet, da manche WLANs etwas Zeit benötigen bis man wirklich ins Internet kommt. Bei dem Wert muss man etwas experimentieren, auch eine Minute kann sinnvoll sein oder nur 5 Sekunden. Über den Pfeil oben links kommt man wieder zum Aufgabeneditor und da wir keine weitere Aufgabe benötigen können wir auch hier wieder mit dem Pfeil zurück gehen.Tasker Aktion VPN Verbinden

Nun wird das VPN aufgebaut, sobald man mit einem WLAN verbunden ist. Was noch fehlt, sind die Ausnahmen. Die fügen wir hinzu, indem wir lange auf die “WiFi Verbunden” tippen und in dem folgenden Menü dann auf  “Hinzufügen”. Damit wird eine weitere Bedingung angelegt. Hier wählen wir wieder “Status”, “Netzwerk” und “WiFi Verbunden”. Dieses mal tragen wir bei SSID aber die Netzwerke ein, bei denen kein VPN aufgebaut werden soll. Ist man gerade in Reichweite, kann man es über die Lupe direkt auswählen. Mehrere Netzwerke werden durch einen Schrägstrich getrennt, also z.B. “Heimnetzwerk/Meine Firma/Bester Kumpel”. Ganz wichtig: unten den Haken setzen bei “Umkehren”, damit greift die Regel also nur, wenn die eingetragenenen SSIDnicht verbunden sind. Über den Pfeil oben links geht es wieder zurück.
Insgesamt müssen nun beide Bedingungen zutreffen, damit die Aktion ausgelöst wird: 1. es muss ein WLAN verbunden sein und 2. es darf nicht so heissen, wie in der zweiten Bedingung definiert. Damit sind wir fast fertig.

Nun wird das VPN zwar automatisch aufgebaut, aber es bleibt aktiv, bis es wieder abgebaut wird. Wenn ich über Mobilfunkverbunden bin will ich das aber nicht. Also fügen wir noch eine Aktion hinzu, die das VPN wieder deaktiviert wenn wir das WLAN verlassen.
Dafür tippen wir lange auf die Aktion “OpenVPN Connect” (oder wie auch immer du sie genannt hast) und wählen “Ausgang Task Zufügen”. Nun wieder “Neuer Task”, der Name ist wieder optional, und wir sind wieder im Aktionseditor. Wieder mit + eine neue Aufgabe hinzufügen, “Plugin” und “OpenVpn Tasker Plugin” auswählen. Bei der Konfiguration wählen wir dieses mal “Disconnect VPN”. Bestätigen und über die Pfeile oben links wieder zurück zur Übersicht. Es sollte nun so aussehen:

Tasker Regel

Nun wird das VPN in allen WLANs außer den von mir definierten aufgebaut, genau so, wie ich es haben wollte.
Zusätzlich habe ich eine weitere Regel angelegt, die in den von mir definierten Ausnahmen ein evtl. aufgebautes VPN explizit deaktiviert. Wenn ich es z.B. im Mobilfunk manuell aufgebaut habe wird es ja nicht automatisch deaktiviert und es hat keinen Sinn, dass ich mich zu Hause per VPN nach Hause verbinde wink. Oder ich will/muss in bestimmten WLAN Netzen auf lokale Rechenr zugreifen, dann darf das VPN auch nicht aufgebaut sein.
Also auf der “Profile” Seite ein neues Profil eingerichtet, wieder “WiFi Verbunden” und dort die Ausnahme-WLANs unter SSID eingetragen. Hier nun den Haken bei “Umkehren” natürlich nicht setzen. Als Aktion wieder “Disconnect VPN” auswählen und fertig ist auch diese Regel.
Den Regeln kann man auch noch sprechende Namen geben, ganz nach persönlichem Geschmack.

Viele Worte, aber ich hoffe, es war so verständlich. Und glaub mir, Tasker kann noch viiiiiiiel mehr und wird dann in der Konfiguration beinahe beliebig komplex und unübersichtlich cheeky

Trackbacks

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Michael am :

Michael

Prima Anleitung, so etwas hatte ich schon mit Automgic versucht. Leider vergeblich.
Man muss bei OpenVPN übrigens beachten, dass es recht deutlich am Akku saugt. Also schon aus dem Grund nur dann einschalten, wenn es wirklich nötig ist.

Michael

rowi am :

Auf Twitter lesen: rowi
rowi

Verschlüsselung kostet natürlich etwas Rechenleistung und damit auch Strom. Für die Zeiträume, die ich in unsicheren WLANs unterwegs bin, ist das aber noch kein entscheidender Faktor.
Wenn man den ganzen Tag in einem nicht vertrauenswürdigen Netz mit aktivem VPN ist, sieht das natürlich anders aus.
Als ich es gestern mal ausprobiert habe war der Akku zwar leerer, aber gefühlt nur im Bereich von einer halben Stunde Screen-On Zeit.
Wobei eine Stichprobe natürlich nicht viel aussagt, ob und wie man es nutzt/nutzen kann ist sehr individuell.

rowi schrieb auch: Android/iOS: mit Nextcloud (und Raspberry Pi) etwas Unabhängigkeit von Google und Apple

jdkinf am :

jdkinf

Prima Sache, danke für die ausführliche Anleitung. Werde ich am WE gleich mal hinbasteln.

Andre Lehrmann am :

Andre Lehrmann

Hi,
wenn ich das richtig verstehe, wird die VPN Verbindung automatisch aufgebaut sobald eine Wlan Verbindung hergestellt wird.
Nehmen wir das Beispiel real, dort ist eine Login-Seite vorgeschaltet.
Kann ich dann immer noch die Nutzungsbedingungen bestätigen und danach das WLAN mit VPN nutzen?
Oder funktioniert Deine Lösung nur wenn das wlan keine Login-Seite hat?
Schönen Gruß,
AL

rowi am :

Auf Twitter lesen: rowi
rowi

Das funktioniert weiterhin, aber das VPN wird nach der konfigurierten Wartezeit aufgebaut, sobald das WLAN verbunden ist. Hat man die Login-Seite noch nicht bestätigt wird die Verbindung erstmal über das Mobilfunknetz aufgebaut.
Lokale Adressen, wie die des WLANs bleiben lokal, man erreicht die Login-Seite noch und kann sie bestätigen.
Danach hakelt es dann evtl. etwas, weil das VPN durch den Netzwechsel neu aufgebaut werden muss. OpenVPN sollte dafür so eingestellt sein, dass es das VPN automatisch bei Unterbrechung neu aufbaut, aber das ist IIRC eh die Standardeinstellung und da man auch bei normaler Verwendung immer mal einen Netzwechsel hat auch sinnvoll.

Wenn der Neuaufbau stört würde ich etwas mit dem timeout spielen und vielleicht eine Minute warten lassen. Praktisch sehe ich den nötigen Neuaufbau des VPN aber nur als geringes Problem, da ich mich eh manuell im Netz freischalten muss sehe ich ja durch die Icons, wenn das VPN wieder aufgebaut wurde und könnte das notfalls auch von Hand machen

Andre Lehrmann am :

Andre Lehrmann

Vielen Dank für die Rückantwort.

dazilla am :

dazilla

Hallo,
das ist eine coole Sache, bei mir ist aber noch eine unschärfe drin. Sobald ich mit dem VPN verbunden bin, disconnected Tasker mich wieder und verbindet neu. Kann mir jemand auf die Sprünge helfen? Eigtl. hab ich den Ausgangstask genauso übernommen wie beschrieben.
Danke!

Andre Lehrmann am :

Andre Lehrmann

Bei mir funktioniert soweit alles.
Eine Theorie interessiert mich noch.
Nehmen wir mal an es gibt ein Freies Wlan ohne Anmeldung, d.h. verbinden und sofort ist man im Internet.
Jetzt gibt es ja eine Zeitverzögerung bis das VPN aufgebaut ist.
In dieser Zeit verbindet sich fröhlich mein Mailclient.
Jetzt ist das aber böses “Freies Wlan” und macht maninthemiddle und schwupps ist mein Passwort geklaut.
Gibt es einen Trick (ausser den Mailclient (k9) auf manuellen Abruf stellen) damit der Mailclient auf die VPN Verbindung wartet?
Schönen Gruß,
AL

Andre Lehrmann am :

Andre Lehrmann

Sorry, im OPENVPN Client gibt es ja die Option seamless tunnel.
Hatte ich übersehen. Frage ist damit hinfällig.

Sercan Atakci am :

Sercan Atakci

Wie kann ich es so einstellen das VPN automatisch angeht sobald ich mit dem Mobilfunknetz angemeldet bin. Ich möchte gerne auch unterwegs Werbung mit Pi Hole blockieren deswegen auch die VPN Verbindung.

rowi am :

Auf Twitter lesen: rowi
rowi

Das ist bei OpenVPN direkt einstellbar, dafür benötigt man Tasker nicht: Einfach in den allgemeinen Einstellungen von OpenVPN “Beim Gerätestart verbinden” aktivieren.

Sercan Atakci am :

Sercan Atakci

Ist die VPN Verbindung dann nicht dauerhaft aktiv. Im eigenen Heimnetzwerk brauche ich es ja nicht sondern nur wenn ich mit dem Mobilfunknetz verbunden bin und in fremden WLAN’s wie z.B. in einem Hotel.

Gruß
Sercan

rowi am :

Auf Twitter lesen: rowi
rowi

Das stimmt, dann müsstest Du ein Profil analog dem “WiFi verbunden” anlegen:
Neues Profil vom Typ “Status”, dann “Netzwerk” und schliesslich “Mobiles Netzwerk”. Hier kannst Du alle Netzwerkarten auswählen, bei denen das VPN aufgebaut werden soll. Im Prinzip ja alle Arten, ich könnte mir aber vorstellen, dass es bei 2G schon zu viel Bandbreite kosten könnte. Das würde ich einfach mal ausprobieren.

Je nach Smartphone/Android-Version oder auch Konfiguration kann es sein, dass das Handy auch im WLAN eine Mobilfunkverbindung hält (aber nicht benutzt). Dann auch bei diesem Profil noch einmal lange auf den Namen tippen und wie beim WiFi Profil die WiFi Ausnahmen definieren (siehe oben, mit Haken bei “Umkehren”)

Sercan Atakci am :

Sercan Atakci

Ok, vielen Dank für die Rückantwort. Ich werde es mal ausprobieren.

synth3 am :

synth3

Hallo und vielen Dank für diesen Beitrag. Kannst du die von dir befürchtete SSL-Interception näher erklären? Hast du dazu Quellen? Wenn das mit ordentlich programmierten TLS-Clients möglich wäre, dann wäre das schon eine fette Schlagzeile wert…

Viele Grüße

rowi am :

Auf Twitter lesen: rowi
rowi

Bei korrekter Implementierung ist das vermutlich höchstens Geheimdiensten möglich, wenn überhaupt.

Grundsätzlich wird dabei die SSL Verbindung abgefangen und am Router beendet. Der baut dann selbst die Verbindung zum eigentlichen Ziel auf und kann so die Inhalte sehen. Für den eigentlichen Client, also z.B. das Smartphone, werden die Daten dann wieder verschüsselt.
Das kann dann natürlich nicht mehr mit dem korrekten Zertifikat geschehen, (zu) viele Apps prüfen aber nicht das Zertifikat, sondern nur, ob die Verbindung verschlüsselt ist. Das ist also auch ein Fehler in der Implementierung, dass das Zertifikat nicht geprüft wird. Aber noch immer ist das oft der Fall und ohne relativ aufwändigen Test kann man das als Anwender nicht wissen und müsste auch jedes Update neu prüfen.

Schwerer wird es bei Webseiten, Chrome kennt die Zertifikate von Google selbst, aber grundsätzlich müsste man das Zertifikat jeder Webseite bei jedem Aufruf manuell prüfen.

Von daher: bei ordentlich programmierten Clients funktioniert die SSL-Interception nicht, aber ob der Client ordentlich programmiert ist, kann man schlecht prüfen. Und auf Webseiten müsste man es immer manuell prüfen. Zertifikat-pinning wirkt halt nur auf ein paar ausgesuchte Seiten.

rowi schrieb auch: gesehen: Ballon

Tille2000 am :

Tille2000

Hallo, ich lese in dieser gut erklärten Anleitung, das OpenVPN sich automatisch im WLAN verbindet, finde aber nirgends im Internet oder in der App die Einstellung dazu.
Benutze jetzt OpenVPN for Android (vorher Openvpn Connect) und habe bei beiden nichts gefunden.

Ich hätte es gerne so, das wenn man aus dem WLAN ist, sich die VPN Verbindung trennt.

Mike am :

Mike

Hallo, die Idee ist gut, aber es geht einfacher, zumindest bei meinem Setup. Als VPN-Server daheim habe ich eine Fritzbox und als VPN-Client auf meinem Handy vpnzilla von Matthias Maier. Den gibt’s als Trial bzw. als Vollversion für 4,39€ im Google Play Store. Der Client hat für WLANs sowohl eine Whitelist als auch eine Blacklist und somit muss ich weder einen zusätzlichen Tasker installieren, der im Hintergrund läuft, noch muss ich mit dem Raspi-OPEN-VPN daheim betreiben und spare Strom (dafür hat mein Raspi daheim einen Maga-Guten Ad-Blocker auf DNS-Basis am laufen. Pi-Hole. Der kennt die DNS-Adressen von Werbelinks und blockt diese. Zur Anfrage wird keine IP geliefert und am Client erscheint deutlich weniger Werbung. Verbinde ich mit über meinen VPN-Client, kann ich meinen Raspi als DNS-Server einstellen und bekomme auch beim surfen unterwegs deutlich weniger Werbung, egal ob om Fremd-WLAN oder mobile Daten. Dies mal als Anreiz. Ich habe von dieser Seite auch schon interessante Tipps bekommen (automatisierte Katze), da gebe ich gerne mal einen Tipp zurück. Weiterhin viel Spaß.

rowi am :

Auf Twitter lesen: rowi
rowi

Moin Mike,

VPnCilla sieht wirklich gut aus und macht mit IPSec VPNs in der Tat im Prinzip genau das Gleiche, nur etwas einfacher in der Benutzung.
Ich habe zwar auch eine Fritzbox, benutze für VPN aber OpenVPN auf einem Pi dahinter. IPSec mag ich nicht mehr, seit ich das früher beruflich administrieren musste wink. Pi-Hole läuft da auch drauf und filtert das VPN mit.

Danke für den Tipp! Sobald sich unsere Wohnsituation nach der Überflutung normalisiet hat werd ich auch wieder bloggen.

Kommentar schreiben

Textile-Formatierung erlaubt
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Twitter, Identica, Pavatar, Gravatar, Wavatars, Monster ID Autoren-Bilder werden unterstützt.
Wenn Du Deinen Twitter Namen eingibst wird Deine Timeline in Deinem Kommentar verlinkt.
Bewirb einen Deiner letzten Artikel
Dieses Blog erlaubt Dir mit Deinem Kommentar einen Deiner letzten Artikel zu bewerben. Bitte gib Deine Blog URL als Homepage ein, dann wird eine Auswahl erscheinen, in der Du einen Artikel auswählen kannst. (Javascript erforderlich)
Formular-Optionen