25 votos

¿Cómo cambiar las conexiones móviles ' s DNS sobre KitKat Android?

Quiero evitar la censura de mi ISP móvil local (bloquea imgur, por ejemplo, por alguna razón desconocida.

Screenshot
Captura de pantalla (haga clic en la imagen para la variante más grande)

Estoy seguro que puedo eludir esta cambiando mi DNS Google DNS o OpenDNS, pero no estoy muy seguro de cómo lograr esto en KitKat.

Info:
Device: Nexus 5
Android version: 4.4.2
Device status: rooted

18voto

Priyank Bolia Puntos 3825

Ok, primero que nada la divulgación completa: soy el autor de una aplicación que está ahora en la Tienda de Google Play y que le hace capaz de cambiar los DNS para cualquier conexión móvil en Android 4.4. La aplicación requiere de la root y se llama Anular DNS. Me dijeron que, en un ya eliminado de respuesta, que es justo el enlace a mi aplicación mientras yo exponga claramente.

El problema que he encontrado con esta versión de Android (4.4) es que, al parecer, para el almacenamiento en caché razones, el comportamiento del sistema ha sido cambiado para redirigir todas las consultas DNS a un sistema de demonio llamado netd (aquí tenéis un enlace a una presentación relacionadas con Android de la red antes de 4.4 que, sin embargo, cubre parte de estos temas).

El getprop/setprop método no funciona. Esos valores, cuando se cambia, obtener, simplemente, ignorados por la netd demonio.

Es necesario comunicarse directamente con el demonio a través de la /dev/socket/netd de socket. En Android es ahora una herramienta llamada ndc que hace exactamente este trabajo.

La sintaxis para el DNS en relación con las cosas es esta:

# ndc resolver flushif <iface>
# ndc resolver flushdefaultif
# ndc resolver setifdns <iface> <domains> <dns1> <dns2>
# ndc resolver setdefaultif <iface>

La aplicación automáticamente adivina el nombre del dispositivo de red y aplica estos comandos cada vez que una red móvil se activa.

13voto

ajma Puntos 5637

I "resolver" este problema mediante el uso de una regla iptables para reenviar el puerto 53 conexiones a un servidor DNS; mi experiencia en Android 4.4.2 con el intento de modificar la configuración de DNS mientras está conectado a 3G ha sido exactamente como Leo descrito, la ignorancia de los valores en getprop |grep dns[0-9]\]; y dhcpd.conf.

iptables -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to-destination 8.8.8.8:53

La razón es como se describe a continuación: http://forum.xda-developers.com/showpost.php?p=44722857&postcount=6 Todas las aplicaciones hacer búsquedas de DNS a través de netd a través de /dev/socket/dnsproxyd socket de unix. Este hilo también se describe por qué las propiedades del sistema son ignorados.

Para deshacer esta, hacer

iptables -t nat -L OUTPUT -n -v --line-numbers

, encontrar el número de la línea que corresponde a la udp dpt:53:xxx.xxx.xxx.xxx:53 y hacer

iptables -t nat -D OUTPUT *linenumber*

1voto

pyrogoggles Puntos 21

Lamentablemente, puede ser imposible de hacer a partir de ahora, sin embargo, es posible probar DNS Changer. Esto puede funcionar si usted tiene root, pero no hay garantías.

Un buen servicio de DNS a utilizar sería de Google public DNS de servicio. Se tiende a funcionar muy bien para este tipo de cuestiones a la derecha aquí.

Si nada de esto funciona, seguir buscando respuestas. Un buen sitio para este tipo de cosas es de XDA Developers. Ellos tienden a tener muchas respuestas en las cosas para Android.

1voto

Leo Puntos 11

Estoy en KitKat Cyanogenmod 11, lo que significa que estoy rooteado de forma predeterminada. A pesar de que sólo puedo informe de error:

1er método:

Cuando me pruebe el adb shell con

setprop net.rmnet0.dns1 208.67.222.222
setprop net.rmnet0.dns2 208.67.222.222
setprop net.rmnet1.dns1 208.67.222.222
setprop net.rmnet1.dns2 208.67.222.222
setprop net.rmnet2.dns1 208.67.222.222
setprop net.rmnet2.dns2 208.67.222.222
setprop net.dns1 208.67.222.222
setprop net.dns1 208.67.222.222

y luego prueba a la que IP hjfdkhfjkyuiwnwetbyebvtwgqwdi.los conocimientos tradicionales de resolver... Puedo obtener una NXDOMAIN respuesta, lo que significa que no venía de la OpenDNS servidor de nombres que me he fijado (que le devuelva una respuesta con una alternativa IP, para servir se añade).

Cuando se hace

getprop | grep dns

Sólo quiero ver lo que he configurado. Sin embargo al cambiar de WiFi a móvil (3G o 4G/LTE) veo IP que reconozco como ser asignado a mi operador de telefonía móvil. Aplicaciones como "DNSwitch" o "DNS Changer" puede re-establecer las resoluciones programó en cambio en la red. Sin embargo, lo getprop informes mí, no es todavía lo que verdaderamente está haciendo la resolución.

2º método [a]:

Otra forma en que me trataron, es modifieng /system/etc/dhcpcd/dhcpcd-hooks/20-dns.conf un conjunto de cosas fijas en no (pero tenga en cuenta los nombres de red y el número de resoluciones puede variar). Sin éxito.

2º método [b]:

Y en /system/etc/dhcpcd/dhcpcd.conf me quita el parámetro a aceptar las resoluciones en DHCP negociación. No hay éxito.

3 método:

Hasta ahora, la única cosa que trabajar un poco es el uso de un pobre "VPN", usando la aplicación "Túnel SSH", el uso de SOCKS4, pero el uso que yo hice exactamente no conseguimos un buen resultado.

Curriculum vitae:

Parece DNS de otros lugares, o todos son reenviados (secuestrado) tan pronto la red de telefonía móvil.

Así que, ¿por qué? Es otra manera sucia de proporcionar a los transportistas con una herramienta para demoler la neutralidad de la red?

En el caso de que su pregunta era debido a eso. ¿Tienes SSH para probar si SSHTunnel es una solución alternativa para obtener alrededor de sus portadores de la censura?

0voto

Karan Raj Baruah Puntos 1356

Actualmente no creo que hay alguna forma de cambiar el DNS sobre sus datos móviles. Pero si el teléfono tiene root puede utilizar aplicaciones como Configurar DNS.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X