根據網路環境自動變更 DNS 設定的 DNS On Demand
上一篇介紹使用 mobileconfig 在 iOS 14 和 mscOS 11.0 Big Sur 來達到自定義的 DoT / DoH 服務 但是這個一改就是全域的,不管你在家中、辦公室或者是在咖啡廳使用的 WiFi 甚至是使用行動網路 都會使用你預先設定的 DNS Server 來解析 然而事實上可能不符合進階一點的需求,例如: 在家中或者辦公室有搭自己的 AdGuard Home or Pi-hole,此時連到這些地方的 WiFi 當然使用區網的 DNS Server 來解析,有本地快取以外區網連線速度快延遲又低 出門使用行動網路或者連上其他不認識的 WiFi 就使用 NextDNS 的 DoH 服務 有上述跟我一樣需求的人,蘋果也有提供一個新的 DNS On Demand(DNS 按需連線)的功能 這功能一樣需要 iOS / iPadOS 14+ 以及 Big Sur 以上才有辦法使用 下面就說說這個特殊的 mobileconfig 描述檔怎麼寫 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 <?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>DNSSettings</key> <dict> <key>DNSProtocol</key> <string>HTTPS</string> <key>ServerURL</key> <string>https://dns.nextdns.io/xxxxx</string> </dict> <key>OnDemandRules</key> <array> <dict> <key>Action</key> <string>Disconnect</string> <key>SSIDMatch</key> <array> <string>MySSID1</string> <string>MySSID2</string> <string>MySSID3</string> </array> </dict> <dict> <key>Action</key> <string>Connect</string> </dict> </array> <key>Name</key> <string>DoH OnDemand</string> <key>PayloadDescription</key> <string>Configures device to use DoH OnDemand.</string> <key>PayloadDisplayName</key> <string>DoH OnDemand</string> <key>PayloadIdentifier</key> <string>com.apple.dnsSettings.managed.8F2760B2-23C1-4735-B5BE-D64A0ADBEC09</string> <key>PayloadType</key> <string>com.apple.dnsSettings.managed</string> <key>PayloadUUID</key> <string>8F2760B2-23C1-4735-B5BE-D64A0ADBEC09</string> <key>PayloadVersion</key> <integer>1</integer> </dict> </array> <key>PayloadDescription</key> <string>Adds DoH OnDemand to Big Sur and iOS 14 or newer systems</string> <key>PayloadDisplayName</key> <string>DoH OnDemand</string> <key>PayloadIdentifier</key> <string>14737786-645C-42BF-9B13-6B339B2D81C1</string> <key>PayloadRemovalDisallowed</key> <false/> <key>PayloadType</key> <string>Configuration</string> <key>PayloadUUID</key> <string>51851357-7736-4A33-90E6-45FB8C3BEC59</string> <key>PayloadVersion</key> <integer>1</integer> </dict> </plist> 上述內容,有幾行需要自行修改後才能使用 ...