Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

Inhalt

...

iOS

...

iOS ab Version 9 mit IPSec (z. B. Fritzbox)

 

Info

Getestet unter iOS 1011.30.12

 

Mit diesem Profil wird automatisch eine VPN-Verbindung aufgebaut, wenn ein Server in eigenen Netzwerk angesprochen wird. Achtung! Das funktioniert ab iOS 10 nur noch mit Domainnamen (FQDN) und nicht mehr mit IP-Adressen! Es muss sich hier nicht zwangsläufig um einen auflösbaren DNS-Namen handeln, aber dieser DNS Name ist entscheidend, um über die "on-demand" Regel im iOS das VPN aufzubauen.

Befindet man sich im eigenen WLAN wird keine VPN-Verbindung verwendet bzw. die bestehende Verbindung automatisch beendet.

Als erstes einen neuen VPN Benutzer für das iPhone auf der Fritzbox im Menü "Internet", "Freigaben", "VPN" erstellen. Dann "Fernzugang für einen Benutzer einrichten" auswählen. Dann "Name" und "Kennwort" eingeben und NUR den Haken bei "VPN" setzen. Anschließend sich die Konfiguration anzeigen lassen und das Pop-Up Fenster offen lassen.

Folgende Informationen werden benötigt:

  • SSID des eigenen WLANs
  • Interner DNS-Namen des Miniservers, bei der Fritz-Box z.B. miniserver.fritz.box. Wildcards sind möglich, z. B. *.fritz.box
  • VPN Gruppenname, bei der Fritzbox identisch mit dem Benutzernamen
  • DynDNS-Namen des VPN-Servers, also z. B. der Fritz Box
  • Shared Secret
  • VPN Usernamen
  • VPN Passwort
  • lokale IP der Fritzbox/DNSServers

Das Shared Secret muss vor der Verwendung noch Base64-kodiert werden. Das kann man z. B. online erledigen unter https://www.base64encode.org/ (ASCII Zeichensatz einstellen).

...

Die neue Datei unter einem Dateinamen mit der Endung .mobileconfig abgespeichern und sich per Email auf das iPhone senden. Hier dann die Datei öffnen und den ASnweisungen auf dem Bildschirm folgen. Es wird ein neues Profil installiert und dabei die VPN-Verbindung eingerichtet. Anschließend muss über Einstellungen zunächst manuell die VPN-Verbindung zum Router aufgebaut werden.

 

...

languagexml
themeConfluence
title.mobileConfig

...

UPDATE: Nutzt man im Browser und anderen Apps die lokalen DNS-Namen hat man das Problem, dass über das VPN nicht der DNS-Server des VPN-Netzes befragt wird, sondern der globale. Dies hat zur Folge, dass die lokalen Domains über das VPN nicht aufgelöst werden und so nicht erreichbar sind. Eine weitere Option "RequiredDNSServers" sorgt dafür, dass über das VPN auch der dort angegebene DNS-Server befragt wird und die DNS-Auflösung klappt.

 

