Mikrotik: VPN-on-Demand für iPhone und iOS

VPN-on-Demand ist das Mittel der Wahl, um einfach und unkompliziert eine VPN-Verbindung nach Hause herzustellen. Im Prinzip handelt es sich dabei um eine normale VPN-Verbindung, die jedoch immer dann automatisch (on-Demand) gestartet wird, wenn es notwendig ist. Wann das genau passiert, wird über Regeln definiert.

VPN-on-Demand auf dem iPhone

 

Inhalt

Wann VPN-Verbindung wählen?

Sicher kann man unterschiedlicher Ansicht sein, wann eine VPN-Verbindung gewählt werden sollte. Aber da kann sich ja jeder seine eigene Meinung bilden. Ich finde es sinnvoll die Verbindung zu wählen, wenn ich unterwegs bin und auf das Heimnetzwerk zugreifen will (was sicher für die meisten die Intension ist). Aber auch, wenn ich mich in fremden (öffentlichen) WLANs befinde. Da ich häufiger dienstlich in Gastnetzwerken von Hotels und Kunden unterwegs bin und ich da eine gewisse Kontrolle der Netzwerke erwarte, gehe ich hier lieber auf Nummer Sicher.

VPN-on-Demand wird über Regeln definiert. Bei mir lauten diese so:

  1. Im heimischen WLAN mit der SSID ... VPN trennen (die SSID ist der WLAN-Name bei mir Zuhause)
  2. Wenn ich mich in einem anderen WLAN befinde, VPN verbinden (gemeint sind alle WLAN-Netzwerke, die von der ersten Regel nicht erfasst werden)
  3. Bei Zugriff auf meine lokale Domain Zuhause VPN verbinden
  4. VPN trennen, wenn ich per Mobilfunk online bin

Damit die dritte Regel funktioniert, müssen die Geräte im lokalen Netzwerk auch über ihren FQDN (Full Qualified Domain Name) erreichbar sein. Dazu hatte ich hier schonmal einen ausführlichen Beitrag geschrieben.

Das automatische Wählen der VPN-Verbindung bei Zugriff auf bestimmte IP-Subnetze hat früher mal funktioniert, wird seit iOS 10 jedoch nicht mehr unterstützt. Es werden nur noch Domänen-Namen berücksichtigt.

VPN im Router konfigurieren

Beginnen wir mit der Konfiguration im Router, bei mir ein Mikrotik Routerboard RB2011UAS-RM, Zu diesem wird am Ende eine L2TP/IPsec-Verbindung aufgebaut. Ich erspare euch hier detaillierte Erläuterungen zu den einzelnen Einstellungen und deren Bedeutung, da ich das sowieso nicht fachlich korrekt erklären kann. Ich muss auch ehrlich gestehen, ich verstehe nicht alles, was hier eingestellt wird und habs mir letztlich auch nur zusammengesucht. Dafür verwende  ich überall möglichst eindeutige Namen, damit man über die verschiedenen Schritte hinweg immer nachvollziehen kann, was gemeint ist.

Für die Konfiguration nutzen wir hier WinBox und damit verbinden wir uns direkt auf den Router.

IP Pool

Zuerst legen wir einen Pool von IP-Adressen an, aus dem VPN-Clients per DHCP ihre IP-Adresse zugewiesen bekommen. Das ist optional, denn man kann auch den normalen DHCP-Pool verwenden, aber ich finde es übersichtlicher. Dazu navigieren wir zu IP -> Pool, klicken dort auf das +, vergeben einen passenden Namen und den gewünschten IP-Adressbereich.

Mikrotik: DHCP IP-Pool für VPN-Clients

Mikrotik: DHCP IP-Pool für VPN-Clients

Name: dhcp-vpn
Addresses: Den Adressbereich müsst ihr natürlich euren Begebenheiten anpassen. Bei mir ist es 192.168.243.240-192.168.243.254

PPP Profile

Anschließend navigieren wir zu PPP und wählen hier die Registerkarte Profiles.

Mikrotik: PPP-Profile

Mikrotik: PPP-Profile

Per Klick auf + erzeugen wir ein neues Profil und stellen es wie folgt ein:

Mikrotik: PPP-Profile Mikrotik: PPP-Profile
Name: l2tp-vpn-profile
Local Address: <IP des Routers im lokalen Netzwerk>
Remote Address: hier wählen wir den IP-Pool, den wir für VPN angelegt haben (dhcp-vpn)
DNS Server: IP-Adresse des lokalen DNS-Servers. Wird bei den meisten wohl die IP des Routers sein, ich verwende jedoch einen separaten DNS-Server.
Change TCP MSS: yes
Use MPLS: yes
Use Encryption: required

L2TP Server

Weiter zur Registerkarte Interface, wo wir auf die Schaltfläche L2TP Server klicken und diesen wie folgt konfigurieren:

Mikrotik: L2TP Server

Mikrotik: L2TP Server

Enabled: true
Default Profile: l2tp-vpn-profile
Authentication: mschap2
Use IPsec: yes
IPsec Secret: Hier vergeben wir ein starkes Passwort und notieren uns dies. Hier im Beispiel verwende ich bcgS#U23.!OWPDxs=Mns8*D2

