Я создал свой собственный DO (DNS- Прокси-сервер Over-HTTPS), чтобы использовать его в качестве «частного DNS» в Android. Он проксирует запросы на мою собственную установку DNScrypt-Proxy, которая настроена на блокирование некоторых нежелательных доменов. Он работает на моем Android, как и планировалось. ". Это происходит на регулярной основе, и если я выключаю частные DNS, эта проблема полностью исчезает. Перезапустить его - работает нормально. < /p>
Что я пробовал: < /p>
Перепишите мой Doh -Proxy с PHP (сначала Ad-Hoc) для Async Python+Aiohttp (для решения проблемы с истощением работников на PHP) < /li>
Довольно маленький, даже тогда сделаны тысячи запросов в секунду. li> Проверьте доступность от разных поставщиков и регионов страны - нет видимых проблем. , есть ли какой-либо способ отладки сторонних приложений на моем устройстве Android с помощью инструментов USB Debugger и Android SDK.
Мне нужно глубокое регистрацию процесса разрешения имени для обнаружения, где источники проблемы. < /p. >
Кроме того, если хотите, вы можете проверить мой сервер DOH на https://dns.mihanentalpo.me (вы можете попробовать его с помощью потрясающего инструмента dnslookup или написания dns.mihanentalpo.me в свой Android Private DNS настройка, будьте осторожны, некоторые домены находятся в коротком замыкании на том же сервере, чтобы «черный» их)
Обновление:
Я сбросил logcat устройства Android, пытаясь открыть некоторые приложения, которые обычно страдают от задач DNS с моим DNS -сервером. И я получил надувные сообщения: < /p>
Код: Выделить всё
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)
Итак, на самом деле это сообщение «Нет адреса, связанного с именем хоста», но почему оно случилось?
Может быть, есть какой-то тайм-аут при разрешении имен? Как устранить эту проблему на более глубоком уровне?
Обновление 2: я попробую использовать dnscrypt-proxy, который у меня уже есть, и это DoH. функциональность без моей собственной реализации, чтобы увидеть, лучше она или нет.
Обновление 3: я пытался использовать doh-сервер (DNS-over-HTTPS-прокси) сервер), вместо моей самописной программы на основе Python DoH-прокси, и теперь у меня гораздо меньше проблем с разрешением имен Android. У меня еще есть, но не так много.
Итак, кажется, что часть проблемы была в моем сервере, но в некоторой степени она все еще сохраняется. Попробую проверить adguard dns proxy, и проверю, возможно все проблемы уйдут.
Хотя у меня до сих пор нет инструмента или метода отладки DNS-запросов на Android, это даст мне корень проблемы.
Обновление 4: установлен AdguardHome, и он волшебным образом работает без каких-либо упомянутых проблем. Теперь я могу попытаться выяснить, почему
Подробнее здесь: https://stackoverflow.com/questions/769 ... rivate-dns
Мобильная версия