Auto VPN op iOS (mobileconfig) icm Wireguard

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • MrQcue
  • Registratie: Januari 2005
  • Laatst online: 21-05 08:21
Ik heb thuis een Wireguard VPN server draaien. Tevens heb ik op mijn iPhone een werkend Wireguard profile. Dit werkt uitstekend.

Nu wil ik graag voor een (lokale) surveillance url, dat de iPhone automatisch verbinding gaat maken naar Wireguard server, zodat wanneer ik de surveillance app opstart, op de achtergrond de Wireguard verbinding wordt opgezet en ik vervolgens de beelden zie. Ik wil niet continu de VPN verbinding open hebben staan om de accu van de telefoon te sparen. Ik weet dat Wireguard al ingebouwde functies heeft om voor wifi en cellular de verbinding op te zetten maar dit is dus iets wat ik liever niet doe vanwege bovenstaande reden. De VPN verbinding zou dan altijd open blijven staan als ik van huis ben.

Nu heb ik wat documentatie van Apple doorgenomen: https://developer.apple.c...ion-Profile-Reference.pdf

En behoorlijk wat online resources geraadpleegd. Tevens veel testen uitgevoerd.

Wat mij opviel is dat het aan- en uitzetten van de VPN verbinding goed werkt op basis van WiFi SSID filters en schakelen naar 4G verbindingen.

Ik wil echter graag schakelen op basis van de domeinnaam die wordt opgevraagd. Na zeer veel testen lukt me dat niet. Ook niet naar een L2TP VPN verbinding. Ik vermoed dat er iets mis is in mijn config. Wellicht heeft iemand een idee waarom deze filters niet werken.

Ik heb hieronder een voorbeeld van hoe ik het zou willen:

XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?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>PayloadDisplayName</key>
        <string>ThuisVPN</string>
        <key>PayloadType</key>
        <string>Configuration</string>
        <key>PayloadVersion</key>
        <integer>1</integer>
        <key>PayloadIdentifier</key>
        <string>com.example.test.FCC9BF80-C540-44C1-B243-521FDD1B2405</string>
        <key>PayloadUUID</key>
        <string>F346AAF4-53A2-4FA1-ACA3-EEE74DBED043</string>
        <key>PayloadContent</key>
        <array>
            <dict>
                <key>PayloadDisplayName</key>
                <string>VPN</string>
                <key>PayloadType</key>
                <string>com.apple.vpn.managed</string>
                <key>PayloadVersion</key>
                <integer>1</integer>
                <key>PayloadIdentifier</key>
                <string>com.example.test.tunnel</string>
                <key>PayloadUUID</key>
                <string>44CDFE9F-4DC7-472A-956F-61C68055117Q</string>
                <key>UserDefinedName</key>
                <string>VPN Scott</string>
                <key>VPNType</key>
                <string>VPN</string>
                <key>VPNSubType</key>
                <string>com.wireguard.ios</string>
                <key>OnDemandEnabled</key>
                <integer>1</integer>
                <key>OnDemandRules</key>
                <array>
                    <dict>
                        <key>Action</key>
                        <string>Connect</string>
                        <key>DNSDomainMatch</key>
                        <array>
                            <string>local.example.com</string>
                        </array>
                    </dict>
                </array>
                <key>VendorConfig</key>
                <dict>
                    <key>WgQuickConfig</key>
                    <string>
                        [Interface]
                        PrivateKey = privatekey
                        Address = 10.11.0.20/32
                        DNS = 1.1.1.1, 8.8.8.8

                        [Peer]
                        PublicKey = publickey
                        Endpoint = endpoint.example.com:45486
                        AllowedIPs = 0.0.0.0/0
                    </string>
                </dict>
                <key>VPN</key>
                <dict>
                    <key>RemoteAddress</key>
                    <string>endpoint.example.com:45486</string>
                    <key>AuthenticationMethod</key>
                    <string>Password</string>
                </dict>
            </dict>
        </array>
    </dict>
</plist>


Ik zou verwachten dat de VPN verbinding maakt wanneer het domein 'local.example.com' in Safari of een App wordt benaderd.

Tevens heb ik testen zoals dit:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<array>
    <dict>
      <key>Action</key>
        <string>EvaluateConnection</string>
      <key>ActionParameters</key>
        <array>
          <dict>
            <key>Domains</key>
              <array>
                <string>my-site.com</string>
                <string>*.my-site.com</string>
              </array>
            <key>RequiredURLStringProbe</key>
              <string>http://my-site.com/nonexistentURL</string>                   
            <key>DomainAction</key>
              <string>ConnectIfNeeded</string>
          </dict>
        </array>
    </dict>
  </array>



Bronnen die ik al geraadpleegd heb:
- https://developer.apple.c...ion-Profile-Reference.pdf
- https://nerd.one/vpn-on-d...-ios-and-macos-explained/
- https://www.derman.com/blogs/Example-iOS-VPN-OnDemand-Rules

Ik weet dat de PayloadUUID bij iedere nieuwe import uniek dient te zijn omdat anders het profiel niet vervangen wordt.

Heeft iemand een idee waarom dit niet werkt?

Alle reacties


Acties:
  • 0 Henk 'm!

  • Juup
  • Registratie: Februari 2000
  • Niet online
Niet gehinderd door enige kennis van zaken: kun je niet beter op basis van IP adres de VPN benaderen dan op basis van domeinnaam?
Dan omzeil je iig alle DNS problemen.

Ben ik nou zo dom of zijn jullie nou zo slim?


