Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Native DNS: Bootstrap IP addresses are not used for initial resolving of stubs #1724

Closed
3 tasks done
ammnt opened this issue Feb 18, 2021 · 14 comments
Closed
3 tasks done

Comments

@ammnt
Copy link

ammnt commented Feb 18, 2021

Prerequisites

Please answer the following questions for yourself before submitting an issue. YOU MAY DELETE THE PREREQUISITES SECTION.

  • I am running the latest version
  • I checked the documentation and found no answer
  • I checked to make sure that this issue has not already been filed

Issue Details

  • AdGuard version:
    • AdGuard for iOS v4.1.0
  • Device model and storage size:
    • iPhone XR
  • Operating system and version:
    • 14.4

Behavior

Bootstrap IP addresses must be used to resolve stubs (dns.nextdns.io, dns.adguard.com etc.) for initial resolving. But they are not used and the request goes to upstream DNS servers. There is no problem if i use the .mobileconfig profile from NextDNS.

Screenshots

Screenshot:

image
IMG_0258
IMG_0259

Additional Information

The verbose logs verbose logs is attached.

@ameshkov ameshkov changed the title Bootstrap IP addresses are not used for initial resolving of stubs Native DNS: Bootstrap IP addresses are not used for initial resolving of stubs Feb 18, 2021
@ammnt
Copy link
Author

ammnt commented Feb 20, 2021

@ameshkov, удалось воспроизвести?

@08kovalchuk03
Copy link
Contributor

@ammnt could you please get acquainted with this problem #1692 and tell us if DNS query leaks in that case.

@ammnt
Copy link
Author

ammnt commented Feb 20, 2021

@08kovalchuk03, никакого отношения описанная проблема к этому баг репорту не имеет. Во-первых, я не использую VPN, во вторых смены сети не было, а в третьих я не смогу воспроизвести проблему при смене с wi-fi (где у меня есть логируемый upstream DNS) на cellular, где его нет и я не увижу запросы на первичный резолвинг stub.

Ещё раз опишу проблему, что быть уверенным, что меня поняли правильно:

  1. При использовании .mobileconfig NextDNS без указания bootstrap IP первичный резолвинг stub видно на upstream DNS, что ожидаемо. Так было до 15 февраля включительно, когда NextDNS не поставляли bootstrap IP в .mobileconfig.
  2. При использовании .mobileconfig NextDNS с указанием bootstrap IP первичный резолвинг stub НЕ видно на upstream DNS, что подтверждается скриншотом (период с 16 до 18 февраля включительно, когда NextDNS начали поставлять bootstrap IP в .mobileconfig по моему запросу.). И так работает сейчас - первичный резолвинг stub не уходит на upstream DNS уже третий день.
  3. При использовании нативного модуля DNS в AdGuard для iOS первичный резолвинг stub ВИДНО по логам upstream DNS независимо от указания bootstrap IP. Следовательно, либо он их использует для сопоставления, но все равно отправляет запрос на upstream DNS, либо не использует для первичного резолвинга вовсе, что сразу видно по логам upstream DNS. То есть ведет себя так, будто поле bootstrap IP пустое.

P.S.: это не зависит от количества bootstrap IP в поле.

@08kovalchuk03
Copy link
Contributor

08kovalchuk03 commented Feb 20, 2021

@ammnt I've got it, I've missed that you're using native DNS implementation. We do not support low-level settings with native implementation. I suppose your problem relates to #1726.

@ammnt
Copy link
Author

ammnt commented Feb 20, 2021

@08kovalchuk03, ну и грош цена тогда такой реализации нативного модуля DNS через приложение. Я смысла не вижу показывать провайдеру первичный резолвинг, тем самым провоцировать его и, к тому же, не использовать bootstrap IP вовсе, когда они предусмотрены нативной реализацией. Так что правильно в #1726 написано. Либо реализуйте нормально с использованием bootstrap IP для первичного резолвинга через native, либо выключите эту функцию вовсе. В противном случае не ясно почему для VPN реализации bootstrap IP используются, а для native нет🤦‍♂️

@ammnt
Copy link
Author

ammnt commented Feb 20, 2021

Ценность приложения с native реализацией при условии существования сторонних .mobileconfig как раз в том, что можно было бы не использовать их. Тогда будет меньшей слоев абстракций и всё бы управлялось в одном месте.

@ammnt
Copy link
Author

ammnt commented Feb 20, 2021

И то что нативный модуль я использую в приложении на третьем скриншоте видно😂

@ameshkov
Copy link
Member

Ой ну ладно вам краски то сгущать, провайдер ваш итак прекрасно видит чей DNS вы используете - IP адреса популярных резолверов известны.

@08kovalchuk03 что нам надо сделать:

  1. Пометить настройки, которые недоступны в native-реализации.
  2. При добавлении кастомного сервера, позволить задавать его IP-адрес (отдельной задачей, на более поздний релиз)

@ammnt
Copy link
Author

ammnt commented Feb 23, 2021

@ameshkov, тут речь про нас с вами, а не про провайдера. Мы должны перестать сами показывать ему что-либо. А не проще ли и быстрее будет сделать так, чтобы bootstrap IP использовались не только для VPN-реализации, но и для native?

@ameshkov
Copy link
Member

@ammnt Apple такой функциональности в mobileconfig не поддерживает, только хардкод IP-адресов.

@ammnt
Copy link
Author

ammnt commented Feb 23, 2021

@ameshkov, по моему мы не понимаем друг друга, так как поддерживает:

        <key>DNSSettings</key>
        <dict>
          <key>DNSProtocol</key>
          <string>HTTPS</string>
          <key>ServerURL</key>
          <string>https://apple.dns.nextdns.io/13d275</string>
          <key>ServerAddresses</key>
          <array>
            <string>45.90.28.0</string>
            <string>2a07:a8c0::</string>
            <string>45.90.30.0</string>
            <string>2a07:a8c1::</string>

@ameshkov
Copy link
Member

Это - не бутстрап DNS, это - IP-адреса резолвера.

@ammnt
Copy link
Author

ammnt commented Feb 23, 2021

Это - не бутстрап DNS, это - IP-адреса резолвера.

Которые используются в качестве bootstrap😂Ладно смотрите сами. Делайте как считаете нужным.

@ameshkov
Copy link
Member

Ну мы тут в терминологии путаемся.

Бутстрап подразумевает, что это DNS-сервер, к которому уйдет запрос на получение IP адресов DOH/DOT/DOQ-резолвера.
А эти адреса - это уже готовые IP адреса, никакого бутстрап-запроса вообще с ними не будет.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants