iOS 14, mobileconfig, DNS через HTTPS с поддержкой белого списка DNSDomainMatch
Я запускаю свой DNS через https-сервер. Я хочу, чтобы большинство DNS-запросов проходило через него, но любые запросы из доменов / поддоменов "apple.com", "icloud.com" обходили мой сервер DOH и просто использовали для этого DNS телефона по умолчанию.
Я создал профиль.mobileconfig, как показано ниже (я заменил URL-адрес сервера doh и URL-адрес зонда):
<?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>Name</key>
<string>DOH</string>
<key>PayloadDescription</key>
<string>DOH</string>
<key>PayloadDisplayName</key>
<string>DNS over HTTPS</string>
<key>PayloadIdentifier</key>
<string>com.apple.dnsSettings.managed.AFCA1444-5AEB-44CD-B23D-5D2B5ADCD1EE</string>
<key>PayloadType</key>
<string>com.apple.dnsSettings.managed</string>
<key>PayloadUUID</key>
<string>8E3D6F57-0EB4-4C89-A068-2D6EF5FAC976</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>DNSSettings</key>
<dict>
<key>DNSProtocol</key>
<string>HTTPS</string>
<key>ServerURL</key>
<string>https://dns.google/dns-query</string>
<key>ServerName</key>
<string>doh-test</string>
</dict>
<key>OnDemandRules</key>
<array>
<dict>
<key>Action</key>
<string>Disconnect</string>
<key>DNSDomainMatch</key>
<array>
<string>*.apple.com</string>
<string>*.icloud.com</string>
</array>
</dict>
<dict>
<key>Action</key>
<string>Connect</string>
<key>URLStringProbe</key>
<string>https://google.com</string>
</dict>
<dict>
<key>Action</key>
<string>Disconnect</string>
</dict>
</array>
</dict>
</array>
<key>PayloadDescription</key>
<string>DNS over Https</string>
<key>PayloadDisplayName</key>
<string>DNS over HTTPs</string>
<key>PayloadIdentifier</key>
<string>com.cam.me.8A4244E4-7802-46D9-9BA9-06EA71975740</string>
<key>PayloadRemovalDisallowed</key>
<false/>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>2066753F-6CD2-43CE-AA24-C26C4F656B71</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>
Однако мои логи сервера DOH все еще показывают тонн запросов, поступающих от *.apple.com и *.icloud.com домены. После некоторого тестирования я не могу сказать, занесен ли он в белый список.
См. Документацию по адресу https://developer.apple.com/documentation/devicemanagement/dnssettings/ondemandruleselement. В
DNSDomainMatch
в документации указано (выделено жирным шрифтом):
Массив доменных имен. Это правило соответствует, если любое из доменных имен в указанном списке совпадает с каким-либо доменом в списке поисковых доменов устройства. Одиночный префикс подстановочного знака * поддерживается, но не требуется. Например, и *.example.com, и example.com соответствуют mydomain.example.com и your.domain.example.com, но не соответствуют mydomain-example.com.
Я играл с вариантами подстановочного знака, и, похоже, это не имеет значения. Возможно, я неправильно это понимаю - что это значит под
device's search domains list
?
Есть ли другой способ внести определенные домены в белый список с помощью mobileconfig? Я также пытался использовать
ActionParameters
с
NeverConnect
но, похоже, это тоже не работает.
1 ответ
Следующая конфигурация, похоже, работает.
Я запускаю свой собственный DNS-сервер (dnsdist -> pihole --EDNS0-> unbound)
Ссылки:
- https://discourse.pi-hole.net/t/add-proxy-protocol-support-quick-win-doh-dot-dnscrypt-loadbalancing-dns-rulesets-with-dnsdist/28166/22
- https://discourse.pi-hole.net/t/support-for-add-subnet-option-from-dnsmasq-ecs-edns0-client-subnet/35940/75
С помощью следующей конфигурации ios я могу автоматически деактивировать сервер DOH в WLAN (SSID: WLAN-TEST) и использовать локальный DNS-сервер.
Для его создания я использовал следующие источники: