Hallo zusammen,
auch wenn es nur indirekt mit Unifi zu tun hat, sondern eher eine allgemeine Frage ist, stelle ich sie hier einmal:
Ich verwende seit geraumer Zeit VPN on demand auf unseren iPhones, um eine automatische VPN-Verbindung herzustellen wenn das Gerät mit einem fremden WLAN verbunden ist.
Generell hat das bis jetzt recht zuverlässig funktioniert. Jetzt wollte ich gerne ergänzen, dass das VPN nicht nur in einem fremden WLAN aktiviert wird, sondern auch wenn im Mobilfunknetz eine Verbindung zu einer Domain im Heimnetz aufgebaut werden soll.
Das Profil kann ich ohne Fehler auf dem iPhone installieren und die Verbindung kann auch manuell erfolgreich hergestellt werden. Allerdings funktioniert es "on demand" leider nicht automatisch. Wenn ich mich in ein anderes WLAN einbuche oder aus dem Mobilnetz eine Domain aus dem Heimnetz aufrufe, wird keine VPN-Verbindung aufgebaut.
Netzwerkaufbau:
Am USG hängt an LAN2 in einem separaten Netzwerk ein Rpi4 mit DNS-Server, der die Einträge meiner (Sub-)Domain im internen Netz verwaltet. (*.home.xxx.de).
Die Domain xxx.de gehört mir ebenfalls und weist auf einen Cloudserver. Per DynDNS wird die Subdomain home.xxx.de auf meine WAN-IP geleitet.
Außerdem kümmert sich der Rpi4 mit einem Certbot um die SSL-Zertifikate für meine "internen" Sub-Sub-Domains. Die Ports 80 und 443 sind also vom USG auf den Rpi4 weitergeleitet.
Hier auch einmal meine aktuelle und anonymisierte Profil-Datei für das iPhone:
<?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>
<!-- Home: Manual -->
<dict>
<key>UserDefinedName</key>
<string>(Private VPN): Manual</string>
<key>PayloadDisplayName</key>
<string>Home: Manual</string>
<key>PayloadIdentifier</key>
<string>com.private vpn.vpn.manual</string>
<key>PayloadUUID</key>
<string>xxx</string>
<key>VPNType</key>
<string>L2TP</string>
<key>IPSec</key>
<dict>
<key>AuthenticationMethod</key>
<string>SharedSecret</string>
<key>LocalIdentifierType</key>
<string>KeyID</string>
<key>SharedSecret</key>
<string>xxx</string>
</dict>
<key>PPP</key>
<dict>
<key>AuthName</key>
<string>User</string>
<key>AuthPassword</key>
<string>Pass</string>
<key>CommRemoteAddress</key>
<string>home.xxx.de</string>
</dict>
<key>OverridePrimary</key>
<true/>
<key>IPv4</key>
<dict>
<key>OverridePrimary</key>
<integer>1</integer>
</dict>
<key>PayloadType</key>
<string>com.apple.vpn.managed</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
<!-- Home: WiFi & Homenet -->
<dict>
<key>UserDefinedName</key>
<string>(Private VPN): WiFi and Homenet</string>
<key>PayloadDisplayName</key>
<string>Home: WiFi and Homenet</string>
<key>PayloadIdentifier</key>
<string>com.private vpn.wifi</string>
<key>PayloadUUID</key>
<string>xxx</string>
<key>VPNType</key>
<string>L2TP</string>
<key>IPSec</key>
<dict>
<key>AuthenticationMethod</key>
<string>SharedSecret</string>
<key>LocalIdentifierType</key>
<string>KeyID</string>
<key>SharedSecret</key>
<string>xxx</string>
</dict>
<key>PPP</key>
<dict>
<key>AuthName</key>
<string>User</string>
<key>AuthPassword</key>
<string>Pass</string>
<key>CommRemoteAddress</key>
<string>home.xxx.de</string>
</dict>
<!-- VPN-On-Demand Codeblock -->
<key>OnDemandEnabled</key>
<integer>1</integer>
<key>OnDemandRules</key>
<array>
<!-- VPN beim Zugriff auf Heimnetz-Adressen aufbauen -->
<dict>
<key>Action</key>
<string>EvaluateConnection</string>
<key>ActionParameters</key>
<array>
<dict>
<key>DNSDomainMatch</key>
<array>
<string>*.local</string>
<string>*.home.xxx.de</string>
</array>
<key>DomainAction</key>
<string>ConnectIfNeeded</string>
</dict>
<dict>
<key>Domains</key>
<array>
<string>*.local</string>
<string>*.home.xxx.de</string>
</array>
<key>DomainAction</key>
<string>ConnectIfNeeded</string>
<key>RequiredDNSServers</key>
<string>192.168.1.1</string>
</dict>
</array>
</dict>
<!-- VPN im Heim-WLAN deaktivieren -->
<dict>
<key>InterfaceTypeMatch</key>
<string>WiFi</string>
<key>SSIDMatch</key>
<array>
<string>HomeWLAN</string>
</array>
<key>Action</key>
<string>Disconnect</string>
</dict>
<!-- VPN beim Zugriff auf fremdes WLAN aufbauen -->
<dict>
<key>InterfaceTypeMatch</key>
<string>WiFi</string>
<key>Action</key>
<string>Connect</string>
</dict>
<!-- VPN im Mobilfunknetz nicht aktivieren -->
<dict>
<key>InterfaceTypeMatch</key>
<string>Cellular</string>
<key>Action</key>
<string>Disconnect</string>
</dict>
<!-- VPN Default state -->
<dict>
<key>Action</key>
<string>Disconnect</string>
</dict>
</array>
<key>OverridePrimary</key>
<true/>
<key>IPv4</key>
<dict>
<key>OverridePrimary</key>
<integer>1</integer>
</dict>
<key>PayloadType</key>
<string>com.apple.vpn.managed</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</array>
<key>PayloadDisplayName</key>
<string>Private VPN On-Demand VPN Profiles</string>
<key>PayloadIdentifier</key>
<string>xxx</string>
<key>PayloadRemovalDisallowed</key>
<false/>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>xxx</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>
Alles anzeigen
Zuletzt habe ich ein wenig mit den Keys DNSDomainMatch & RequiredDNSServer rumprobiert - allerdings ohne Erfolg.
Wie gesagt, das Problem ist, dass die Profildatei generell intakt zu sein scheint (kann installiert werden) und auch die Verbindung kann manuell hergestellt werden.
Allerdings wird die automatische Verbindung nicht getriggert.
Es wäre cool, wenn jemand von euch ne Idee hätte, was in der Datei falsch ist.
Vielen Dank im Voraus!
Gruß Alex