Dlaczego mój telefon korzysta z Google Public DNS?

10

Byłem ciekawy, jakiego serwera DNS używał mój telefon. Uruchomiłem emulator terminala i wpisałem:

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

Jak widać, mój telefon używa wersji 8.8.8.8 i 8.8.4.4 jako serwerów DNS ( publicznych serwerów DNS Google ).

W domu (Wi-Fi) mój router jest skonfigurowany do udostępniania serwerów OpenDNS przez DHCP. Ale w moim telefonie cat /etc/resolv.confzwraca to samo wyjście. To samo z 3G. I nawet jeśli wyłączę zarówno Wi-Fi, jak i 3G, a następnie ponownie uruchomię telefon, nadal korzysta z publicznych serwerów DNS Google.

Nie pamiętam, że zmieniłem resolv.conflub zainstalowałem jakąkolwiek aplikację, aby to zmienić.

Mój telefon to HTC Desire z CyanogenMod 7.2.0.1 (Android 2.3.7).

Czy ktoś może mi wyjaśnić, dlaczego mój telefon korzysta z Google Public DNS? Czy jest to powszechna konfiguracja dla urządzeń z Androidem lub CyanogenMod ROM?

Morgan Courbet
źródło

Odpowiedzi:

11

Według Steve'a Kondika jest to zasadniczo stary kod, który jest pozostałością po starszych wersjach CyanogenMod:

To było tylko tutaj dla aplikacji, które były statycznie połączone z uclibc w starych wersjach CM. Prawdopodobnie można go po prostu usunąć.

Jednak zauważa również :

Ponadto ten plik NIE jest zapisywany podczas łączenia z siecią, ponieważ / system jest tylko do odczytu. Rzeczywiste serwery DNS są odczytywane z właściwości systemu.

Właśnie zweryfikowałem, że serwery dostarczone przez DHCP są faktycznie używane, więc ten problem jest nieważny, chyba że ktoś udowodni inaczej.

Tak więc wartości w /etc/resolv.confrzeczywistości nie odzwierciedlają twoich ustawień DNS. Zamiast tego możesz getpropznaleźć wartości DNS. Możesz to dość ładnie obniżyć, jeśli grepujesz wynik tak:

getprop | grep dns

Warto również zauważyć: /etc/resolv.confwydaje się, że plik został całkowicie usunięty w późniejszych wersjach CyanogenMod. Nie mam go wcale na CM10, ale getproppoprawnie pokazuje moje ustawienia DNS.

eldarerathis
źródło
Świetna odpowiedź, dzięki. Jednak getprop | grep dnsnic nie zwraca. getprop | grep -E '([0-9]{1,3}\.){3}[0-9]{1,3}'(szukanie adresu IPv4) nie zwraca odpowiedniego wyniku. Zwracany właściwości są ro.baseband, ro.build.description, ro.modversioni gsm.version.baseband. Dowolny pomysł?
Morgan Courbet
@ Organ: Przypuszczam, że może to być jakaś różnica między CM7 (działasz) a CM10 (na czym testowałem). Co się stanie, jeśli w ogóle nie poprawisz wyników? Czy widzisz coś istotnego? (może chcieć more
wpiąć
1
@ Organ: Nie mam pod ręką urządzenia z piernika do przetestowania, ale powinien istnieć sposób na to w standardowych ustawieniach bezprzewodowych, jeśli skonfigurujesz statyczny adres IP (nie sądzę, że możesz to zrobić w ten sposób, jeśli używasz DHCP, niestety). Na JB naciśnij długo sieć, z którą jestem połączony i wybierz „Modyfikuj”, aby się do niej dostać. Może być pod „Zaawansowanymi ustawieniami” (przycisk menu na liście sieci Wi-Fi). Możesz także użyć, setpropale nie będzie się utrzymywać podczas ponownego uruchamiania / rozłączania. Na przykład. setprop net.rmnet0.dns1 <your DNS IP>powinien zmienić wartość net.rmnet0.dns1właściwości.
eldarerathis
1
I myślę, że bardziej konkretny byłby używany przez adapter ( net.rmnet0.dns1w twoim przypadku), chociaż może on dziedziczyć tę wartość z bardziej ogólnej net.dns1właściwości.
eldarerathis
1
@Rhyuk: Nie wiem. setpropmoże być rozwiązaniem tymczasowym, jeśli podasz mu puste wartości, ale będziesz musiał uruchamiać go przy każdym rozruchu (i nie jestem pewien, czy to faktycznie zadziała).
eldarerathis