Codeblock
languagexml
themeConfluence
title.mobileConfig
<?xml version="1.0">
<dict>
 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>OnDemandEnabled</key>
				<integer>1</integer>
				<key>OnDemandRules</key>
				<array>
				<!-- Turn off VPN if on our WiFi network -->
				<dict>
					<key>InterfaceTypeMatch</key>
					<string>WiFi</string>
					<key>SSIDMatch</key>
					<array>
						<string>HIER-MEINE-HOME-SSID-EINTRAGEN</string>
					</array>
					<key>Action</key>
					<string>Disconnect</string>
				</dict>
				<!--Rule to turn on VPN -->
				<dict>
					<key>Action</key>
					<string>EvaluateConnection</string>
					<key>ActionParameters</key>
					<array>
						<dict>
							<key>Domains</key>
							<array>
								<string>HIER-INTERNAL-DNS-NAMEN-DES-MINISERVERS-EINTRAGEN</string>
							</array> 
							<key>DomainAction</key>
							<string>ConnectIfNeeded</string>
						</dict>
					</array>
				</dict>
				</array>

				<key>LocalIdentifier</key>
				<string>HIER-DEN-VPN-GRUPPENNAMEN-EINTRAGEN</string>
				<key>LocalIdentifierType</key>
				<string>KeyID</string>
				<key>RemoteAddress</key>
				<string>HIER-DEN-FQDN-DER-FRITZ!BOX-(DYN-DNS-NAMEN)-EINTRAGEN</string>
				<key>SharedSecret</key>
				<data>HIER-DAS-SHARED-SECRET-BASE64-ENCODED-EINTRAGEN</data>
				<key>XAuthEnabled</key>
				<integer>1</integer>
				<key>XAuthName</key>
				<string>HIER-DEN-VPN-USERNAMEN-EINTRAGEN</string>
				<key>XAuthPassword</key>
				<string>HIER-DAS-KENNWORT-DES-VPN-USERS-EINTRAGEN</string>
			</dict>
			<key>IPv4</key>
			<dict>
				<key>OverridePrimary</key>
				<integer>1</integer>
			</dict>
			<key>PayloadDescription</key>
			<string>Configures VPN settings</string>
			<key>PayloadDisplayName</key>
			<string>VPN Home (On-Demand)</string>
			<key>PayloadIdentifier</key>
			<string>com.home.vpn.A475B815-73F9-4560-8FBF-910C96609803</string>
			<key>PayloadOrganization</key>
			<string></string>
			<key>PayloadType</key>
			<string>com.apple.vpn.managed</string>
			<key>PayloadUUID</key>
			<string>A475B815-73F9-4560-8FBF-910C96609803</string>
			<key>PayloadVersion</key>
			<real>1</real>
			<key>Proxies</key>
			<dict/>
			<key>UserDefinedName</key>
			<string>VPN Home</string>
			<key>VPNType</key>
			<string>IPSec</string>
		</dict>
	</array>
	<key>PayloadDisplayName</key>
	<string>VPN Home (On-Demand)</string>
	<key>PayloadIdentifier</key>
	<string>com.home.vpn</string>
	<key>PayloadRemovalDisallowed</key>
	<false/>
	<key>PayloadType</key>
	<string>Configuration</string>
	<key>PayloadUUID</key>
	<string>9F7008CE-C0D8-477E-9ECF-21D18ACBFC4D</string>
	<key>PayloadVersion</key>
	<integer>1</integer>
</dict>
</plist>

 

Jetzt müssen in LoxoneConfig noch im Miniserver die korrekte interne und externe Adresse angegeben werden. Das Eintragen alleine in der App reicht nicht, da diese Daten bei der ersten Verbindung zum Miniserver wieder überschrieben werden.

  • Interne Adresse: Lokale IP-Adresse des Miniservers
  • Externe Adresse: Lokaler FQDN des Miniservers, z. B. miniserver.fritz.box

Ggf. muss noch ":" Port angehängt werden, sofern dieser von dem Standard-Port 80 abweicht. Die Einstellungen erreicht man über die Anwahl des Objektes "Miniserver" im Peripherie-Baum. 

 Ab jetzt sollte die VPN-Verbindung automatisch aufgebaut werden wenn man sich nicht im eigenen WLAN befindet und die LoxoneApp öffnet.

 

iOS ab Version 9 mit L2TP (z. B. Linux)

Die vorstehenden Beispiele beziehen sich IPSec Verbindungen, die per XAuth arbeiten so wie auch die Fritzbox. Verwendet man dagegen z.B. das VPN-Setupscript auf einem Linuxsystem wie dem Loxberry, funktioniert dies nicht, da hier eine L2TP Verbindung aufgebaut wird, die eine Authentifizierung über PPP verwendet. Daher hier noch ein Template, was mit diesen Verbindungen funktioniert. Hierbei müssen die in ### eingeschlossenen Werte an Euer System angepasst werden. Wer sich mehr traut, kann auch die Namen der Verbindung noch anpassen. Welches hier die Werte sind, wurde in den bisherigen Beispielen ja schon behandelt.

 

