Отладка частного DNS AndroidAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Отладка частного DNS Android

Сообщение Anonymous »

Доктор: хочу знать, как отладить проблемы разрешения DNS Android с помощью Private DNS.
Я создал свой собственный DoH (Dns- over-Https) прокси-сервер, чтобы использовать его в качестве «Частного DNS» в Android. Он передает запросы к моей собственной установке dnscrypt-proxy, которая настроена на блокировку некоторых нежелательных доменов. На моем Android все работает, как и планировалось.
Проблема: когда в Android включен мой частный DNS, многие приложения время от времени жалуются на «сеть недоступна» или «домен не может быть разрешен». ". Это происходит регулярно, и если я отключу Private DNS, эта проблема полностью исчезнет.
Например: веб-браузер мог загрузить сайт со второй попытки, приложение онлайн-такси жалуется, что нет интернета, и после того, как я перезапускаю - работает нормально.
Что пробовал:
  • Переписываю свой DoH-прокси с php (сначала специальная версия) на асинхронный python+aiohttp (чтобы решить проблему с истощением рабочих мест на php)
  • Сделал тест нагрузочного тестирования моего DoH - работает нормально, время запроса-ответа равно довольно маленький, даже при этом выполняются тысячи запросов в секунду.
  • Добавлен кеш Redis на моем прокси, поэтому все ответы кэшируются для ttl домена.
    < li>Проверил доступность у разных провайдеров и регионов страны - видимых проблем нет.
Поэтому, так как я не Android-разработчик, хочу знать , есть ли способ отладки сторонних приложений на моем устройстве Android с помощью USB-отладчика и инструментов Android SDK.
Мне нужно глубокое протоколирование процесса разрешения имен, чтобы определить источник проблемы.
Кроме того, если хотите, вы можете проверить мой сервер DoH на https://dns.mihanentalpo.me (вы можете попробовать это с помощью замечательного инструмента dnslookup или прописав dns.mihanentalpo.me в свой Настройка частного DNS для Android, будьте осторожны: некоторые домены подключаются к одному и тому же серверу, чтобы «зачеркнуть» их)
Обновление:
Я сбросил лог-код устройства Android при попытке открыть некоторые приложения, которые обычно страдают от проблем с DNS на моем DNS-сервере. И я получил следующие сообщения:

Код: Выделить всё

java.net.UnknownHostException: Unable to resolve host "relaycn.icloseli.com": No address associated with hostname
at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:156)
at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:103)
at java.net.InetAddress.getByName(InetAddress.java:1106)
at com.v3.clsdk.session.CLSessionRouter$b.a(CLSessionRouter.java:24)
at com.v3.clsdk.session.CLSessionRouter$b.call(CLSessionRouter.java:1)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
at libcore.io.Linux.android_getaddrinfo(Native Method)
at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:133)
at libcore.io.BlockGuardOs.android_getaddrinfo(BlockGuardOs.java:222)
at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:133)
at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:135)

До этого и после этого идут сообщения, не связанные с проблемами сети. Кроме того, я отфильтровал весь журнал logcat по идентификатору процесса и не нашел никаких других сообщений.
Итак, на самом деле это сообщение «Нет адреса, связанного с именем хоста», но почему оно случилось?
Может быть, есть какой-то тайм-аут при разрешении имен? Как устранить эту проблему на более глубоком уровне?
Обновление 2: я попробую использовать dnscrypt-proxy, который у меня уже есть, и это DoH. функциональность без моей собственной реализации, чтобы увидеть, лучше она или нет.
Обновление 3: я пытался использовать doh-сервер (DNS-over-HTTPS-прокси) сервер) вместо моего самописного DoH-прокси на основе Python, и теперь у меня гораздо меньше проблем с разрешением имен Android. У меня еще есть, но не так много.
Итак, кажется, что часть проблемы была в моем сервере, но в некоторой степени она все еще сохраняется. Попробую проверить adguard dns proxy, и проверю, возможно все проблемы уйдут.
Хотя у меня до сих пор нет инструмента или метода отладки DNS-запросов на Android, это даст мне корень проблемы.
Обновление 4: установлен AdguardHome, и он волшебным образом работает без каких-либо упомянутых проблем. Теперь я могу попытаться выяснить, почему

Подробнее здесь: https://stackoverflow.com/questions/769 ... rivate-dns
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»