[HowTo] VPNonDemand zusammen mit der Fritzbox
Wie kriegt man VPNonDemand unter iOS mit der FritzBox zum laufen? Hier ein kleiner Waschzettel zum umsetzen. Jetzt auch wieder lauffähig unter iOS 9 🙂
Durch die Freakshow, vorallem durch Clemens Schrimpe (Twitter: @csch42 ) der das Thema dort ansprach/aufbrachte.
Wenn man jetzt den iPhone Configurator anschmeißt/oder in iOS einrichtet merkt man das das VPN nur funktioniert wenn man es vorher manuell aufgebaut hat.
VPNonDemand funktioniert (zumindestens nach dem iPhone Configurator) nur mit Zertifikaten (z.b. wenn man als Gegenstelle Strongswan nutzt).
Nach etwas Recherche fand ich diesen Blog und auch “Configuration Profile Key Reference” von Apple.
Zuerst hatte ich mit der Vorlage Probleme (die aber nicht an der Vorlage lagen wie ich später merkte; den genauen Fehler konnte ich jedoch nicht identifizieren) z.b.: das ich entweder die Fehlermeldung bekam “ungültiges Profil” oder “Authenifizierung fehlgeschlagen”.
Warum der erste Fehler auftrat ist mir ein Rätsel.
Zu Fehler Nr.2 war der Fehler etwas kurios. Obwohl zum Test das Passwort circa so aussah 9T6pxfZKVgjW9ThLG , also ohne Sonderzeichen. Dies führte (warum auch immer) zu Problemen.
Nach Änderung auf ein neues Passwort lief es ,sogar mit Sonderzeichen!
Beim einrichten unter iOS störte mich die Sache das ich Benutzername und Passwort erneut eingeben musste, die man vorher in der FB angelegt hatte. Nach etwas stöbern in der “Configuration Profile Key Reference” und Discussions-Forum jeweils von Apple fand ich auch hier zu die Lösung (XAuth).
Wichtiger Hinweis: Nach dem Einspielen der mobileconfig MUSS das von einmal von Hand aufgebaut werden. Scheint so ein iOS-Ding zu sein 😉
//Update 02.04.2015
Hinweis Nr. 2.: Ihr kopiert den Inhalt unten aus der Codebox in einen Texteditor und speichert es als .mobileconfig ab. Dann sich z.b.: per Email aufs iOS-Device schicken. Anklicken und der Rest erklärt iOS dann.
//Update Ende
//Update 26.09.2015
Jetzt funktioniert es wieder mit iOS 9. Es dürfen keine IP’s mehr angegeben werden sondern nur Domains wie z.b. heise.de oder für lokale Adresse sowas wie *.local oder ritz.box. Hatte es vor kurzem gefunden u.a. bei Apple und auch danke an den Hinweis aus den Kommentaren von TF.
//Update Ende
Genug der Vorgeschichte hier das Skript inkl. Kommentare. Wenn jemand Verbesserungen weiß ruhig in die Kommentare rein und ich ergänze es.
Vielen Dank an:
- @jollyjinx für seine Anpassungen/Verbesserungen an der Config. Waren ein paar unsinnige Einträge drin, die ich auch mangels seinem Hintergrundwissen zum Aufbau der Config, einfach übernommen hatte 😉 Ist ja nicht mein täglich Brot 😉
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <!-- Danke an @jollyjinx fürs seine Verbesserungen an der Config --> <dict> <key>PayloadContent</key> <array> <dict> <key>IPSec</key> </dict><dict> <key>AuthenticationMethod</key> <string>SharedSecret</string> <key>XAuthEnabled</key> <integer>1</integer> <!-- Hier fügt ihr euren Benutzernamen den ihr in der FB eingerichtet habt --> <key>XAuthName</key> <string>Benutzer_VPN</string> <!-- Hier fügt ihr euer Passwort ein das ihr mit dem Benutzer eingerichtet habt --> <key>XAuthPassword</key> <string>Benutzer_Passwort</string> <key>OnDemandEnabled</key> <integer>1</integer> <key>OnDemandRules</key> <array> <!-- In diesem Abschnitt richtet ihr ein in welchem WLAN kein VPN aufgebaut wird --> <dict> <key>InterfaceTypeMatch</key> <string>WiFi</string> <key>SSIDMatch</key> <array> <string>Bunti</string> </array> <key>Action</key> <string>Disconnect</string> </dict> <!-- Hier stellt man ein bei welchen Domains eine VPN aufgebaut wird. Für lokale Adressen aus dem eignen Netzwerk z.b. *.local verwenden oder *.fritz.box --> <dict> <key>Action</key> <string>EvaluateConnection</string> <key>ActionParameters</key> <array> <dict> <key>Domains</key> <array> <string>*.local</string> <string>*.fritz.box</string> <string>fritz.box</string> </array> <key>DomainAction</key> <string>ConnectIfNeeded</string> </dict> </array> </dict> </array> <!-- Als LocalIdentifier eueren VPN Benutzernamen aus der FB --> <key>LocalIdentifier</key> <string>Arnaud_VPN</string> <key>LocalIdentifierType</key> <string>KeyID</string> <!-- RemoteAddress ist euere DynDNS oder MyFritz-Adresse wo ihr eure FB erreicht --> <key>RemoteAddress</key> <string>xxxxxxxx.myfritz.net</string> <!-- Der SharedSecret gibt die FB vor. Wird u.a. beim einrichten angezeigt --> <key>SharedSecret</key> <string>SharedSecret_aus_der_FB</string> </dict> <!-- Die PayloadDescription: Hier könnt ihr eine kurze Beschreibung des Profils hinterlegen --> <key>PayloadDescription</key> <string>Meine VPNonDemand-Profil</string> <!-- PayloadDisplayName: Der Name eueren Profils --> <key>PayloadDisplayName</key> <string>VPNonDemand</string> <!-- PayloadIdentifier: Hier wird ein beliebiger PayloadIdentifier eingefügt / Unterschiedlich falls mehrere VPN-Endpunkte in einer mobileconfig sind--> <key>PayloadIdentifier</key> <string>MeinIdentifier1</string> <!-- PayloadOrganization: Kann man vergeben muss man aber nicht. Hier im Beispiel VPN @Home --> <key>PayloadOrganization</key> <string>VPN @Home</string> <key>PayloadType</key> <string>com.apple.vpn.managed</string> <!-- PayloadDUUID: Ihr fügt man eine eindeutige UUID ein --> <key>PayloadUUID</key> <string>99D9B992-2B9D-4E8D-9F72-7F3E5E1892D0</string> <key>PayloadVersion</key> <integer>1</integer> <!-- UserDefineName: Eine Beschreibung die man vergeben kann --> <key>UserDefinedName</key> <string>VPN @Home</string> <key>VPNType</key> <string>IPSec</string> </array></dict> <key>PayloadDescription</key> <string>VPNonDemand@Home</string> <key>PayloadDisplayName</key> <string>VPNonDemand</string> <!-- PayloadIdentifier: Hier wird ein beliebiger PayloadIdentifier eingefügt/ Unterschiedlich falls mehrere VPN-Endpunkte in einer mobileconfig sind--> <key>PayloadIdentifier</key> <string>MeinIdentifier2</string> <!-- PayloadOrganization: Eine Organisation die man vergeben kann --> <key>PayloadOrganization</key> <string>VPN @Home</string> <key>PayloadType</key> <string>Configuration</string> <!-- PayloadUUID: Ihr fügt man eine andere eindeutige UUID ein --> <key>PayloadUUID</key> <string>51D88739-99D9-48B3-9C34-D2211D75C1EB</string> <key>PayloadVersion</key> <integer>1</integer> </dict> </plist>
Viel Spass 🙂
Mit dem Update auf IOS 9 funktioniert das irgendwie nicht mehr.
Ist bekannt. Irgendwas hat sich verändert. Muss nur mal die Zeit finden es genau auszutesten. Es geht noch jedoch muss an der Config was verändert werden.
Stay tuned 🙂
OK, nach etwas Recherche geht es wieder. Im Profile werden IP-Adresse nicht mehr unterstützt.
Daher:
Action
EvaluateConnection
ActionParameters
Domains
fritz.box
*.fritz.box
DomainAction
ConnectIfNeeded
Danke für die Info 🙂 hatte auch schon sowas gefunden jedoch keine Zeit zum testen.
Morgen mal aktualisieren. Wenn das ok ist würde ich dich kurz erwähnen im Blogpost.
Was ist zu tuen damit bei aktivem VPN auch die fritz.box Namen aufgelöst werden?
z.B.
nas.fritz.box wird im Lan sauber aufgelöst auf dem iPad wird auch die VPN Verbindung aufgebaut, aber das Gerät findet er leider nicht.
Hallo Jens,
also ich habe es gerade probiert.
Also bei meiner 7490 mit 06.51 drauf erreiche ich den NAS nur per “fritz.box/nas”
“nas.fritz.box” klappt sowohl lokal nicht mehr als auch per VPN.
Welche FritzBox hast du denn? Welche Firmware?
Hallo,
leider wenn ich ihre Config versuche zu verwenden bekomme ich folgenden Fehler:
Via Dropbox:
Profil kann nicht installiert werden.
Safari könnte ein Profil nicht installieren (unbekannter Fehler).
Via Mail:
ungültiges Profil
Könnten Sie mir helfen?
LG
Michael
Versuchst du über die Dropbox-App die mobileconfig einzuspielen?
Hallo zusammen,
@Michael: Dann hast du einen Fehler im Profil, liegt nicht an der Art der Installation. Hast du auf Sonderzeichen (Leezeichen) im VPN User der BOX verzichtet?
Dann mal eine andere Frage, was bringt der Eintrag *.local im Script? wird dann jeder Aufruf über das VPN geschickt?
Mein Ziel ist es nämlich eigentlich ständig mit meinem Heimnetzwerk verbunden zu sein und die Fritzbox unterstützt leider diese Art der Profile nicht.
Hallo Lars, wenn ich im Safari oder irgendeiner App einen Server mit .local Aufrufe wird das eine Verbindung aufgebaut.
Wenn ich es jetzt richtig im Kopf habe das wenn du den ganzen Abschnitt mit den Domains (wie Fritz.box etc.) rauslässt aus der Config wird die Verbindung immer aufgebaut unabhängig wo du bist (außer in denen Heimnetzwerk (da solltest du den WLAN-Namen angeben).
…wie kann ich DDNS Domains meiner synology für VPN einrichten, hab die Domainadressen hinzugefügt klappt aber nicht. wie muß ich z.B. xxxxxx.synology.me einfügen um beim Aufruf VPN zu nutzen.
bettho.myftp.org hab ich versucht VPN wird nicht gesetzt!
Was für eine Fehlermeldung kommt denn?
Hast du es mal mit Fritz.box probiert?
Dein XML-File ist nicht valide. Das letzte /dict (hinter dem /array) müsste mE in der vorletzten Zeile vor dem /plist stehen.
Bin aktuell unterwegs. Versuche mir das später anzuschauen.
Danke für den Hinweis. Da ist wohl beim Umzug des Skripts zuletzt was “runtergefallen”. Ist korrigiert 🙂
Wenn ich es mit Notepad++ speicher, im xml Format, mit der Dateiendung .mobileconfig, dann kann ich es auf dem iPhone nicht öffnen.
Es geht immer nur das Fenster auf mit den Weiterleitungsfunktionen.
Wie muss ich die Datei speichern und womit, damit ich sie nutzen kann.
Besten Dank
Lenard
Wie kommst du diese denn aufs iPhone? Per Mail? Welches iOS?
Per Mail und iOs 10.
Seltsam ist dass andere mobileconfig Dateien funktieren und sich öffnen lassen. Nur halt die oben kopierte und selbst abgespeicherte nicht 🙁
Gruss
Also ich habe gestern erst damit (mit SubEthaEdit unter macOS) eine VPN Einrichtung erstellt und entsprechend eingespielt.
Ich Vergleich es später nochmal und melde mich hier nochmal
Ich vermute dass es bei mir am Abspeichern der Datei liegt. Irgendwas wird da möglicherweise am Format geändert. Hast du da einen Tip zu ?
Gruss
Ps. vieleicht eine DL Datei die ich einspielen kann ?
Schau mal hier
https://github.com/ArnaudFeld/myVPNonDemandConfig
Hab das Script zum selberhosten gebastelt (auch auf lokalem PC mit lokalem Webserver).
Da ist auch ein Link wie das aussieht.
Denk dran das man nur Domains eintragen darf seit iOS9 statt wie früher IPs
Danke dir.. ich probiere es mal aus und sage Bescheid !
Toller Service !!!!!
Funzt !! Super.. Danke für die schnelle Hilfe
Freut mich zu hören 👍
Ich schau mir trotzdem heute oder am Wochenende den Code oben nochmal an 😎
Hallo ich hab immer noch ein Problem, vielleicjht kannst du mir helfen!
VPN startet manuel einwandfrei.
aber ich bekomm das nicht hin das die VPN üüber die domain startet.
habe eine SPS S7300 mit fester IP (Name SPS-192-168-***-***)
habe dann als Domain SPS-192-168-***-***.local oder .fritz.box versucht aber die VPN öffnet nicht.
keine plan mehr, oder funktioniert das allgemein nicht das ich die VPN über eine App starte die ein lokale IP abfragt??
Mit freundlichen Grüßen
Chris Lenz
Hallo Chris,
Welche App nutzt du denn? Bin kein Entwickler jedoch scheint es wohl verschiedene Wege zu geben wie Apps URLs auflösen bzw. Aufrufen.
Klappt es denn wenn du die URL mittels Safari aufrufst?
Gruß
Arnaud
Hallo Arnaud.
ich beschäftige mich schon länger mit dem Thema VPN on Demand.
Ich habe eine Fritz!Box Cable 6490 und einen Anschluss von Unitymedia. Auf meinem iPhone läuft das aktuelle iOS 10.
Ich habe deinen Generator benutzt und alle ordnungsgemäß eingepflegt. Das hast du echt gut gemacht.
Die manuelle Verbindung per VPN funktioniert tadellos. Auch die automatische Verbindung, wenn ich z.B. nas.fritz.box eingebe.
Leider verbindet sich mein iPhone in Fremd-WLAN-Netzen nicht automatisch per VPN, wenn ich im Safari am surfen bin.
Kannst du mir hier ggf. helfen bzw. einen Tipp geben?
Du würdest mir echt einen sehr großen Gefallen tun.
Dankeschön.
Hallo Peter,
ich habe es eben nur schnell getestet aber konnte das Fehler Bild nicht nachstellen.
Hast du die Datei mal erstellt mit Inhalt aus dem Blogpost? Sicher ist Sicher.
Das Generator war eigentlich nur ein “Guck mal das kann man auch in Formularform umsetzen”-Gedankenspiel.
Habe es auch auf Github.com gestellt falls einer Verbesserungen machen möchte. Ist halt nur rudimentär gemacht. Bin jetzt auch kein Programmierer oder so 😉
Hallo Arnaud,
vielen Dank für die schnelle Antwort.
Mit dem Blogpost komme ich ehrlich gesagt nicht so gut klar, wie mit dem Generator.
Aber ich habe auf dieser Seite mal noch einen interessanten Ansatz gefunden:
https://www.iphone-ticker.de/vpn-anleitung-iphone-fritzbox-und-vpn-on-demand-97462/
Wenn man die Reihenfolge so einstellt, funktioniert es:
VPN bei ausgewählten WLAN-Netzen deaktivieren
VPN bei aktiver WLAN-Verbindung aktivieren
VPN beim Zugriff auf Heimnetz-Adressen aufbauen
VPN im Mobilfunknetz nicht aktivieren
Allerdings ist mir aufgefallen, dass das iPhone im gesperrten Zustand aus dem W-LAN geht uns sich erst nach dem Entsperren mit dem W-LAN bzw. mit der VPN verbindet.
Kannst du mir den Blogpost irgendwie so zukommen lassen, dass du mir die Felder die ich befüllen muss rot markierst?
Ich würde das gerne mal mit deinem Aufbau probieren.
Vielen Dank.
Das Problem mit dem WLAN tritt aber nur mit der abgeänderten config auf mit der Erweiterung von iPhone-Ticker?
Also ich habe den Inhalt des Blogpost und die vom Generator bzw. die von Github verglichen. Also da fällt mir keine Unterschied auf.
Würde also da kein Unterschied machen.
[…] sich aktuell bei mir die Zeit findet, hier in den Blog als Zusammenfassung meiner Blogpost von hier und hier in einen separaten Blogpost […]
Hi,
funktioniert die Anleitung noch mit iOS 11.1.1? Kann das config File nicht importieren
Hallo Simon,
Ja die Config klappt unter 11.1.1 bzw 11.1.2 (was vorhin released wurde).
Welche Meldung kommt denn?
Gruß
Arnaud
Hallo,
Ich kann die mobileconfig Datei nicht über E-Mail Anhang importieren.
Viele Grüsse Simon