Warum verwendet mein Telefon Google Public DNS?

Ich wollte nur wissen, welchen DNS-Server mein Telefon verwendet. Also habe ich einen Terminalemulator gestartet und Folgendes eingegeben:

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

Wie Sie sehen können, verwendet mein Telefon 8.8.8.8 und 8.8.4.4 als DNS-Server ( Google Public DNS-Server ).

Zu Hause (Wifi) ist mein Router so konfiguriert, dass er OpenDNS-Server über DHCP bereitstellt. Aber auf meinem Telefon cat /etc/resolv.confgibt es die gleiche Ausgabe zurück. Dasselbe gilt für 3G. Und selbst wenn ich sowohl WLAN als auch 3G deaktiviere und das Telefon dann neu starte, verwendet es immer noch die öffentlichen DNS-Server von Google.

Ich kann mich nicht erinnern, resolv.confeine Anwendung geändert oder installiert zu haben, um sie zu ändern.

Mein Telefon ist ein HTC Desire mit CyanogenMod 7.2.0.1 (Android 2.3.7).

Kann mir jemand erklären, warum mein Telefon Google Public DNS verwendet? Ist es eine gängige Konfiguration für alle Android-Geräte oder CyanogenMod ROM?

Antworten (1)

Laut Steve Kondik handelt es sich im Wesentlichen um alten Code, der von älteren Versionen von CyanogenMod übrig geblieben ist:

Dies war nur hier für Apps, die in alten CM-Versionen statisch gegen uclibc gelinkt wurden. Es kann wahrscheinlich nur entfernt werden.

Allerdings bemerkt er auch weiter :

Außerdem wird diese Datei NICHT geschrieben, wenn eine Verbindung zu einem Netzwerk hergestellt wird, da /system schreibgeschützt ist. Die tatsächlichen DNS-Server werden aus den Systemeigenschaften gelesen.

Ich habe auch gerade überprüft, dass die von DHCP bereitgestellten Server tatsächlich verwendet werden, daher ist dieses Problem ungültig, es sei denn, jemand beweist das Gegenteil.

Die Werte in /etc/resolv.confspiegeln also nicht Ihre DNS-Einstellungen wider. Was Sie stattdessen tun können, ist verwenden getprop, um Ihre DNS-Werte zu finden. Sie können es ziemlich gut reduzieren, wenn Sie die Ausgabe wie folgt grepen:

getprop | grep dns

Ebenfalls erwähnenswert: Die /etc/resolv.confDatei scheint in späteren Versionen von CyanogenMod vollständig entfernt worden zu sein. Ich habe überhaupt keine auf CM10, aber getpropmeine DNS-Einstellungen werden korrekt angezeigt.

Tolle Antwort, danke. Gibt getprop | grep dnsaber nichts zurück. getprop | grep -E '([0-9]{1,3}\.){3}[0-9]{1,3}'(Suche nach IPv4-Adresse) gibt kein relevantes Ergebnis zurück. Zurückgegebene Eigenschaften sind ro.baseband, ro.build.descriptionund . Irgendeine Idee? ro.modversiongsm.version.baseband
@Morgan: Ich nehme an, es könnte eine Art Unterschied zwischen CM7 (du läufst) und CM10 (was ich getestet habe) sein. Was passiert, wenn Sie die Ausgabe überhaupt nicht grep? Sehen Sie etwas Relevantes? (Vielleicht möchten Sie es in moreoder ähnliches leiten, da es langwierig sein könnte)
Jetzt habe ich relevante Ergebnisse: [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]: []. Vielleicht war meine Internetverbindung noch deaktiviert, als ich den Befehl ausgeführt habe. Weißt du welcher verwendet wird? Empfehlen Sie eine Anwendung oder eine Methode, um es zu ändern?
@Morgan: Ich habe kein Gingerbread-Gerät zum Testen zur Hand, aber es sollte eine Möglichkeit geben, dies in den Standard-WLAN-Einstellungen zu tun, wenn Sie eine statische IP konfigurieren (ich glaube nicht, dass Sie dies auf diese Weise tun können, wenn Sie verwenden DHCP, leider). Auf JB drücke ich lange auf das Netzwerk, mit dem ich verbunden bin, und wähle "Ändern", um dorthin zu gelangen. Es kann sich jedoch unter den "Erweiterten Einstellungen" befinden (Menüschaltfläche, wenn Sie sich in der Liste der WLAN-Netzwerke befinden). Sie können auch verwenden setprop, aber es bleibt nicht über Neustarts/Trennungen hinweg bestehen. Zum Beispiel. setprop net.rmnet0.dns1 <your DNS IP>den Wert der net.rmnet0.dns1Immobilie verändern soll.
Und ich denke, der spezifischere würde vom Adapter verwendet werden ( net.rmnet0.dns1in Ihrem Fall), obwohl er diesen Wert möglicherweise von der allgemeineren net.dns1Eigenschaft erbt.
Wie kann ich es schaffen, dass ich in den statischen IP-Einstellungen keinen DNS angeben muss? Google zwingt mich, ihre zu verwenden, aber ich muss keine verwenden.
@ Rhyuk: Ich weiß es nicht. setpropkönnte eine vorübergehende Lösung sein, wenn Sie ihm leere Werte geben, aber Sie müssten es bei jedem Start ausführen (und ich bin mir nicht sicher, ob das tatsächlich funktionieren würde).
Ich habe das versucht, aber setprop erfordert einen Wert, leer funktioniert nicht :(