Ok, en primer lugar, divulgación completa : soy el autor de una aplicación que ahora está en Google Play Store y que te permite cambiar el DNS para cualquier conexión móvil en Android 4.4. La aplicación requiere root , cuesta un par de dólares y se llama Override DNS . Me dijeron, en una respuesta ahora eliminada, que es justo vincular a mi aplicación siempre que la exponga claramente.
El problema que encontré con esta versión de Android (4.4) es que, aparentemente por razones de almacenamiento en caché, el comportamiento del sistema se ha cambiado para redirigir todas las consultas DNS a un demonio del sistema llamado netd
(aquí hay un enlace a una presentación relacionada con la red de Android anterior a 4.4) , sin embargo, cubre parte de estos temas).
El método getprop
/ setprop
ya no funciona. Esos valores, cuando se cambian, simplemente son ignorados por el netd
demonio.
Es necesario comunicarse directamente con el demonio a través del /dev/socket/netd
socket. En Android ahora está presente una herramienta llamada ndc
que hace exactamente este trabajo.
La sintaxis para las cosas relacionadas con DNS es esta:
# ndc resolver flushif <iface>
# ndc resolver flushdefaultif
# ndc resolver setifdns <iface> <domains> <dns1> <dns2>
# ndc resolver setdefaultif <iface>
La aplicación adivina automáticamente el nombre del dispositivo de red y aplica estos comandos cada vez que se activa una red móvil.
ndc resolver setifdns <iface> <domains> <dns1> <dns2> ...
. Ejemplo:ndc resolver setifdns eth0 "" 8.8.8.8 8.8.4.4
"Resolví" este problema usando una regla de iptables para reenviar todas las conexiones del puerto 53 a un servidor DNS previsto; mi experiencia en Android 4.4.2 al intentar modificar la configuración de DNS mientras estaba conectado a 3G ha sido exactamente como Leo lo describió; ignorancia de valores en getprop | grep dns [0-9] \]: y dhcpd.conf.
La razón es como se describe aquí: http://forum.xda-developers.com/showpost.php?p=44722857&postcount=6 Todas las aplicaciones realizan búsquedas de DNS a través de netd a través de un / dev / socket / dnsproxyd unix socket. Este hilo también describe por qué se ignoran las propiedades del sistema.
Para deshacer esto, haz
, encuentre el número de línea que corresponde a udp dpt: 53 a: xxx.xxx.xxx.xxx: 53 y haga
fuente
Lamentablemente, puede ser imposible hacerlo a partir de ahora, sin embargo, es posible probar DNS Changer . Esto puede funcionar si está rooteado, pero no hay garantías.
Un buen servicio de DNS para usar sería el servicio de DNS público de Google. Tiende a funcionar muy bien para este tipo de problemas aquí mismo.
Si nada de esto funciona, sigue buscando respuestas. Un buen sitio para cosas como esta es XDA Developers . Tienden a tener muchas respuestas sobre cosas para Android.
fuente
Estoy en KitKat Cyanogenmod 11, lo que significa que estoy rooteado de forma predeterminada. A pesar de eso, solo puedo reportar un fracaso:
1er método:
Cuando pruebo
adb shell
cony luego compruebe a qué IP hjfdkhfjkyuiwnwetbyebvtwgqwdi.tk resuelve ... obtengo una respuesta NXDOMAIN, lo que significa que no vino del servidor de nombres OpenDNS que configuré (que devolvería una respuesta con una IP alternativa, para servirle a usted agrega).
Al hacer
Solo vería lo que he configurado. Sin embargo, al cambiar de WiFi a móvil (3G o 4G / LTE), veo IP que reconozco como asignadas a mi operador de telefonía móvil. Las aplicaciones como "DNSwitch" o "DNS Changer" pueden volver a configurar esos solucionadores automáticamente al cambiar la red. Sin embargo, lo
getprop
que me informa, todavía no es lo que realmente está resolviendo.2do método [a]:
Otra forma en que lo intenté es modificar
/system/etc/dhcpcd/dhcpcd-hooks/20-dns.conf
un conjunto de cosas arregladas allí (pero tenga en cuenta que los nombres de red y el número de resolvers pueden diferir). Sin éxito.2do método [b]:
Y en
/system/etc/dhcpcd/dhcpcd.conf
eliminé el parámetro para aceptar resolvers en la negociación de DHCP. Ningún éxito tampoco.3er método:
Hasta ahora, lo único que funcionaría un poco es usar una "VPN pobre", usar la aplicación "Túnel SSH", usar SOCKS4, pero usar eso no obtuvo exactamente un buen resultado.
Currículum:
Parece que DNS está configurado en otro lugar, o todos se reenvían (secuestran) tan pronto como la red es móvil.
Entonces, ¿cómo es que? ¿Es otra forma sucia de proporcionar a los operadores una herramienta para demoler la neutralidad de la red?
En su caso, su pregunta fue por eso. ¿Tiene SSH para probar si SSHTunnel es una solución alternativa para evitar la censura de sus operadores?
fuente
Encontré el mismo problema hoy, y gracias a Transfusion. Traté de desarrollar una aplicación " DNS forwarde r" para resolverlo. No cambia el servidor DNS en el sistema, sino que reenvía las consultas DNS a otro servidor. Esta solución me funciona bien en Kitkat (Nexus 5 / 4.4.3 y Moto Razr / CM11). Espero que pueda ayudar a otros también.
fuente
Actualmente no creo que haya ninguna forma de cambiar su DNS en sus datos móviles. Pero si su teléfono está rooteado, puede usar aplicaciones como Establecer DNS .
fuente