PPP Secrets

Weiter zur Registerkarte Secrets, wo wir mit dem + ein neues Secret anlegen.

Mikrotik: VPN-Secret

Mikrotik: VPN-Secret

Name: Hier einen passenden Namen vergeben. Ich verwende vpn-seb-iphone
Password: Erneut vergeben wir wieder ein starkes Passwort und notieren uns dies. Dies kann/sollte nicht unbedingt das gleiche sein, wie zuvor. Beispiel c923E=!cno83LASwhd
Service: l2tp
Profile: l2tp-vpn-profile

IPsec Peer Profile

Als nächstes erstellen wir ein Profil für VPN-Clients (Peers) und navigieren hierfür zu IP -> IPsec. Auf der Registerkarte Peer Profiles erstellen wir mit + ein neues Profil:

Mikrotik: IPsec Peer Profile

Mikrotik: IPsec Peer Profile

Name: Hier einen passenden Namen vergeben. Ich verwende l2tp-vpn-peer-profile
Encryption Algorithm: 3des und aes-256. Achtet darauf, dass kein weiteres Kästchen aktiviert ist.
DH Group: modp1024. Auch hier darauf achten, dass nichts anderes ausgewählt ist.

IPsec Peer

Anschließend erstellen wir einen VPN-Client. Dazu wechseln wir auf die Registerkarte Peers und klicken wieder auf +.

Mikrotik: IPsec Peer

Mikrotik: IPsec Peer

Profile: Das soeben erstelle Profil l2tp-vpn-peer-profile auswählen.
Exchange Mode: main l2tp
Passive: true
Secret: Die gleiche Zeichenkette, die wir unter L2TP Server als IPsec Secret verwendet haben: bcgS#U23.!OWPDxs=Mns8*D2

IPsec Mode Config

Registerkarte Mode Configs -> +.

Mikrotik: IPsec Mode Config

Mikrotik: IPsec Mode Config

Name: l2tp-vpn-mode-config
Responder: true
Address Pool: dhcp-vpn
System DNS: true

IPsec Policy Proposal

Registerkarte Policy Proposal -> +.

Mikrotik: IPsec Policy Proposal

Mikrotik: IPsec Policy Proposal

Name: l2tp-vpn-proposal
Encr. Algorithms: 3des und aes-256-cbc. Achtet hier wieder darauf, dass nichts anderes angehakt ist.

IPsec Policies

Im IPsec-Fenster begeben wir uns auf die Registerkarte Policies und klicken dort abermals auf +.

Mikrotik: IPsec Policy Mikrotik: IPsec Policy
Template: true
Proposal: l2tp-vpn-proposal

Firewall-Regeln

Da ihr euer Netzwerk sicherlich auch ordentlich abgeriegelt habt, benötigen wir noch zwei Firewall-Regeln, die den eingehenden Verkehr zulassen. Diese müssen vor den Drop-Regeln platziert werden.

Wir navigieren zu IP -> Firewall und klicken auf +.

Mikrotik: Firewall-Regel für IPsec Mikrotik: Firewall-Regel für IPsec
Chain: input
Protocol: udp
Dst. Port: 500,1701,4500
In. Interface: Hier wählen wir die WAN-Schnittstelle aus. Bei mir ist das pppoe-out1
Connection State: new
Action: accept

Für die zweite Regel wieder ein Klick auf +.

Mikrotik: Firewall-Regel für IPsec Mikrotik: Firewall-Regel für IPsec
Chain: input
Protocol: ipsec-esp
In. Interface: Hier wählen wir die WAN-Schnittstelle aus. Bei mir ist das pppoe-out1
Action: accept

VPN-Verbindung unter iOS einrichten

Damit ist die Konfiguration im Router abgeschlossen und es ist Zeit, das Ganze mal zu testen, bevor wir weiter machen. Dazu schnappen wir unser iPhone oder iPad, gehen in Einstellungen -> Allgemein -> VPN und betätigen dort die Schaltfläche VPN hinzufügen. Konfiguriert wird dann folgendes:

Typ: L2TP
Beschreibung: Beliebiger Name für die VPN-Verbindung
Server: DynDNS- oder IP-Adresse, über die euer Router von außen erreichbar ist
Account: Der Name, den wir bei PPP Secrets vergeben haben. Hier im Beispiel war das vpn-seb-iphone
Passwort: Das Passwort, das wir bei PPP Secrets vergeben haben. Hier im Beispiel war das c923E=!cno83LASwhd
Shared Secret: Das IPsec-Secret, das wir bei L2TP-Server vergeben haben. Hier im Beispiel war das bcgS#U23.!OWPDxs=Mns8*D2
Gesamten Verkehr senden: Diese Option sorgt dafür, dass immer, wenn VPN verbunden ist, jeglicher Verkehr, der für das Internet bestimmt ist, über die VPN-Verbindung zum heimischen Router geleitet wird und dann von da aus seinen Weg ins WWW findet. Das ist optional, würde aber Sinn machen, um in fremden WLAN-Netzen anonym zu bleiben. true

iPhone: VPN-Konfiguration

Im Prinzip haben wir nun eine vollständige VPN-Konfiguration, mit der man sich jederzeit vom iPhone aus in sein heimisches Netzwerk verbinden kann. Die gleichen Zugangsdaten kann man auch unter Windows, macOS, Linux oder sonstigen Betriebssystemen nutzen. Wem das reicht, der muss auch nicht mehr weiterlesen, denn im nachfolgenden Abschnitt geht es nur darum, wie man VPN-on-Demand auf iPhone einrichten und es dazu überreden kann, die VPN-Verbindung von alleine zu wählen.

VPN-on-Demand

Ich gehe davon aus, dass der Test im vorherigen Abschnitt erfolgreich verlief. Falls nicht, solltet ihr euch erstmal darum kümmern, damit man nicht unnötig an der falschen Stelle sucht, sollte es am Ende vielleicht doch nicht funktionieren.

Ein paar Grundlagen

Bevor wir beginnen will ich kurz ins Thema einleiten. VPN-on-Demand ist eine Enterprise-Funktion, weshalb es dafür in der Oberfläche von iOS auch keinen Schalter gibt. Im Enterprise-Bereich werden sogenannte Profile erstellt, die auf dem iPhone eingespielt werden. Profile können alle möglichen Einstellungen beinhalten, von Vorgaben zur Mindeststärke von Kennwörtern, über Netzwerkeinstellungen, vordefinierte Kalender, bis hin zur VPN-Verbindungen. Das Einspielen der Profile geht auf zwei Arten: Entweder wird das Profil per E-Mail/iCloud/AirDrop/Dropbox/was-auch-immer an den jeweiligen Empfänger gesendet, oder, wenn das Zielgerät komplett vom Unternehmen verwaltet wird, per Apple Configurator 2 direkt aufgespielt. Erstellt werden diese Profile ebenfalls damit.

Leider ist es so, dass dieser für L2TP/IPsec-Verbindungen, wie wir sie hier nutzen, kein VPN-on-Demand anbietet. Wir müssen das Profil also händisch nacharbeiten. Alternativ können wir es auch gleich in einem Texteditor erstellen, denn es handelt sich dabei schlicht um eine XML-Datei.

Wer keinen Mac besitzt und somit den Apple Configurator nicht nutzen kann, überspringt den nächsten Schritt und verwendet den Code von weiter unten als Vorlage, um sein Profil komplett per Texteditor zu erstellen.

Profil anlegen

Wir starten also den Apple Configurator, klicken anschließend auf Ablage -> Neues Profil. Im Register Allgemein geben wir dem Profil einen Namen. Zum Beispiel „VPN-on-Demand-Profil“.

Apple Configurator 2: VPN-Profil erstellen

Apple Configurator 2: VPN-Profil erstellen

Anschließend wechseln wir in das Register VPN und klicken da auf Konfigurieren. Hier nutzen wir die gleichen Werte, wie zuvor beim iPhone. Nur der Name sollte ein anderer sein, damit man beide Verbindungen später noch unterscheiden kann.

Apple Configurator 2: VPN-Profil erstellen

Apple Configurator 2: VPN-Profil erstellen

Verbindungsname: Kann beliebig gewählt werden. Ich nehme hier VPN-on-Demand
Verbindungs-Typ: L2TP
Server: DynDNS- oder IP-Adresse, über die euer Router von außen erreichbar ist
Account: Der Name, den wir bei PPP Secrets vergeben haben. Hier im Beispiel war das vpn-seb-iphone
Passwort: Das Passwort, das wir bei PPP Secrets vergeben haben. Hier im Beispiel war das c923E=!cno83LASwhd
Gesamten Verkehr über VPN senden: Ganz nach Bedarf. Bei mir true
Shared Secret: Das IPsec-Secret, das wir bei L2TP-Server vergeben haben. Hier im Beispiel war das bcgS#U23.!OWPDxs=Mns8*D2
Hinweis:
Das Shared Secret wird codiert gespeichert. Also lasst Euch nicht davon irritieren, dass in dem von euch erzeugten Profil auf Zeile 15 nicht <string>bcgS#U23.!OWPDxs=Mns8*D2</string>, sondern vielleicht <data>YmNnUyNVMjMuIU9XUER4cz1NbnM4RDI=</data>. Beide Varianten sind möglich.

On-Demand-Regeln einfügen

