VPN on Demand auf dem iPhone.

VPN on Demand ist eine äusserst praktische Funktion, wenn man täglich öfter wechselnde Netzzugänge hat (WLAN, Mobilfunknetz) und abhängig vom aktuell eingebuchten Netz eine automatische VPN-Verbindung aufbauen möchte, ohne dies jedesmal manuell und umständlich über die iPhone Einstellungen tun zu müssen. Das lässt sich relativ einfach mit einem entsprechenden Configuration Profile auf dem iPhone realisieren.

Profilerstellung mit Apple Configurator.

Zur Erstellung eines Configuration Profiles für das iPhone installiert man zunächst den kostenlosen Apple Configurator auf dem Mac. In der Regel benutzt man diese App, um zentral auf mehreren iDevices gleichzeitig verschiedenste Einstellung, Berechtigungen oder Apps zu konfigurieren, zu verwalten und auszurollen.

Über Ablage → Neues Profil → VPN erstellt man sich zunächst ein einfaches Profil, das im Kern die Zugangs- und Authentifizierungsinformationen eures VPN-Zugangs enthält.
Später werden noch manuell die On Demand Regeln hinzugefügt, über die das automatisierte Ein- u. Ausschalten einer VPN-Verbindung gesteuert wird. Diese Profil-Datei mit der Endung .mobileconfig ist nichts anderes als ein simples XML-File im .plist Format, das problemlos in TextEdit oder einem anderen Editor bearbeitet werden kann.

Meine VPN on Demand Use Cases.

In meinen täglichen Gebrauch kommen folgende drei Use Cases regelmäßig vor:
– Im Heim-WLAN benötige ich in der Regel keine VPN-Verbindung, weshalb sie dort immer abgeschaltet sein soll.
– Sobald ich in einem anderen WLAN eingebucht bin (z.B. öffentlicher Access Point, Restaurant u.ä), soll automatisch eine  VPN-Verbindung aufgebaut werden.
– Im Mobilfunknetz soll keine VPN-Verbindung aufgebaut werden bzw. eine aufgebaute Verbindung wieder getrennt werden, wenn ich ein WLAN eines öffentlichen Access Points, Restaurants o.ä. wieder verlasse.

Es gibt noch einen vierten Use Case, den ich aber (noch) nicht zum Laufen bekommen habe bzw. der die Regeln für die anderen Szenarien aushebelt. Aber dazu komme ich noch später.

On Demand Rules erstellen und Profil einspielen.

Dazu kann man entweder die Configuration Profile Key Reference von Apple heranziehen und die Regeln “zu Fuss” erstellen oder man sucht im Netz nach den fertigen Codeblöcken, die in das vorher rudimentär erstellte Profil eingefügt werden. In dieser Dokumentation sind alle Configuration Keys beschrieben, um ein Profil auf dem iPhone oder auch Mac zu steuern.

Die Regeln für meine Szenarien habe ich hier zusammengefügt:

Die einzige Anpassung, die hier noch notwendig ist, ist die Angabe der SSID eures WLANs (Zeile 13 oder 14). Wollt ihr in weiteren WLANs keine VPN-Verbindung aufgebaut haben oder nutzt mehrere SSIDs, so könnt ihr diese innerhalb des Arrays entsprechend ergänzen.

Nun wird der Codeblock einfach in das vorher erstellte Configuration Profile eingefügt und gespeichert. Und zwar VOR dieser Stelle:

Das Einspielen des .mobileconfig Files kann man entweder wieder einfach über die Apple Configuration App vornehmen, oder indem man alternativ das File per Email ans iPhone sendet und dort den Anhang öffnet.
Das neu installierte On Demand Profil erkenn man auch daran, dass unter den Verbindungseigenschaften ein grüner Schiebeschalter mit der Bezeichnung “Bei Bedarf verbinden” zu sehen ist.

vpn-on-demand-switch

Nach der Installation des Profils werden nun die drei oben genannten Use Cases wie gewünscht abgedeckt!

Wenn ihr das Profil später anpassen wollt, dann solltet ihr erst das aktuelle Profil auf dem iPhone löschen. Das geht einfach über Einstellungen → Allgemein → Profil.

Das fehlende Sahnehäubchen.

Zugegeben, es ist wirklich ein nice-to-have Feature, an dem ich immernoch noch erfolglos experimentiere. Und zwar soll ein VPN aufgemacht werden, sobald ich auf Ressourcen in meinem lokalen Netzwerk zugreife, sei es mein NAS, mein MacMini oder die FritzBox.

Dazu habe ich folgenden Codeblock als Regel mehrfach im Netz gefunden.

Für sich allein funktioniert diese Regel tadellos. Das Problem ist nur, wenn ich diese in das Profil einbaue, dann baut sich kein VPN mehr automatisch auf in “fremden” WLANs (also ausserhalb der spezifizierten WLANs). Ich habe bereits versucht die Reihenfolge der Regeln zu ändern oder die “Schaltlogik” zu invertieren, aber leider ohne Erfolg bzw. zum Teil mit nicht-gewünschten Querwirkungen auf andere Regeln.

Falls jemand eine Lösung dafür hat, so kann er sie mir gern in den Kommentaren oder per Email zukommen lassen.

UPDATE 16.5.2017:
Dank meines Lesers Markus (s. Kommentare unten), habe ich das Sahnehäubchen nun draufbekommen.
Den kompletten Codeblock findet ihr hier.

Bedanken möchte ich mich gern an dieser Stelle bei meintechblog.de und iphone-ticker.de für einige Hilfestellungen zur Erstellung der Profildatei.

Apple Configurator 2
Apple Configurator 2
Developer: Apple
Price: Free
Share:

