VPN-Verbindung nur im Mobilnetz, nicht im VPN geschützen WLAN

mavier

New Member
Hallo zusammen,

ich stand vor einem Problem. Zu Hause habe ich Merlin auf meinem ASUS-Router, dort wird auch die VPN-Verbindung aufgebaut. Dh also, alles was im WLAN ist und raus möchte geht automatisch über VPN.

Aber wie sieht es mit den mobilen Endgeräten aus? Klar, wenn sie im WLAN sind, sind sie auch per VPN Verbunden (durch den Router). Nur wenn ich außerhalb vom WLAN bin, brauche ich auch eine VPN Verbindung im Mobilnetz. Prinzipiell kein Problem, einfach die entsprechende mobileconfig laden, installieren und fertig. Dann noch "Bei bedarf verbinden" aktivieren, sodass jeglicher Traffic durch den Tunnel muss und die Verbindung bei Bedarf, also wenn zugriff ins Netzt erfolgt, wiederhergestellt wird.

Nun das eigentliche Problem, was ich hatte. Komme ich wieder ins WLAN, hab ich quasi zweimal diese VPN-Verbindung aktiv. Einmal auf meinem Endgerät, und die über den ASUS-Router. So müsste ich jedesmal "per Hand" die Verbindung auf meinem iPhone trennen, darf es aber nicht vergessen diese wieder zu aktivieren, sobald ich das WLAN verlasse.

Man kann dies aber selbst einstellen, was wann womit verbunden wird.
Bei mir ist das jetzt so: bin ich im WLAN, ist VPN auf meinem iPhone deaktiviert, weils über den Router geht. Sobald ich WLAN deaktiviere oder das WLAN verlasse aktiviert sich die VPN-Verbindung. Und es ist auch sichergestellt, dass es nur bei meinem WLAN deaktiviert bleibt. Bei fremden oder öffentlichen ist der Tunnel auf dem iPhone trotzdem aktiv.

Schauen wir uns kurz den entsprechenden Bereich der mobileconfig von PP an:
PHP:
            <key>OnDemandEnabled</key>
            <integer>0</integer>
            <key>OnDemandRules</key>
            <array>
                <dict>
                    <key>Action</key>
                    <string>Connect</string>
                </dict>
            </array>

Man muss diesen Bereich in der Datei suchen (diese kann man nach dem runterladen mit einem Texteditor öffnen).
Wenn man den Integer-Wert bei OnDemandEnabled auf 1 setzt, braucht man es später im iPhone nicht mehr selbst aktivieren, ist dann schon aktiv.

PHP:
            <key>OnDemandRules</key>
            <array>
                <dict>
                    <key>Action</key>
                    <string>Disconnect</string>
                    <key>InterfaceTypeMatch</key>
                    <string>WiFi</string>
                    <key>SSIDMatch</key>
                    <array>
                        <string>/*HIER DIE EIGENE SSID EINTRAGEN*/</string> /* VPN wird dadurch auf dem Endgerät getrennt, sofern die SSID der entspricht, die man hier einträgt */
                    </array>
                </dict>
                <dict>
                     <key>Action</key>
                     <string>Connect</string>                                               
                     <key>InterfaceTypeMatch</key>
                     <string>WiFi</string>                                                   
                     <key>SSIDMatch</key>
                     <array>
                        <string>*</string> /* hier wird dafür gesorgt, dass eine VPN-Verbindung auch in fremden/öffentlichen WLANs aufgebaut wird */
                     </array>
                </dict>
                <dict>
                    <key>Action</key>
                    <string>Connect</string>
                    <key>InterfaceTypeMatch</key>
                        <string>Cellular</string> /* VPN im Mobilnetz aktiv */
                </dict>
            </array>

Das ganze macht nur Sinn, sofern zu Hause ein Router existiert, der von sich aus schon eine VPN-Verbindung aufgebaut hat. Zb diese Tomatos oder Merlin.

Würde man diese Datei nun einfach speichern, kann man sie im Endgerät nicht installieren, da diese signiert ist und wir durch unsere Veränderung diese Signatur zerstört haben.
Öffnet man die mobileconfig sieht man direkt am Anfang eine kryptische Zeichenfolge bis zu
PHP:
<?xml version=
usw... Alles davor wird gelöscht. Ebenso am Ende der Datei. Ziemlich weit unten findet man
PHP:
</plist>
Alles was danach kommt muss ebenfalls gelöscht werden.