Das Profil speichern wir irgendwo auf dem Computer unter dem Dateinamen VPN-on-Demand-Profil.mobileconfigund öffnen es in einem beliebigen Texteditor. Hier fügen wir nun den Block, der für VPN-on-Demand zuständig ist, ein (Zeilen 25…87). Anschließend müssen nur noch ein paar Werte angepasst werden.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>PayloadContent</key>
    <array>
        <dict>
            <key>IPSec</key>
            <dict>
                <key>AuthenticationMethod</key>
                <string>SharedSecret</string>
                <key>LocalIdentifierType</key>
                <string>KeyID</string>
                <key>SharedSecret</key>
                <string>bcgS#U23.!OWPDxs=Mns8*D2</string>
            </dict>
            <key>IPv4</key>
            <dict>
                <key>OverridePrimary</key>
                <integer>1</integer>
            </dict>

            <!-- Einstellungen für VPN-on-Demand -->
            <key>OnDemandEnabled</key>
            <integer>1</integer>
            <key>OnDemandRules</key>
            <array>

                <!-- VPN trennen, wenn bekanntes WLAN verbunden -->
                <dict>
                    <key>Action</key>
                    <string>Disconnect</string>
                    <key>InterfaceTypeMatch</key>
                    <string>WiFi</string>
                    <key>SSIDMatch</key>
                    <array>

                        <!-- WLAN-SSIDs hier eintragen -->
                        <string>WLAN-Netzwerk-1</string>
                        <string>WLAN-Netzwerk-2</string>
                    </array>
                </dict>

                <!-- VPN verbinden, wenn anderes WLAN verbunden -->
                <dict>
                    <key>Action</key>
                    <string>Connect</string>
                    <key>InterfaceTypeMatch</key>
                    <string>WiFi</string>
                </dict>

                <!-- VPN verbinden, wenn auf das heimische Netzwerk zugegriffen wird -->
                <dict>
                    <key>Action</key>
                    <string>EvaluateConnection</string>
                    <key>ActionParameters</key>
                    <array>
                        <dict>
                            <key>DomainAction</key>
                            <string>ConnectIfNeeded</string>
                            <key>Domains</key>
                            <array>

                                <!-- Lokale Domains hier eintragen -->
                                <string>*.local</string>
                                <string>*.home.local</string>
                                <string>home.local</string>
                            </array>
                        </dict>
                    </array>
                </dict>

                <!-- VPN trennen, wenn man sich im Mobilfunknetz befindet -->
                <dict>
                    <key>Action</key>
                    <string>Disconnect</string>
                    <key>InterfaceTypeMatch</key>
                    <string>Cellular</string>
                </dict>

                <dict>
                    <key>Action</key>
                    <string>Disconnect</string>
                </dict>
            </array>

            <!-- sonstige Einstellungen -->
            <key>PPP</key>
            <dict>
                <key>AuthName</key>
                <string>vpn-seb-iphone</string>
                <key>AuthPassword</key>
                <string>c923E=!cno83LASwhd</string>
                <key>CommRemoteAddress</key>
                <string>dyndns.router.com</string>
            </dict>
            <key>PayloadDescription</key>
            <string>Konfiguriert VPN-Einstellungen</string>
            <key>PayloadDisplayName</key>
            <string>VPN</string>
            <key>PayloadIdentifier</key>
            <string>com.apple.vpn.managed.F28742EA-6E1C-4BA1-8797-6A5270B0EE61</string>
            <key>PayloadType</key>
            <string>com.apple.vpn.managed</string>
            <key>PayloadUUID</key>
            <string>F28742EA-6E1C-4BA1-8797-6A5270B0EE61</string>
            <key>PayloadVersion</key>
            <integer>1</integer>
            <key>Proxies</key>
            <dict>
                <key>HTTPEnable</key>
                <integer>0</integer>
                <key>HTTPSEnable</key>
                <integer>0</integer>
            </dict>
            <key>UserDefinedName</key>
            <string>VPN-on-Demand</string>
            <key>VPNType</key>
            <string>L2TP</string>
        </dict>
    </array>
    <key>PayloadDisplayName</key>
    <string>VPN-on-Demand-Profil</string>
    <key>PayloadIdentifier</key>
    <string>Sebastians-iMac.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</string>
    <key>PayloadRemovalDisallowed</key>
    <false/>
    <key>PayloadType</key>
    <string>Configuration</string>
    <key>PayloadUUID</key>
    <string>949D9466-4286-4BE0-BDA1-5826ABE59109</string>
    <key>PayloadVersion</key>
    <integer>1</integer>
</dict>
</plist>
Zeile 15: Das IPsec-Secret, das wir bei L2TP-Server vergeben haben. Hier im Beispiel war das bcgS#U23.!OWPDxs=Mns8*D2
Zeilen 20: Gesamten Verkehr über VPN senden. Wer das nicht möchte macht aus der 1 eine 0
Zeilen 39, 40: Die Namen der WLAN-Netzwerke, in denen keine VPN-Verbindung gewählt werden soll
Zeilen 65…67: Domain-Namen des heimischen Netzwerks
Zeile 91: Der Name, den wir bei PPP Secrets vergeben haben. Hier im Beispiel war das vpn-seb-iphone
Zeile 93: Das Passwort, das wir bei PPP Secrets vergeben haben. Hier im Beispiel war das c923E=!cno83LASwhd
Zeile 95: DynDNS- oder IP-Adresse, über die euer Router von außen erreichbar ist
Zeile 117: Beliebiger Name für die VPN-Verbindung. Ich nehme hier VPN-on-Demand
Zeile 123: Beliebiger Name für das Profil. Ich nehme hier VPN-on-Demand-Profil

Im Ergebnis haben wir ein fertiges Profil, das nur noch an das iPhone übertragen und dort installiert werden muss. Wichtig ist, dass die Datei-Endung .mobileconfig lautet, da das iPhone die Datei sonst nicht als installierbares Profil erkennt.

VPN-Profil auf iPhone installieren

