настройка устройства Android 7.1 для использования локального DNS-сервера

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

я каким-то образом обманом(*) маршрутизатор в передаче по локальному IP-адресу DNS-сервера (192.168.1.99), когда он раздает DHCP-адреса. С устройства под управлением Windows 10 я вижу, что это так, потому что, когда я смотрю в разделе Сетевые свойства, я вижу, что он использует первичные и вторичные IP-адреса DNS, которые я хочу, и это правильно разрешает локальные серверы на локальные адреса из мировых видимых имен хостов.

(*)в принципе, маршрутизатор не позволил бы мне установить DNS-серверы, поле радио не будет выбирать. Проверка javascript позволила мне установить точку останова, чтобы я мог обойти логику, которая, по-видимому, позволяет устанавливать DNS-сервер, если у вас есть статический IP-адрес, которого у меня нет (и радио-блок для установки статического IP-адреса даже не может быть выбран в любом случае!). Когда я отправил форму, она появилась чтобы изменения не приняли, все же некоторые устройства теперь получают правильный DNS-сервер! Update: я нашел другой маршрутизатор, который не требовал никаких трюков, чтобы заставить его пройти DNS-серверы при назначении адресов DHCP, но Android еще не использует возвращаемый DNS-сервер!

но на Android он не работает, он разрешает имя хоста в мире видимый IP-адрес, предполагая, что он не использует DNS-сервер, который DHCP раздает. (И необъяснимо, доступ к серверам через внешний IP-адрес перестал работать, что и послужило причиной необходимости получения имени хоста для разрешения на внутренний адрес!)

я использую Termux чтобы попытаться устранить проблему, и обнаружил, что getprop net.dns1 и getprop net.dns2 возвращенные IPv6 адреса, дальнейшее копание показало эти адреса в маршрутизаторе как DNS-адреса, предоставленные провайдером. Поэтому я подумал, что, возможно, по какой-то причине трюк, который я использовал на маршрутизаторе, не работал Андроид.

поэтому я попытался вручную настроить DNS-сервер для устройства. Использование Settings -> WiFi -> (long press network name) -> Modify network -> IP settings: Static я ввел ту же конфигурацию сети, что и устройство, получаемое через DHCP, например

IP address: 192.168.1.2
Gateway: 192.16.8.1.1
Network prefix length: 24
DNS 1: 192.168.1.99
DNS 2: 8.8.8.8

но при этом вручную я не могу открыть ничего в локальной сети! Например, я не могу получить доступ к локальным веб-страницу роутера 192.168.1.1, браузер говорит, что он недостижим. Я не могу пинговать тот же IP-адрес в Termux, он говорит: "сеть недостижимый."If I run ifconfig wlan0 и route в termux выход выглядит идентичным выходу, когда я устанавливаю настройки IP для настройки через DHCP. Однако,getprop net.dns1 по-прежнему возвращает IPv6-адрес, поэтому теперь я не уверен, что верю, что команда возвращает действительные данные. Update: хорошо, на самом деле есть четыре DNS-адреса: первые два-это IPv6-адреса от моего провайдера, которые каким-то образом протекают, а последние два-это два IPv4-адреса, которые я установил.

это, кажется, характерно для более новые версии Android, более старое устройство Android 4.3 не имеет никаких проблем (ему даже не нужна статическая конфигурация IP для правильного разрешения имен хостов).

какие другие вещи я могу попытаться устранить эту проблему, и получить DNS работает должным образом?

обновление: я нашел этот пост который относится к случаю, когда:

  • есть два DNS-сервера, локальный IPv4 один (192.168.1.230) и провайдер IPv6 один (2a01:e00::1)
  • IPv4 DNS сервер знает о локальном домене, IPv6-нет.
  • Android, случается, Использовать IPv6 DNS-сервер, и поэтому не может разрешить хосты в локальной сети.

это соответствует тому, что я вижу с моей конфигурации. Но тогда плакат утверждает ,что" это работает как задумано", с которым у меня есть проблемы. Затем он перечисляет четыре возможных решения:

  • добавление IPv6-адреса на локальный DNS-сервер и настройка маршрутизатора для объявления этот адрес как IPv6 DNS-сервер, если это возможно. это не сработает, потому что маршрутизатор не позволит мне указать IPv6-адрес для DNS.
  • настройка локальных имен на маршрутизаторе, если это возможно. я не уверен, что это означает. Сам маршрутизатор не предоставляет возможности DNS
  • использование общедоступного домена, чтобы маршрутизатор ISP мог разрешать внутренние имена. я не уверен, что это значит - как бы общественным достоянием быть в состоянии обратиться к внутреннему IP-адресу???
  • отключение IPv6 DNS (или отключение IPv6) на маршрутизаторе. маршрутизатор не предоставляет какой-либо метод для отключения или иным образом настроить что-либо в отношении IPv6

так что я все еще застрял с системой, которая эффективно DOA, потому что некоторые устройства в сети не могут видеть ресурсы, необходимые для того, чтобы функционировать.

обновить: я создал отдельный сервер DHCP и отключен один на маршрутизаторе, но устройство Android все еще получает два DNS - сервера IPv6 в своем списке-похоже, что есть задержка на секунду или две после того, как сервер DHCP сообщил, что DNS-серверы появляются до появления IPv6, и они всегда вставляешь перед сервер адресам. Я попытался увеличить количество DNS-серверов, о которых сообщается, чтобы попытаться заполнить любую таблицу, которую может иметь Android, но даже с 32 другими DNS-серверами вставляет еще два в начале всего 34! Как Android получает эти адреса и как я могу заставить его сбить его?! Это сводит меня с ума!