Codeblock
languagexml
themeConfluence
title.mobileconfig
<?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>RequiredDNSServers</key>
                                <array>
                                    <string>LOKALE-IP-DER-FRITZBOX_DNSSERVERS</string>
                                </array>
						 </dict>
					</array>
				</dict>
				</array>

				<key>LocalIdentifier</key>
				<string>HIER-DEN-VPN-GRUPPENNAMEN-EINTRAGEN</string>
				<key>LocalIdentifierType</key>
				<string>KeyID</string>
				<key>RemoteAddress</key>
				<string>HIER-DEN-FQDN-DER-FRITZ!BOX-(DYN-DNS-NAMEN)-EINTRAGEN</string>
				<key>SharedSecret</key>
				<data>HIER-DAS-SHARED-SECRET-BASE64-ENCODED-EINTRAGEN</data>
				<key>XAuthEnabled</key>
				<integer>1</integer>
				<key>XAuthName</key>
				<string>HIER-DEN-VPN-USERNAMEN-EINTRAGEN</string>
				<key>XAuthPassword</key>
				<string>HIER-DAS-KENNWORT-DES-VPN-USERS-EINTRAGEN</string>
			</dict>
			<key>IPv4</key>
			<dict>
				<key>OverridePrimary</key>
				<integer>1</integer>
			</dict>
			<key>PayloadDescription</key>
			<string>Configures VPN settings</string>
			<key>PayloadDisplayName</key>
			<string>VPN Home (On-Demand)</string>
			<key>PayloadIdentifier</key>
			<string>com.home.vpn.A475B815-73F9-4560-8FBF-910C96609803</string>
			<key>PayloadOrganization</key>
			<string></string>
			<key>PayloadType</key>
			<string>com.apple.vpn.managed</string>
			<key>PayloadUUID</key>
			<string>A475B815-73F9-4560-8FBF-910C96609803</string>
			<key>PayloadVersion</key>
			<real>1</real>
			<key>Proxies</key>
			<dict/>
			<key>UserDefinedName</key>
			<string>VPN Home</string>
			<key>VPNType</key>
			<string>IPSec</string>
		</dict>
	</array>
	<key>PayloadDisplayName</key>
	<string>VPN Home (On-Demand)</string>
	<key>PayloadIdentifier</key>
	<string>com.home.vpn</string>
	<key>PayloadRemovalDisallowed</key>
	<false/>
	<key>PayloadType</key>
	<string>Configuration</string>
	<key>PayloadUUID</key>
	<string>9F7008CE-C0D8-477E-9ECF-21D18ACBFC4D</string>
	<key>PayloadVersion</key>
	<integer>1</integer>
</dict>
</plist>

 

Jetzt müssen in LoxoneConfig noch im Miniserver die korrekte interne und externe Adresse angegeben werden. Das Eintragen alleine in der App reicht nicht, da diese Daten bei der ersten Verbindung zum Miniserver wieder überschrieben werden.

  • Interne Adresse: Lokale IP-Adresse des Miniservers
  • Externe Adresse: Lokaler FQDN des Miniservers, z. B. miniserver.fritz.box

Ggf. muss noch ":" Port angehängt werden, sofern dieser von dem Standard-Port 80 abweicht. Die Einstellungen erreicht man über die Anwahl des Objektes "Miniserver" im Peripherie-Baum. 

 Ab jetzt sollte die VPN-Verbindung automatisch aufgebaut werden wenn man sich nicht im eigenen WLAN befindet und die LoxoneApp öffnet.

 

iOS ab Version 9 mit L2TP (z. B. Linux)

Die vorstehenden Beispiele beziehen sich IPSec Verbindungen, die per XAuth arbeiten so wie auch die Fritzbox. Verwendet man dagegen z.B. das VPN-Setupscript auf einem Linuxsystem wie dem Loxberry, funktioniert dies nicht, da hier eine L2TP Verbindung aufgebaut wird, die eine Authentifizierung über PPP verwendet. Daher hier noch ein Template, was mit diesen Verbindungen funktioniert. Hierbei müssen die in ### eingeschlossenen Werte an Euer System angepasst werden. Wer sich mehr traut, kann auch die Namen der Verbindung noch anpassen. Welches hier die Werte sind, wurde in den bisherigen Beispielen ja schon behandelt.

UPDATE: Nutzt man im Browser und anderen Apps die lokalen DNS-Namen hat man das Problem, dass über das VPN nicht der DNS-Server des VPN-Netzes befragt wird, sondern der globale. Dies hat zur Folge, dass die lokalen Domains über das VPN nicht aufgelöst werden und so nicht erreichbar sind. Eine weitere Option "RequiredDNSServers" sorgt dafür, dass über das VPN auch der dort angegebene DNS-Server befragt wird und die DNS-Auflösung klappt.

 

Codeblock
languagexml
themeConfluence
title.mobileconfig
<?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>EAP</key>
            <dict/>
            <key>IPSec</key>
            <dict>
                <key>AuthenticationMethod</key>
                <string>SharedSecret</string>
                <key>EAP<<key>OnDemandEnabled</key>
              <dict  <integer>1</>integer>
            <key>IPSec<<key>OnDemandRules</key>
            <dict><array>
                <!-- Turn off VPN if on our WiFi network -->
   <key>AuthenticationMethod</key>             <dict>
   <string>SharedSecret</string>                 <key>OnDemandEnabled<<key>InterfaceTypeMatch</key>
                <integer>1</integer>             <key>OnDemandRules</key><string>WiFi</string>
            <array>        <key>SSIDMatch</key>
        <!-- Turn off VPN if on our WiFi network -->         <array>
       <dict>                     <key>InterfaceTypeMatch<<string>###YOUR_SSID###</key>string>
                        <string>WiFi<</string>array>
                    <key>SSIDMatch<<key>Action</key>
                    <string>Disconnect</string>
   <array>             </dict>
               <string>###YOUR_SSID###</string>
        <!-- Catch-All rule to turn on VPN -->
                </array><dict>
                    <key>Action</key>
                    <string>Disconnect<   <string>EvaluateConnection</string>
                   </dict>     <key>ActionParameters</key>
            <!-- Catch-All rule to turn on VPN -->     <array>
           <dict>                 <dict>
   <key>Action</key>                        <string>EvaluateConnection</string>     <key>Domains</key>
                   <key>ActionParameters</key>             <array>
           <array>                         <string>###YOUR_TRIGGER_DOMAIN1###</string>
   <dict>                                 <key>Domains</key><string>###YOUR_TRIGGER_DOMAIN2###</string>
                                <array></array>            
                        <string>###YOUR_TRIGGER_DOMAIN1###</string>        <key>DomainAction</key>
                            <string>###YOUR_TRIGGER_DOMAIN2###</string>    <string>ConnectIfNeeded</string>
                            <	<key>RequiredDNSServers</array>key>
                                	<array>
           <key>DomainAction</key>                     	    <string>LOKALE-IP-DES-ROUTERS_DNSSERVERS</string>
       <string>ConnectIfNeeded</string>                             <	</array>
							 </dict>
                        </array>
                </dict>
            </array>
            </dict>
            <key>IPv4</key>
            <dict>
                <key>OverridePrimary</key>
                <integer>1</integer>
            </dict>
            <key>PPP</key>
            <dict>
                <key>AuthName</key>
                <string>###YOUR_USER_NAME###</string>
                <key>AuthPassword</key>
                <string>###YOUR_PASSWORD###</string>
                <key>CommRemoteAddress</key>
                <string>###YOUR_DYNDNS_DOMAIN###</string>
            </dict>
            <key>PayloadDescription</key>
            <string>Configures VPN settings, including authentication.</string>
            <key>PayloadDisplayName</key>
            <string>VPN (VPN-on-Demand)</string>
            <key>PayloadIdentifier</key>
            <string>de.ondemand.vpn.vpn1</string>
            <key>PayloadOrganization</key>
            <string>vpnondemand</string>
            <key>PayloadType</key>
            <string>com.apple.vpn.managed</string>
            <key>PayloadUUID</key>
            <string>4D338415-DEE1-41CC-80E6-0C7797B11AB9</string>
            <key>PayloadVersion</key>
            <integer>1</integer>
            <key>Proxies</key>
            <dict/>
            <key>UserDefinedName</key>
            <string>VPN-on-Demand</string>
            <key>VPNType</key>
            <string>L2TP</string>
        </dict>
    </array>
    <key>PayloadDescription</key>
    <string>Beispielkonfiguration für VPN-on-Demand mit
Linux L2TP IPSec</string>
    <key>PayloadDisplayName</key>
    <string>VPN-on-Demand</string>
    <key>PayloadIdentifier</key>
    <string>de.ondemand.vpn</string>
    <key>PayloadOrganization</key>
    <string>vpnondemand</string>
    <key>PayloadRemovalDisallowed</key>
    <false/>
    <key>PayloadType</key>
    <string>Configuration</string>
    <key>PayloadUUID</key>
    <string>45FDB23D-E890-4E1F-9CE1-C9C938F86DC5</string>
    <key>PayloadVersion</key>
    <integer>1</integer>
</dict>
</plist>

...