Acties:
  • 0 Henk 'm!

  • MrQcue
  • Registratie: Januari 2005
  • Laatst online: 21-05 08:21
Dank je voor het meedenken. De VPN verbinding zelf werkt prima. Het is alleen de trigger die niet werkt, waardoor de verbinding zou moeten worden opgezet.

Overigens heb ik het ook met een ip adres getest. Ik heb eigenlijk alles getest wat ik kon testen om zaken uit te sluiten. Ik vermoed dan ook dat het iets is met de syntax, volgorde of iets dergelijks. Het is alleen erg lastig debuggen zonder errors of notices.

Acties:
  • 0 Henk 'm!

  • MrQcue
  • Registratie: Januari 2005
  • Laatst online: 21-05 08:21
Ik ben inmiddels wat verder gekomen met testen. Nadat ik het OnDemand gedeelte verplaatst heb naar het VPN gedeelte zie ik op mijn mac dat "OnDemand Enabled" op "True" staat bij de profile.

Zie hieronder de nieuwe config:

XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?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>PayloadDisplayName</key>
        <string>ThuisVPN</string>
        <key>PayloadType</key>
        <string>Configuration</string>
        <key>PayloadVersion</key>
        <integer>1</integer>
        <key>PayloadIdentifier</key>
        <string>com.example.test.FCC9BF80-C540-44C1-B243-521FDD1B2405</string>
        <key>PayloadUUID</key>
        <string>F346AAF4-53A2-4FA1-ACA3-EEE74DBED043</string>
        <key>PayloadContent</key>
        <array>
            <dict>
                <key>PayloadDisplayName</key>
                <string>VPN</string>
                <key>PayloadType</key>
                <string>com.apple.vpn.managed</string>
                <key>PayloadVersion</key>
                <integer>1</integer>
                <key>PayloadIdentifier</key>
                <string>com.example.test.tunnel</string>
                <key>PayloadUUID</key>
                <string>44CDFE9F-4DC7-472A-956F-61C68055117Q</string>
                <key>UserDefinedName</key>
                <string>VPN Scott</string>
                <key>VPNType</key>
                <string>VPN</string>
                <key>VPNSubType</key>
                <string>com.wireguard.macos</string>
                <key>VendorConfig</key>
                <dict>
                    <key>WgQuickConfig</key>
                    <string>
                        [Interface]
                        PrivateKey = privatekey
                        Address = 10.11.0.20/32
                        DNS = 1.1.1.1, 8.8.8.8

                        [Peer]
                        PublicKey = publickey
                        Endpoint = endpoint.example.com:45486
                        AllowedIPs = 0.0.0.0/0
                    </string>
                </dict>
                <key>VPN</key>
                <dict>
                    <key>RemoteAddress</key>
                    <string>endpoint.example.com:45486</string>
                    <key>AuthenticationMethod</key>
                    <string>Password</string>

                    <key>OnDemandEnabled</key>
                    <integer>1</integer>
                    <key>OnDemandRules</key>
                    <array>
                        <dict>
                            <key>Action</key>
                            <string>Connect</string>
                            <key>DNSDomainMatch</key>
                            <array>
                                <string>local.example.com</string>
                            </array>
                        </dict>
                    </array>

                </dict>
            </dict>
        </array>
    </dict>
</plist>


Ik heb het ook weer met een L2TP VPN verbinding getest of het misschien niet door wireguard ondersteund wordt. Al lijkt me dit sterk omdat dit volgens mij door het OS getriggerd zou moeten worden.

Iemand nog een idee? Het is een beetje lastig debuggen zonder log.

Acties:
  • 0 Henk 'm!

  • Puller
  • Registratie: Februari 2019
  • Laatst online: 03-06 15:22
Is het inmiddels gelukt?
Zoek nl ook zoiets.

Acties:
  • 0 Henk 'm!

  • MrQcue
  • Registratie: Januari 2005
  • Laatst online: 21-05 08:21
Nee helaas niet. Ik vond het erg lastig om te debuggen. Ik heb het opgegeven en hoop dat deze trigger functionaliteit ooit in de wireguard app wordt ingebouwd. Als het jou lukt dan hoor ik het graag! 😉

Acties:
  • 0 Henk 'm!

  • Vorkie
  • Registratie: September 2001
  • Niet online
Ik mis je DomainAction toch?

Afbeeldingslocatie: https://tweakers.net/i/UGGz4wZTBRbM9mNqbz1CJHXjHsY=/x800/filters:strip_exif()/f/image/Ut9KJXwFZBr0S6gNEEFPRbYk.png?f=fotoalbum_large

Acties:
  • 0 Henk 'm!

  • Donstil
  • Registratie: Maart 2006
  • Niet online
Overigens heb ik een permanente WireGuard VPN aan als mijn iPhone niet aan het thuisnetwerk verbonden is (om zo overal gebruik te maken van mijn PiHole), ik merk daar in batterij gebruik eigenlijk niets van.

Als het je daar om te doen is zou ik daar eens mee gaan testen.

My thirsty wanted whiskey. But my hunger needed beans


Acties:
  • 0 Henk 'm!

  • MrQcue
  • Registratie: Januari 2005
  • Laatst online: 21-05 08:21
Ik wilde dat eerst niet doen vanwege het eventuele batterijverbruik. Ik draai thuis adguard het is wel lekker om ads te blocken met een goede blocklist. (https://oisd.nl/).

Toch maar weer eens proberen!
Pagina: 1