Почему мой телефон использует публичный DNS Google?

10

Мне было просто интересно узнать, каким DNS-сервером пользуется мой телефон. Итак, я запустил эмулятор терминала и ввел:

$ cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

Как видите, мой телефон использует 8.8.8.8 и 8.8.4.4 в качестве DNS-серверов ( общедоступные DNS-серверы Google ).

Дома (Wifi) мой маршрутизатор настроен на передачу серверов OpenDNS через DHCP. Но на моем телефоне cat /etc/resolv.confвозвращает тот же вывод. То же самое с 3G. И даже если я отключу Wi-Fi и 3G, а затем перезагружу телефон, он все равно использует общедоступные DNS-серверы Google.

Я не помню, чтобы я изменил resolv.confили установил какое-либо приложение для его изменения.

Мой телефон - HTC Desire с CyanogenMod 7.2.0.1 (Android 2.3.7).

Может кто-нибудь объяснить мне, почему мой телефон использует Google Public DNS? Это обычная конфигурация для каких-либо устройств Android или CyanogenMod ROM?

Морган Курбе
источник

Ответы:

11

По словам Стива Кондика , это по сути старый код, оставшийся от старых версий CyanogenMod:

Это было только здесь для приложений, которые были статически связаны с uclibc в старых версиях CM. Это может быть просто удалено.

Однако он также продолжает отмечать :

Кроме того, этот файл НЕ записывается при подключении к сети, так как / system только для чтения. Фактические DNS-серверы читаются из системных свойств.

Я также только что проверил, что DHCP-серверы на самом деле используются, поэтому эта проблема недействительна, если кто-то не докажет обратное.

Таким образом, значения в /etc/resolv.confдействительности не отражают ваши настройки DNS. Вместо этого вы можете getpropнайти значения DNS. Вы можете довольно неплохо сократить его, если отобразите вывод следующим образом:

getprop | grep dns

Также стоит отметить: /etc/resolv.confфайл, по-видимому, был полностью удален в более поздних версиях CyanogenMod. У меня его нет на CM10, но getpropон правильно показывает мои настройки DNS.

eldarerathis
источник
Отличный ответ, спасибо. Однако getprop | grep dnsничего не возвращает. getprop | grep -E '([0-9]{1,3}\.){3}[0-9]{1,3}'(ищет адрес IPv4) не возвращает соответствующий результат. Возвращенные свойства ro.baseband, ro.build.description, ro.modversionи gsm.version.baseband. Есть идеи?
Морган Курбе
@Morgan: Полагаю, между CM7 (у вас работает) и CM10 (на чем я тестировал) может быть какая-то разница. Что произойдет, если вы вообще не получите вывод? Вы видите что-нибудь актуальное? (возможно, вы захотите moreпередать это или подобное, так как это может быть длинным)
eldarerathis
1
@Morgan: у меня нет устройства Gingerbread для тестирования, но должен быть способ сделать это в стандартных настройках беспроводной сети, если вы настраиваете статический IP (я не думаю, что вы можете сделать это таким образом, если вы используете DHCP, к сожалению). На JB я долго нажимаю на сеть, к которой я подключен, и выбираю «Изменить», чтобы попасть в нее. Это может быть под "Расширенные настройки", хотя (кнопка меню, когда в списке сетей Wi-Fi). Вы также можете использовать, setpropно это не будет сохраняться при перезагрузках / отключениях. Например. setprop net.rmnet0.dns1 <your DNS IP>следует изменить стоимость net.rmnet0.dns1имущества.
Эльдарератэ это
1
И я думаю, что более конкретный будет использоваться адаптером ( net.rmnet0.dns1в вашем случае), хотя он может наследовать это значение от более общего net.dns1свойства.
Эльдарератэ это
1
@Rhyuk: я не знаю. setpropможет быть временным решением, если вы дадите ему пустые значения, но вам придется запускать его при каждой загрузке (и я не уверен, что это действительно сработает).
eldarerathis