Update: я нашел приложение под названием "DNS Changer", которое, как представляется, решить эту проблему, хотя у меня есть некоторые сомнения относительно того, может ли это быть больше, чем обходной путь, пока реальное исправление не может быть найдено. Похоже, что он создает VPN, но я хотел бы узнать больше, как это работает. Это маршрутизация трафика вне моего брандмауэра? К где? Мне интересно, маршрутизирует ли он все, потому что тест скорости на мой собственный сервер дает около 20% средней скорости передачи по сравнению с тем, если я запускаю тот же тест с IP-адресом вместо имени хоста. Я использовал другое приложение, которое сообщает о 7 различных именах внешних хостов и утверждает, что вся передача прошла через каждый из них. Кроме того, этот обходной путь отказывает, если сеть выключается!

обновление: я также вижу эту проблему в корневом устройстве работает Android 5.1 ... Я установил статический IP-адрес и DNS, указывающий на внутренний сервер, и даже зашел так далеко, чтобы использовать setprop установить каждый DNS-сервер на IP-адрес внутреннего DNS-сервера... тем не менее, в termux, когда я использую nslookup, он все еще настаивает на использовании 8.8.8 для поиска имени. Как заставить Android использовать указанный DNS-сервер?

23
задан Michael
27.01.2023 15:37 Количество просмотров материала 3432
Распечатать страницу

6 ответов

заблокировать все остальные исходящий порт 53 (DNS) и трафик в роутере кроме DNS Вы хотите использовать, и Android-устройство будет использовать то, что вы назначаете его в DHCP, кажется, чтобы добавить их в нижней части списка, так что это не другие, и использовать те, что вы хотели, не знаю, почему Google сделал это

1
отвечен JS168 2023-01-28 23:25

С Android 6.1.x, вы только можете изменить DNS для привязанного устройства и ничего больше. Все остальное игнорируется, независимо от того, что вы установили, или какое приложение вы используете

С проблемы DNS.

(где Android 6.1.x, я думаю, это Android 6.0.x)

0
отвечен Gling 2023-01-29 01:42

вот решение, которое я нашел для работы на Android 5.1. Дополнительные сведения см. В этой статье [https://developer.mozilla.org/en-US/docs/Archive/B2G_OS/Developing_Firefox_OS/Customizing_DNS][1]

adb pull /system/etc/dhcpcd/dhcpcd-hooks/20-dns.conf 20-dns.conf

изменить строки 22-26 на то, что вам нужно. На моем устройстве я удалил строки 22-26 и изменил строки 17-20 на:

count=1
    for i in 1 2 3 4; do
        setprop dhcp.${intf}.dns${i} ""
    done

to

count=1
    for i in 1 2 3 4; do
        setprop dhcp.${intf}.dns${i} "192.168.7.8"
    done

изменить IP на все, что вам нужно

после того, как вы поменяли файл размонтировать систему и перезаписать файл по умолчанию с тем, который вы только что изменили:

adb shell shell mount -o rw,remount /system
adb push /yourpath/20_dns.conf /system/etc/dhcpcd/dhcpcd-hooks/20-dns.conf
adb shell chmod 644 /system/etc/dhcpcd/dhcpcd-hooks/20-dns.conf
adb shell mount -o ro,remount /system

я обнаружил, что перемонтирование не может быть, как это здесь так run adb shell mount чтобы увидеть все точки монтирования и найти прямо на вашем устройстве

после переустановки перезагрузки. Проверьте, работает ли он, зайдя в оболочку устройства через adb и запустите tcpdump udp port 53 посмотреть

0
отвечен iulisiio 2023-01-29 03:59

У меня та же проблема. Трудно поверить, что такая ошибка существует в Android и не исправляются.

вы можете обойти его, вручную установив DNS-резольверы из командной строки. Проблема в том, что для этого Требуется root.

например

ncd resolve setifdns wlan0 8.8.8.8 4.4.4.4

нашел DNSman для поддержки этого метода, поэтому вам не придется вводить его каждый раз при перезагрузке или изменения разделов. Это приложение с открытым исходным кодом доступны в F-Droid, что требует root.

надеюсь, это поможет.

0
отвечен nachoparker 2023-01-29 06:16

Я нашел рабочее решение. Это приложение https://play.google.com/store/apps/details?id=com.frostnerd.dnschanger, что является "открытым исходным кодом" (только в кавычках) https://git.frostnerd.com/PublicAndroidApps/DnsChanger создает VPN подключение к устройству для перенаправления всех запросов DNS.

Мне это не очень нравится, потому что он размещен на внутренней Gitlab, где все можно сделать и отменить.

глядя на то, как создать adhoc openvpn туннели для достижения того же.

0
отвечен Alex 2023-01-29 08:33
  1. Откройте настройки беспроводного модема, введя 192.168.1.1 в адресной строке браузера или другом IP-адресе, если он был изменен.
  2. отключить IPv6 DHCP настройки и изменить настройки на EUI 64
-2
отвечен hooman 2023-01-29 10:50

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

dns
ip
networking
router
wireless-networking
Вверх