Hat man die Datei abgespeichert schickt man sie sich am besten selbst per E-Mail, natürlich auf einen Account, der auch auf dem iPhone/iPad abrufbar ist.
Man sollte vor dem Installieren eine evtl. alte PP VPN-Konfiguration löschen. Zu finden hier:
Einstellungen > Allgemein > Profile > Profil auswählen > entfernen

Klickt man auf den Anhang, wird die Konfiguration importiert. Man wird dann sehen, dass diese nicht signiert ist, was uns aber nicht interessiert und auch nicht schlimm ist, da wir selbst die Änderungen vorgenommen haben und es auch nichts an der Funktion ändert.
Nachdem man seinen Benutzernamen und sein Passwort eingegeben hat sind wir damit fertig und die VPN-Verbindung wird nur noch dann aufgebaut, wenn wir uns nicht mehr in unserem eigenen WLAN befinden.

Übrigens muss "bei Bedarf verbinden" aktiv sein, da sonst die Gefahr besteht, dass der Traffic ungetunnelt das Gerät verlässt. So wird sichergestellt, dass sobald irgendwas aus dem Netz kommt oder ins Netz geht, die VPN-Verbindung aufgebaut wird. Das dauert allerdings einen kurzen Moment. Aber so ist man geschützt. Es gibt noch eine andere Methode, die sich Always-On nennt. Dort hat man eine permanente Verbindung zum VPN-Server und kann auch ohne keine Verbindung mehr ins Netz aufbauen. Ist wohl eher für Firmen geeignet. Man müsste sein iPhone in diesen Supervised-Modus versetzen, und dort dann das entsprechende VPN-Profil hinterlegen. Allerdings wird hierfür zwingend ein Mac benötigt, der Apple Configurator und nicht zu vergessen, werden dabei alle Daten auf dem Endgerät gelöscht und das iPhone ist wieder im Auslieferungszustand. Man kann allerdings alles durch ein iTunes Backup bzw iCloud Backup wiederherstellen. Ein bisschen aufwändig das ganze, aber so hat man nicht das Problem, dass man bei dieser "Bedarfsverbindung" oder OnDemand einen kleinen Moment warten muss, bis die Verbindung aufgebaut wurde.
Hab ich bei mir nicht gemacht, ist dann doch zuviel des guten.

Schönen Sonntag noch

NACHTRAG:

Das ganze funktioniert nicht nur auf mobilen Endgeräten, sondern auch auf normalen Macs.

Falls jemand einen kabelgebundenen Mac hat, wo kein WLAN sondern LAN genutzt wird, dann kann er folgendes anpassen. Der WLAN-Block hier ...

PHP:
                <dict>
                    <key>Action</key>
                    <string>Disconnect</string>
                    <key>InterfaceTypeMatch</key>
                    <string>WiFi</string>
                    <key>SSIDMatch</key>
                    <array>
                        <string>/*HIER DIE EIGENE SSID EINTRAGEN*/</string> /* VPN wird dadurch auf dem Endgerät getrennt, sofern die SSID der entspricht, die man hier einträgt */
                    </array>
                </dict>

wird durch diesen Code ersetzt:
PHP:
                <dict>
                    <key>Action</key>
                    <string>Disconnect</string>
                    <key>InterfaceTypeMatch</key>
                        <string>Ethernet</string> /* VPN im LAN  N I C H T  aktiv */
                </dict>

So wird keine VPN-Verbindung im eigenen LAN aufgebaut, da dies der Router erledigt.

ABER:
Bei einem MacBook (also mobilem Gerät) sollte der WIFI-Code nicht ersetzt, sondern der Ethernet-Block zusätzlich eingefügt werden. So wird zwischen LAN, WLAN und fremdem WLAN unterschieden. Der Codeblock fürs Mobilnetz kann hierbei dann entfernt werden, da die MacBooks kein GSM/LTE-Modul haben.
 
Last edited:
Back
Top