¿Por qué mi teléfono usa el DNS público de Google?

10

Tenía curiosidad por saber qué servidor DNS utilizaba mi teléfono. Así que lancé un emulador de terminal y entré:

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

Como puede ver, mi teléfono utiliza 8.8.8.8 y 8.8.4.4 como servidores DNS ( servidores DNS públicos de Google ).

En casa (Wifi), mi enrutador está configurado para proporcionar servidores OpenDNS a través de DHCP. Pero, en mi teléfono, cat /etc/resolv.confdevuelve la misma salida. Lo mismo con 3G. E, incluso si deshabilito tanto Wifi como 3G, y luego reinicio el teléfono, todavía usa los servidores DNS públicos de Google.

No recuerdo haber cambiado resolv.confo instalado ninguna aplicación para cambiarlo.

Mi teléfono es un HTC Desire con CyanogenMod 7.2.0.1 (Android 2.3.7).

¿Alguien puede explicarme por qué mi teléfono usa Google Public DNS? ¿Es una configuración común para cualquier dispositivo Android o ROM CyanogenMod?

Morgan Courbet
fuente

Respuestas:

11

Según Steve Kondik , este es esencialmente un código antiguo que queda de las versiones anteriores de CyanogenMod:

Esto solo estaba aquí para aplicaciones que estaban vinculadas estáticamente contra uclibc en versiones antiguas de CM. Es probable que solo se pueda eliminar.

Sin embargo, también continúa señalando :

Además, este archivo NO se escribe cuando se conecta a una red ya que / system es de solo lectura. Los servidores DNS reales se leen desde las propiedades del sistema.

También acabo de verificar que los servidores suministrados por DHCP realmente se están utilizando, por lo que este problema no es válido a menos que alguien demuestre lo contrario.

Por lo tanto, los valores en /etc/resolv.confrealidad no reflejan su configuración de DNS. Lo que puede hacer en su lugar es usarlo getproppara encontrar sus valores de DNS. Puede reducirlo bastante bien si ajusta la salida de esta manera:

getprop | grep dns

También vale la pena señalar: el /etc/resolv.confarchivo parece haberse eliminado por completo en versiones posteriores de CyanogenMod. No tengo ninguno en CM10, pero getpropmuestra correctamente mi configuración de DNS.

eldarerathis
fuente
Gran respuesta, gracias. Sin embargo, getprop | grep dnsno devuelve nada. getprop | grep -E '([0-9]{1,3}\.){3}[0-9]{1,3}'(buscando la dirección IPv4) no devuelve resultados relevantes. Propiedades devueltos son ro.baseband, ro.build.description, ro.modversiony gsm.version.baseband. ¿Alguna idea?
Morgan Courbet
@Morgan: supongo que podría haber algún tipo de diferencia entre CM7 (estás ejecutando) y CM10 (lo que probé). ¿Qué sucede si no grep la salida en absoluto? ¿Ves algo relevante? (es posible que desee canalizarlo moreo similar, ya que podría ser largo)
eldarerathis
1
@Morgan: no tengo un dispositivo Gingerbread disponible para probar, pero debería haber una forma de hacerlo en la configuración inalámbrica estándar si configura una IP estática (no creo que pueda hacerlo de esta manera si usa DHCP, lamentablemente). En JB, mantengo presionada la red a la que estoy conectado y selecciono "Modificar" para acceder. Sin embargo, puede estar debajo de "Configuración avanzada" (botón de menú cuando está en la lista de redes wifi). También puede usar, setproppero no persistirá a través de reinicios / desconexiones. Por ejemplo. setprop net.rmnet0.dns1 <your DNS IP>debe cambiar el valor de la net.rmnet0.dns1propiedad.
eldarerathis
1
Y creo que el adaptador usaría el más específico ( net.rmnet0.dns1en su caso), aunque puede estar heredando ese valor de la net.dns1propiedad más genérica .
eldarerathis
1
@Rhyuk: No lo sé. setproppodría ser una solución temporal si le da valores en blanco, pero tendría que ejecutarlo en cada arranque (y no estoy seguro de si eso realmente funcionaría).
eldarerathis