24 thoughts on “VPN on Demand auf dem iPhone.

  1. Hallo,

    zuerst vielen Dank für Deine Anleitung. Hat mir sehr geholfen.

    Hast Du das Problem des “Sahnehäubchens” schon gelöst? Ich würde auch sehr gern auf mein NAS zurückgreifen und komme nicht weiter.

    Danke!

    Gruß
    KaMa

  2. Das Sahnehäubchen habe ich dem ganzen leider nicht aufsetzen können und eine Lösung konnte ich nicht finden. Leider.
    Insgesamt habe ich nun nach einigen Wochen auch feststellen müssen, dass es bei den anderen Use Cases sporadisch sehr lange dauern kann bis eine VPN-Verbindung überhaupt zu Stande kommt. Meistens jedoch klappt es jedoch sofort. Das kann aber auch daran liegen, dass einige Hot-Spots die benötigten Ports für VPN blockieren.

  3. Hallo,

    danke für Deine Antwort. Nach vielen Versuchen scheint es jetzt zu laufen.? Ich habe Deine Einstellungen genommen.

    Hier sind meine Einstellungen wie folgt:

    Action
    EvaluateConnection
    ActionParameters

    Domains

    *.local
    *.Name meiner NAS im Heimnetz lt. Fritzbox.DynDnsName.synology.me
    Name meiner NAS im Heimnetz lt. Fritzbox.DynDnsName.synology.me/string>

    DomainAction
    ConnectIfNeeded

    VPN Server ist auf der NAS eingerichtet. DynDNS ist von Synology mit Zertifikat von Let’s Encrypt.

    Ich bin absoluter Laie, hoffe aber, Du kommst mit meiner Anleitung klar.

    • Hi,
      vielen Dank für deine Anleitung, ich werds in jedem Fall ausprobieren!
      An welcher Stelle hast du dies im Skript eingefügt? Bei mir hatte ich festgestellt, daß es (zumindest in meinem Fall) Auswirkungen auf die anderen Use Cases gab in Abhängigkeit der Reihenfolge bzw. an welcher Stelle ich das Skript eingefügt hatte.

  4. Hallo,

    ohne darüber nachzudenken, habe ich es einfach ans Ende gesetzt und zwar hier:

    Action
    Disconnect

    Action
    …….

  5. Leider funktioniert es weiterhin nicht bei mir. Im Mobilfunknetz aktiviert sich VPN zwar sofort, wenn ich z.B. fritz.box im Browser aufrufe, in sonstigen WLAN-Netzten dann aber nicht nicht mehr.

    Vielen Dank aber für deine Hilfe!

  6. Tolle Konfiguration – auch ohne das Sahnehäubchen.
    Ich hab das Problem:
    Verbinden mit WLAN – VPN soll aktiviert werden.
    Das WLAN zeigt im Browser eine Anmeldeseite. Hier stockt das ganze weil der VPN erst dann aufgebaut werden kann wenn die Browser Anmeldung durch ist. D.h. Man müsste ein Wait einbauen. Wie ginge das

    Danke für Rückmeldung

    • Hallo Hans,
      sorry für die späte Reaktion erstmal!
      Ich glaube ich habe das Problem noch nicht ganz verstanden. Kannst du es etwas konkreter beschreiben?

  7. Guten Tag
    Erstmals Danke für die gute Anleitung.
    Ich habe ein Problem, sobald ich das erstellte Profil mit dem Texteditor bearbeite / ergänze, kann ich danach das Profil nicht mehr auf das iPhone rüberspielen. Ohne Bearbeitung geht das ohne Problem.
    Ich füge den Codeschnipsel von dir an angegebener Stelle ein und ergänze noch meinen Wifi Name. Danach sichere ich die Datei. Muss ich das in einem speziellen Format absichern?
    Was mache ich falsch?

    • Hallo Andi,
      prüf bitte mal folgendes:
      – Hat das File die Endung “.mobileconfig”?
      – Speichere das modifizierte File im Unix-Format ab, also mit LF statt CR.
      Damit solltes es in jedem Fall funktionieren.

  8. Das mit dem Sahnehäubchen hat bei mir geklappt. Ich hab dazu lediglich den Block “VPN beim Zugriff auf Heimnetz-Adressen aufbauen” vor den Block “VPN im Mobilfunknetz nicht aktivieren” gesetzt.

    • Danke für den Tipp, Markus!
      ICh werde das morgen gleich mal testen, da ich momentan geschäftlich noch unterwegs bin.

    • Hallo Markus, es hat jetzt endlich geklappt!! ICh hatte bereits sämtliche Kombinationen der Reihenfolge durchprobiert, bilde ich mir ein, aber diese entwerder ausgelassen oder übersehen. Egal, es funktioniert jetzt dank deines Tipps. Herzlichen Dank dafür!

      Den obigen Blogpost habe ich angepasst und in diesem neuen Post den kompletten Codeblock aufgelistet.
      http://nsign.net/das-vpn-sahnehaubchen-ist-endlich-drauf/

  9. Hallo zusammen,
    ich habe meine Profildatei mit dem unten stehenden Code ergänzt. Verhalten:
    1. Kein VPN in bekannten WLANs (ssid ergänzen) mit VPN Aufbau bei Zugriff auf lokale Adressen xyz.fritz.box
    2. VPN im fremden WLAN mit Zugriff auf lokale Adressen xyz.fritz.box
    3. Kein VPN im Mobilfunk-Netz mit VPN Aufbau bei Zugriff auf lokale Adressen xyz.fritz.box

    Funktioniert bei mir mit IOS 10 wunderbar. Evtl ist ja was hilfreiches dabei.


    OnDemandEnabled
    1
    OnDemandRules


    Action
    EvaluateConnection
    ActionParameters

    Domains

    *.local
    *.fritz.box
    fritz.box

    DomainAction
    ConnectIfNeeded

    InterfaceTypeMatch
    WiFi
    SSIDMatch

    ssid1
    ssid2
    ssid3
    ssid4
    ssid5
    ssid6


    Action
    Connect
    InterfaceTypeMatch
    WiFi


    Action
    EvaluateConnection
    ActionParameters

    Domains

    *.local
    *.fritz.box
    fritz.box

    DomainAction
    ConnectIfNeeded


    Action
    Disconnect
    InterfaceTypeMatch
    Cellular


    Action
    Disconnect

  10. Sorry, die entscheidenden Codezeilen wurden beim übertragen herausgefiltert. So ist das natürlich keine Hilfe.

    • Hallo Bulk,
      vielen Dank für deine Config!
      Ich denke auch ohne Tags ist verständlich, wie die Config aussehen soll.
      Heute Abend werde ich es mal ausprobieren, ob sie auch bei mir klappt.

  11. Hi ,

    wie darf ich mir dein Sahnehäubchen vorstellen ?

    Wenn ich extern meinen router/nas zuhause erreichen will (fritz.box) baut er erst ne VPN Verbindung auf und zeigt mir dann die Startseite meines Routers ?

    Aber ansonsten eine super Anleitung :)

    • Hallo Felix,
      genau so ist es. Du gibst in den Browser “fritz.box” ein und das iPhone baut automatisch eine VPN-Verbindung auf und du kommst auf die Login-Seite der FritzBox.

      Viele Grüße
      Fozi

Leave a Comment

*