Wie schon zuvor erwähnt gibt es verschiedene Wege, wie wir das Profil auf das iPhone bekommen. Der einfachste ist sicherlich, sich das Profil per E-Mail oder AirDrop auf das Telefon zu senden. Den Anhang der E-Mail tippen wir einfach an, der Rest erklärt sich von selbst:

Installieren -> Code eingeben -> Installieren -> Installieren -> Fertig.

iPhone: VPN-on-Demand Profil installieren iPhone: VPN-on-Demand Profil installieren iPhone: VPN-on-Demand iPhone: VPN-on-Demand Einstellungen

Im Ergebnis haben wir eine neue VPN-Verbindung mit dem Namen VPN-on-Demand, die auch schon vorgewählt ist. Solange diese Verbindung ausgewählt ist, wird unser iPhone diese Verbindung immer dann wählen, wenn wir uns in fremden WLAN-Netzwerken bewegen, oder auf ein Netzwerkgerät zuhause per FQDN zugreifen.

Unter dem Schalter zum manuellen Verbinden befindet sich der Hinweis, dass die VPN-Verbindung im aktuellen Netzwerk nicht verbunden wird. Das liegt daran, dass wir uns in einem der vertrauenswürdigen WLAN-Netzwerke befinden und in den Einstellungen zu dieser VPN-Verbindung der Schalter Bei Bedarf verbinden aktiv ist. Schaltet man diesen aus, hat man wieder die volle Kontrolle über die VPN-Verbindung und das automatische Verbinden ist deaktiviert.

Die Verbindung, die wir zuvor zum Testen eingerichtet haben, kann dann auch entfernt werden. Die benötigen wir ja künftig nicht mehr.

Sebastian

