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

Мне просто было любопытно узнать, какой 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 ).

Дома (Wi-Fi) мой маршрутизатор настроен на предоставление серверов 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?

Ответы (1)

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

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

Однако он также отмечает :

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

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

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

getprop | grep dns

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

Отличный ответ, спасибо. Однако 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или что-то подобное, так как это может быть долго)
Теперь у меня есть соответствующие результаты: [dhcp.eth0.dns1]: [], [dhcp.eth0.dns2]: [], [dhcp.eth0.dns3]: [], [dhcp.eth0.dns4]: [], [net.dns1]: [192.168.10.110], [net.dns2]: [], [net.rmnet0.dns1]: [192.168.10.110], [net.rmnet0.dns2]: [0.0.0.0], [net.dns1.3837]: []. Возможно, мое подключение к Интернету все еще было отключено, когда я запускал команду. Вы знаете, какой из них используется? Вы рекомендуете приложение или метод, чтобы изменить его?
@Morgan: у меня нет устройства Gingerbread для тестирования, но должен быть способ сделать это в стандартных настройках беспроводной сети, если вы настроите статический IP-адрес (я не думаю, что вы можете сделать это таким образом, если вы используете DHCP, к сожалению). На JB я долго нажимаю на сеть, к которой я подключен, и выбираю «Изменить», чтобы перейти к ней. Однако это может быть в разделе «Дополнительные настройки» (кнопка меню в списке сетей Wi-Fi). Вы также можете использовать setprop, но он не будет сохраняться при перезагрузке/отключении. Например. setprop net.rmnet0.dns1 <your DNS IP>должно измениться значение net.rmnet0.dns1свойства.
И я думаю , что адаптер будет использовать более конкретный ( net.rmnet0.dns1в вашем случае), хотя он может наследовать это значение от более общего net.dns1свойства.
Как мне сделать так, чтобы мне не нужно было указывать DNS в настройках статического IP? Google заставляет меня использовать их, но мне не нужно ничего использовать.
@Rhyuk: я не знаю. setpropможет быть временным решением, если вы дадите ему пустые значения, но вам придется запускать его при каждой загрузке (и я не уверен, что это действительно сработает).
Я пробовал это, но для setprop требуется значение, пустое значение не работает :(