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)

Ссылки:

С помощью следующей конфигурации ios я могу автоматически деактивировать сервер DOH в WLAN (SSID: WLAN-TEST) и использовать локальный DNS-сервер.

Для его создания я использовал следующие источники:

Другие вопросы по тегам