36 Comments

  1. Antworten kermit

    Hallo Sebastian,
    vielen Dank für diese ausführliche Anleitung. Leider klappt das verbinden mit iPhone Xs (IOS 12.2) auf meinen RB3011 (ROS 6.43.14) nicht. Habe schon alles mehrfach auf Richtigkeit geprüft. Folgendes findet sich im LOG:
    respond new phase 1 (Identity Protection): 84.147.94.69[500]80.187.118.34[500]
    ISAKMP-SA established 84.147.94.69[4500]-80.187.118.34[25767] spi:ceb919b91c91ce4d:3b8d4278e875727d
    80.187.118.34 failed to pre-process ph2 packet.
    80.187.118.34 peer sent packet for dead phase2
    80.187.118.34 peer sent packet for dead phase2
    Die letzte Meldung wiederholt sich dann mehrmals. Irgendeine Idee, wo das Problem sein könnte?
    Ciao, Peter

    • Antworten Sebastian

      Hi Peter,
      So richtig kann ich mit dieser Meldung nichts anfangen. Wenn du dieser Anleitung folgst, dann lass dich bei den Screenshots bitte nicht von den blauen Markierungen irreführen, sondern beachte alle Einstellungen. Möglicherweise muss noch etwas mehr eingestellt werden, als die blauen Markierungen vorgeben. Die Anleitung habe ich im Nachgang erstellt. Da kann einem durchaus mal etwas durch die Lappen gehen.

      Wenn du einen Fehler in meiner Anleitung findest, dann würde ich mich über einen Hinweis von dir sehr freuen.

      Danke und viel Erfolg

  2. Antworten kermit

    Hallo Sebastian,
    mittlerweile bin ich schon etas weiter. Die IPSEC Tunnel konnte ich jetzt aufbauen. Das gelang nachdem ich bei der Konfiguration des IPSEC Peer auf dem Reiter „Advanced“ die Option „Generate Policy“ auf „port override“ gesetzt habe.
    Leider funktioniert der Traffic bisher nur in eine Richtung. D.h. DNS request löst der Router sauber auf und auch die Weiterleitung eines Pakets vom Cient zum Server funktioniert (mit einem Filter Eintrag in die Forward chain). Eine Anfrage an einen lokalen Webserver wird also zwar dorthin geschickt wird, jedoch kommt keine Antwort zurück, obwohl ich auch eine Filter Regel für die Gegenrichtung konfiguriert habe. Könnte das eine Problem mit dem NATting sein? Ich habe nur ein einfache srcnat mit Action masquerade auf das Out Interface all_ppp dfiniert.
    Ciao, Peter

  3. Antworten kermit

    Hallo Sebastian,
    mittlerweile hat sich geklärt, wo das Problem lag. Ich hatte zunächst, genau wie bei deiner Konfig, den IP Pool für VPN im gleichen Subnetz in dem auch der Router und alle meine LAN Geräte sind. Das hat definitiv bei mir nicht funktioniert. Dann habe ich den Pool einfach in ein anderes Subnetz umgezogen und danach lief alles ohne Probleme.
    Ciao, Peter

    • Antworten Sebastian

      Hi Peter,
      Jetzt wo du das sagst kann ich mich dunkel daran erinnern, dass das anfangs bei mir auch nicht funktioniert hat. Aber irgendwas hat mich damals dazu motiviert, solange daran zu basteln, bis es mit IPs aus dem gleichen Subnet funktioniert. Da muss ich nochmal in mich gehen.

    • Antworten Skipper22

      Hallo Sebastian,
      auch ich will mich für diese super Anleitung bedanken, ohne hätte ich das niemals hin bekommen.
      Hat alles sofort funktioniert, außer der Zugriff auf Adressen im selben Subnetz. Kermits Lösung, den VPN-IP-Pool in ein anderes Netz zu verlegen, hat auch bei mir funktioniert. Nun kann ich über VPN auf meine „Smart Home“ Geräte zugreifen.
      Wäre wirklich interessant was der Grund dafür ist
      Viele Grüße, Sven

      • Antworten Michael

        Hallo,
        ich habe zwar die Anleitung noch nicht ausprobiert, denke aber, das Problem zu kennen. Über das L2TP injiziert der Router quasi den Traffic des iPhones in das gewählte Subnetz, nennen wir es Subnetz_VPN.

        Will man einen Server aus einem anderen Subnetz (Subnetz_SERVER) ansprechen, erkennt das iPhone, dass die Daten in ein anderes Subnetz gehören. Das erkennt es daran, dass dem iPhone per DHCP ja mitgeteilt wurde: „Du hast IP xxx.xxx.Subnetz_VPN.xxx, das Subnetz_VPN umfasst die folgenden Adressen, sein Gateway heißt xxx.xxx.Subnetz_VPN.1“).
        Es schickt den Traffic daher an das Gateway, den Router, und der routet es an das Subnetz_SERVER.

        Will man dagegen einen anderen Host aus dem Subnetz_VPN ansprechen, ist der Weg über das Gateway (den Router) nicht nötig: hier spricht das iPhone direkt den Partner an. Das geschieht auf L2, es wird also nur die MAC-Adresse verwendet. Der angesprochene Host kriegt das Paket und will auch darauf antworten – doch das iPhone hat als Absender seine eigene MAC-Adresse angegeben, die aber gar nicht in dem Netz vorhanden ist. Die Antwort ist also nicht zustellbar. Korrekt wäre es, wenn sich der Router hier wieder zuständig fühlen würde: er müsste erkennen, dass die Antwort für den L2TP-Partner iPhone ist, stellvertretend das Paket annehmen und per L2TP ans iPhone senden.

        Damit Router das macht, muss er also eine Stellvertreterrolle kriegen, also „Proxy“ sein. Die Funktion heisst „Proxy-ARP“ – die ARP-Liste ist die Liste der im Subnetz vertretenen MAC-Adressen mit den physikalischen Interfaces dahinter. Man muss jetzt also nur ein Interface des Routers mit der Rolle des Proxy-ARP betrauen. Am einfachsten wäre hier wohl das Bridge-Interface. Dazu in den Einstellung der Bridge (Interfaces -> Interface -> die Bridge auswählen -> Reiter General) das Feld ARP auf „proxy-arp“ setzen.

        Fertig!

  4. Antworten Richard

    Hallo Sebastian

    Vielen Dank für diese Anleitung ich konnte mir das so bei mir auf IOS 13 problemlos einrichten.
    ich würde gerne das VPN nur nutzen wenn ich auf meinem Handy die Smarthome APP öffne.

    Kann man dies auch so einstellen?

    • Antworten Sebastian

      Ja, dazu brauchst du nur das Profil entsprechend anpassen. Der dafür zuständige Block ist im Profil auch bezeichnet (Zeile 44).

      • Antworten Riccard

        Hallo Sebastian besten dank für die schnelle Rückantwort. Ja das hab ich gesehen passt soweit.
        Jedoch ist mir bei Zeile 73 VPN trennen im Mobilfunknetz nicht klar was es da machen soll. Verstehe ich richtig dass es sich dann nicht mehr mit dem VPN verbindet?

        Ich würde gerne die so haben dass wenn ich meine local domain öffne also fritz.box sich das VPN im Mobilnetz automatisch verbindet

        • Antworten Sebastian

          Das tut es dann auch. Die Regeln werden der Reihenfolge nach abgearbeitet, somit wird die Verbindung getrennt, wenn du dich im Mobilfunknetz befindest und nicht auf dein Heimnetzwerk zugreifst.

  5. Antworten Fragesteller9

    Hi,
    tolle Anleitung.
    Ich habe ein einfaches VPN-Profil zu meiner Heim-Fritzbox (über Fritz-VPN). Blöd ist, dass sich die VPN-Verbindung immer sofort ausschaltet, wenn man das iPhone eine Zeit lang nicht benutzt hat. Das ist besonders in fremden WLANs ärgerlich.
    Frage: Wie lautet der Befehl, dass eine manuell gewählte VPN-Verbindung (z.b. „VPN-nach-Hause“) solange bestehen bleibt, bis ich sie wieder selbst deaktiviere?
    Ich habe eine VPN-App (Disconect) auf dem iPhone, die genau das macht und solange die VPN Verbindung aufrecht erhält (auch bei Funkverbindung), bis ich es manuell deaktiviere. Genau den Befehl suche ich.

    Vielen Dank!

    • Antworten Sebastian

      Ich weiß, was du meinst aber nicht, was du mit „Befehl“ meinst. VPN-on-Demand wählt nach bestimmten Regeln die VPN-Verbindung und erhält sie solange aufrecht, wie die Bedingungen der Regeln erfüllt bleiben.

      Auch im manuellen VPN-Modus, also wenn in den Einstellungen „Bei Bedarf verbinden“ ausgeschaltet ist und man die Verbindung manuell startet, bleibt diese solange erhalten, bis man sie deaktiviert oder die Verbindung aufgrund von schlechtem Empfang einfach abreißt.

      Wenn deine VPN-Verbindung ständig getrennt wird, dann liegt das sicherlich daran, dass dein Router dies macht, wenn die Verbindung ungenutzt bleibt. Ich könnte mir vorstellen, dass deine App dem vorbeugt, indem es einfach irgendwelche Daten sendet und den Router somit austrickst.

  6. Antworten Johannes

    Hallo,

    Ich habe zwar keinen Mikrotik, aber eine Unifi USG, wo ich shcon länger ein L2TP-VPN aktiviert habe.

    Ich will nun „VPN on Demand“ und habe deine Anleitung befolgt. Ich habe deine Config editiert und inportiert. Ich kann den Tunnel manuell starten, aber er startet nicht automatisch, wenn ich im LTE (habe den Block mit Disconnet-on-LTE gelöscht) oder einen fremden WLAN bin.

    Ich habe eine Domain mit Supdomains. „subdomain.domain.com“. habe das so in der Config eingetragen.
    Am externen DNS verweist „subdomain.domain.com“ auf die interne Adresse des Webservers.

    Wenn ich nun „subdomain.domain.com“ aufrufe, passiert nichts. Starte ich den VPN manuell, dann kann ich auf die Seite zugreifen.

    Viele Grüße
    Johannes

    • Antworten Sebastian

      Hi Johannes. Hast du es denn mal mit einer nichtöffentlichen Domain probiert? Vielleicht gibt es diesbezüglich Beschränkungen oder es müssen weitere Voraussetzungen erfüllt sein…

      • Antworten Johannes

        Hallo,

        Ja, in der tat. Ich hatte eine public DNS registriert. Solange der existiert, greift das „On Demand VPN“ scheinbar nicht. Sobald der Eintrag weg ist, geht es.

        Vg,
        Johannes

  7. Antworten Johanne

    Eine andere Frage:
    Es funktioniert soweit ganz gut. Dh. im LTE Netz wird VPN aufgebaut, im WLAN wieder abgebaut. KAnn man im LTE auch einen Timeout setzen, wann VPN wieder abgebaut wird?

    Ich habe eine App gestartet, die auf die „Domain“ im Profil zugreift. VPN wird gestartet. Wenn ich die App dann beende, bleibt die VPN Verbindung bestehen, zumindest mal auf alle Fälle 1 Stunde. Länger konnte ich noch nicht testen.

    Viele Grüße
    Johannes

    • Antworten Sebastian

      Um ehrlich zu sein hab ich mir darum bisher noch keine Gedanken gemacht, weil ich das auch anders nutze, als ich ursprünglich mal vorhatte. Hast du eine Lösung dafür gefunden?

  8. Antworten see

    Hallo Sebastian,
    super Anleitung, konnte hiermit innerhalb kurzer Zeit, alles zum Laufen bekommen.
    Da es so gut funktioniert hat, wollte ich das Script auch für meinen Mac nutzen, was leider nicht funktioniert! Es scheint, als würde ständig die Verbindung aufgebaut und wieder getrennt werden.
    Hast Du eventuell auch hier eine Idee, wie ich das Problem lösen könnte? Denn gerade auf Reisen im Hotel oder ähnlich, bietet sich eine sichere Verbindung an.

    Vielen Dank 😊

    • Antworten Sebastian

      Hi, das hab ich selber noch nie ausprobiert, also hab ich leider keinen anderen Tipp für dich, außer nochmal alle Einstellungen zu kontrollieren.

  9. Antworten Flo

    Hallo Sebastian.

    Vielen Dank für das Profil! Funktioniert auch in Verbindung mit einem Unifi USG bestens.
    Eine Frage hätte ich noch: Was hat es mit dem Code in den Zeilen

    102
    106
    125
    131

    auf sich?

    Danke Dir und viele Grüße!

    • Antworten Sebastian

      Das wird durch den Apple Configurator erzeugt. Ganz platt formuliert, werden damit das Profil, die Einstellungen und der Computer, mit dem das Profil erzeugt wurde, eindeutig identifiziert. Könnte ja sein, dass du zwei Profile mit dem gleichen sichtbaren Namen installierst. Durch die eindeutigen internen Namen funktioniert das trotzdem.

  10. Antworten Patrick

    Hi,

    vielen vielen Dank ! hat auf Anhieb mit IOS13 bei mir funktioniert. Ich habe noch etwas (ich denke einfaches) – ich kann bei bestehender VPN Verbindung den Router (bei mir Router+Bridge 196.168.88.1) nicht erreichen. Ich habe versucht eine Firewall Regel zu erstellen (mit Interface auf l2tp) das klappt auch solange die VPN Verbindung besteht. Trenne ich diese zeigt mir die Firewall schon an das dieses Interface nicht mehr besteht. Wasmuss ich erstellen oder einfügen oder ändern das ich bei bestehender VPN Verbindung auch den Router ansprechen kann ?? Ich stehe auf dem Schlauch

    • Antworten Sebastian

      Hi Patrick,
      Ich kenne jetzt deine genaue Konfiguration nicht, aber ich denke, dass du den Zugriff mit irgendeiner vorhandenen Firewallregel unterbindest. Normalerweise sollte es da keine Probleme geben.
      Mein Ansatz wäre also nicht etwas hinzuzufügen, sondern bestehendes zu überprüfen.

  11. Antworten KNM

    Hey Sebastian,

    erstmal ein dickes Dankeschön für die Anleitung.
    Klappt bei mir zum Teil auch schon teilweise ganz gut(automatisch VPN im fremden WLAN).
    Nur irgendwie stelle mich ein wenig blöd an bei der Eingabe der lokalen Domains/IP´s. Ich möchte das OnDemand die VPN Verbindung hergestellt wird wenn ich z.B. auf mein NAS zugreife. Hierfür habe ich im Heimnetz feste IP´s aber keine Domain. Wie muss ich diese eingeben?
    Folgendes funktioniert nicht:
    192.1.1.1
    192.1.1.1:111
    https://192.1.1.1
    https://192.1.1.1:111

    Dazu sollte ich wohl noch sagen dass ich IPSec nutze das ich das bereits auf meiner Fritzbox eingerichtet hatte…

    Danke schon mal vorab!

    Grüße
    KNM

    • Antworten Sebastian

      Mit IP-Adressen funktioniert das nicht, sondern nur mit Domains. Das steht auch so im Artikel 😉

  12. Antworten Vossi

    Super, vielen Dank für das umfangreiche Manual – mit ein bischen probieren klappt das auch mit der aktuellen IOS Version und der aktuellen Router Version.
    Das einzige was ich nicht zum laufen bekomme – wenn der VPN aktiv ist, kann ich nicht im Internet surfen … 🙁
    Ich musste auch eine Firewall Regel hinzufügen um dne Router per VPN ansprechen zu können.

    Welche Regel/n muss ich erstellen damit ich auch bei aktiver VPN verbindung surfen kann ?
    Viele Grüße,
    Vossi

    • Antworten alve89

      Etwas spät zwar, aber vielleicht hilft es auch anderen (ich hatte soeben dasselbe Problem):
      Füge unter PPP / Profiles bei Interface List noch „LAN“ hinzu, so dass die Firewall-Regel, dass alles, was nicht aus „LAN“ kommt, dieses Interface () nicht blockt.

  13. Antworten Thomas

    Hi,

    Ich habe die XML Datei erstellt und perl AirDrop auf mein iPhone unter Dateien kopiert.
    Wie wird die XML Datei nun installiert?
    Mit „Den Anhang der E-Mail tippen wir einfach an, der Rest erklärt sich von selbst:“ passiert bei mir nichts.

    Vielen Dank,
    Thomas

    • Antworten Thomas

      Meine Frage hat sich erledigt.
      Das Konfigurationsfile muss VPN-on-Demand.mobileconfig heissen.
      Das .mobileconfig war wichtig.

  14. Antworten Reto

    Hallo Sebastian, vielen Dank für die Anleitung. Klappt eigentlich ganz gut.
    Zwei Problemchen hab ich jedoch noch:
    1. Wenn mehrere VPN-Tunnels auf dem iOS-Gerät konfiguriert sind (Geschäft/Privat) und der letztbenutzte Tunnel ein anderer war (Hacken ist dann beim ‚falschen‘ Tunnel – Tunnel aber geschlossen), geht die Verbindung nicht auf.
    Kann man das auch irgendwie auch in die Konfig nehmen?

    2. Tunnel automatisch öffen funktioniert – Automatisch schliessen jedoch nicht
    Habe versucht eine ‚interne‘ Browserseite der Haussteuerung zu öffnen, dann öffnet der Tunnel auch perfekt. Jedoch sollte er beim Schliessen der BrowserApp ja auch der Tunnel wieder geschlossen werden. Das geht bei mir noch nicht.
    Vielen Dank
    Reto

    • Antworten Sebastian

      Hi Reto,

      Beide Punkte sind mir auch schon aufgefallen, aber ich habe mich nie um eine Lösung bemüht, da mich das nicht sonderlich stört.

  15. Antworten volvog

    Hallo Sebastian,

    gute Anleitung. Damit habe ich es geschafft, das VPN zügig zum Laufen zu bekommen.
    Einmal manuell verbunden, kann ich aus dem LTE auf mein Homenetz zugreifen. Wenn ich dann WLAN (zu Hause) einschalte, geht VPN aus. Alles richtig.
    Jetzt wechsel ich wieder auf LTE, der VPN bleibt aus. Für mich ok, solange ich keine Adressen aus meinem Heimnetz aufrufe. Aber auch dann, bleibt der VPN aus…
    Eine Idee? Bei Cellular habe ich natürlich „Connect“ eingetragen…

    Vielen Dank
    Volker

  16. Antworten Goran

    Hi.
    Nice work. Is there any other way to configure this without using Mac? I am Windows user 🙁 and I don’t have MAC arround to be able to configure profile…

    Thanks

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht.

WordPress Cookie Hinweis von Real Cookie Banner