21 votos

¿Por qué Android se niega a resolver los registros DNS que apuntan a direcciones IP internas?

Tengo un comportamiento muy extraño en un dispositivo Android (Nexus 7) al intentar acceder a aplicaciones de la red local. En lugar de obtener la IP real de la máquina en LAN, el dispositivo Android obtiene la IP pública, lo que significa que Chrome, Firefox u cualquier otro navegador simplemente muestra la página web del router.

Tengo un servidor DNS interno que maneja las redes locales. Haciendo ping desde un PC funciona correctamente:

$ ping s.pelicandd.com

PING pelicandd.com (192.168.1.15) 56(84) bytes of data.
64 bytes from front.pelicandd.com (192.168.1.15): icmp_seq=1 ttl=64 time=0.524 ms
64 bytes from front.pelicandd.com (192.168.1.15): icmp_seq=2 ttl=64 time=0.578 ms
^C

En un dispositivo HTC One (accedido con adb shell), también funciona bien:

shell@m7:/ $ ping s.pelicandd.com

PING pelicandd.com (192.168.1.15) 56(84) bytes of data.
64 bytes from front.pelicandd.com (192.168.1.15): icmp_seq=1 ttl=64 time=2.56 ms
64 bytes from front.pelicandd.com (192.168.1.15): icmp_seq=2 ttl=64 time=27.8 ms
^C

Sin embargo, esto es lo que obtengo al hacer el mismo ping desde Nexus 7:

shell@flo:/ $ ping s.pelicandd.com

PING pelicandd.com (90.78.26.42) 56(84) bytes of data.
64 bytes from LFbn-1-2441-42.w90-78.abo.wanadoo.fr (90.78.26.42): icmp_seq=1 ttl=64 time=2.56 ms
64 bytes from LFbn-1-2441-42.w90-78.abo.wanadoo.fr (90.78.26.42): icmp_seq=2 ttl=64 time=8.63 ms
^C

En lugar de resolver a la IP interna, resuelve a la pública.

La configuración de red es, excepto la dirección IP del dispositivo, exactamente la misma en ambos dispositivos: la configuración de IP está en Estático, y los servidores DNS son los internos. Ambos dispositivos Android están conectados a través de Wi-Fi (a diferencia del PC). Sin embargo, una diferencia importante es que Nexus 7 está utilizando Android 6.0.1, mientras que HTC One utiliza Android 5.0.2.

No hay nm-tool, dig o nslookup en Nexus 7. El dispositivo no está rooteado.

El problema existe desde que compré el dispositivo hace unas semanas, por lo que difícilmente podría ser un problema con la caché DNS.

¿Qué puedo hacer para inspeccionar más a fondo este problema?

0 votos

Primero que nada, debes inspeccionar el problema. Por favor instala IP Tools desde la Play Store, realiza algunas nslookup y así sabremos más. Especialmente el servidor DNS que utiliza Nexus, la búsqueda de DNS, y más. Prueba este IP Tools. Está en idioma polaco, pero por supuesto puedes cambiarlo. Esta herramienta la utilizo en caso de problemas como este.

0 votos

Hm. En Información IP, muestra las direcciones DNS correctas. En la pestaña Búsqueda DNS, se muestra la IP correcta (192.168.1.15). Sin embargo, la pestaña Traceroute muestra la IP pública incorrecta (90.78.26.42).

0 votos

Entonces, en mi opinión, hay algo mal con la entrada de DNS interno para Nexus. Utilizo una configuración similar y todo funciona bien.

7voto

Dimarc67 Puntos 66

Recientemente nos encontramos con este problema, y lo limitamos a ocurrir ÚNICAMENTE en dispositivos con Android v5 y más nuevos. Android v4 y todos los demás sistemas operativos no tienen problema.

Con ese pequeño detalle, determinamos que Android v5 y más nuevos insiste en usar IPv6 para la resolución de nombres de DNS. (Dado que hemos desactivado completamente IPv6 en nuestra red, esto concuerda con el problema). Si Android v5(+) no puede obtener una respuesta IPv6 de DNS local, entonces se comunica con el host de nombres público de Google (8.8.8.8). Por lo tanto, no hay DNS interno, solo externo.

Sorteamos el problema creando registros DNS en nuestros servidores DNS públicos para ciertos nombres e IPs internos. Con eso hecho, el DNS público de Google pudo resolver estos nombres internos con IPs internas, y los dispositivos pudieron llegar a nuestros hosts internos.

Estamos procediendo a habilitar completamente IPv6 en nuestros servidores de DNS internos (controladores de dominio) como solución permanente.

\=========================================

ACTUALIZACIÓN - Bueno, resulta que esto puede ser un total distracción... o no. Mi red doméstica es Win2008R2, de un solo dominio con DHCP y DNS y sin vinculación IPv6. Probé un dispositivo Android v5 desde allí y NO TUVE PROBLEMAS. La red de la oficina con problema es Win2012 (no R2), de un solo dominio.

Evité los actuales WAP de la oficina con un WAP Linksys independiente y un SSID separado para pruebas, el problema persiste.

Diferencias entre la red de la oficina y la de casa (que puedo pensar): - Versión de Windows - 2012 vs. 2008 R2 - modelo de router (Cisco vs. Linksys) - modelo de WAP (Aruba Networks de marca Dell vs. Linksys)

Estoy procediendo con cualquier otra prueba que se me ocurra para estrechar el problema. ¡Cualquier sugerencia o aportación es extremadamente apreciada!

\=========================================

PROBLEMA RESUELTO (?!)

Nuestro problema pareció desaparecer por sí solo tras un cambio en la topología de la red que no pensé que estuviera relacionado, pero aquí está la información por si acaso.

... (PIDIENDO DISCULPAS por esta historia larga y extendida, pero esto es cuando nuestros problemas con Android desaparecieron, así que sigue adelante si puedes. Probablemente estoy proporcionando DEMASIADOS detalles aquí, pero como no puedo ver una conexión directa, lo estoy exponiendo tal como sucedió.)

Nuestro proveedor de servicios de Internet es Comcast Business Class: un módem de cable con un bloque de IP estáticas de cinco direcciones (un número extraño pero así es como Comcast las vende). El módem de cable de Comcast es esencialmente un módem/firewall/router/switch, con nuestro bloque de IP estáticas programado de forma remota en él.

... (continuar como el texto original)

Dimarc67

0 votos

De hecho, este debería ser el motivo en mi caso también, ya que, de manera similar, no uso IPv6 internamente. He evitado el problema de DNS creando un servidor VPN local y pidiendo al dispositivo Android que use VPN en su lugar; funciona, pero obviamente es demasiado drástico.

0 votos

@ArseniMourzenko ¿Alguna vez resolviste este problema? Literalmente he perdido dos días haciendo nada más que intentar arreglar este problema, ya que literalmente ha afectado muchas cosas que funcionaban anteriormente. Y sí, probé una VPN pero redujo la velocidad de transferencia de más de 100Mbps a aproximadamente 20.

0 votos

@Michael: ya que mis servidores DNS locales están configurados solo para admitir IPv4, la respuesta de Dimarc67 fue relevante para mí (por eso también está marcada como la respuesta aceptada). A partir de ahí, simplemente configuré una VPN para todos los dispositivos Android, y estoy contento de usarla desde entonces. No he notado ninguna reducción en la velocidad de transferencia, ni me importaría, dada la forma en que uso los dispositivos móviles. Por si sirve de algo, estoy utilizando OpenVPN en el lado del servidor de Debian y OpenVPN Connect en los dispositivos Android.

3voto

user2723490 Puntos 130

Me encontré con esta publicación mientras intentaba hacer que mi dispositivo Android 6.0 utilizara el servidor DNS configurado localmente para resolver nombres de host locales. Una respuesta anterior indicaba que Android 5.0 y versiones posteriores insiste en utilizar servidores DNS IPv6. Esta fue la pista que me llevó a mi solución.

Mi enrutador estaba anunciando los servidores DNS IPv6 proporcionados por mi ISP utilizando DHCP-PD. Volví a configurar mi enrutador para dejar de anunciar los servidores DNS IPv6 y ahora el dispositivo Android 6.0 está resolviendo el nombre de host local utilizando el servidor DNS IPv4 proporcionado por DHCP (IPv4).

También tengo una traducción de dirección de red (DNAT) para redirigir todas las consultas DNS (puerto TCP/UDP 53) a mi servidor DNS local. Esto estaba en su lugar antes de deshabilitar el anuncio del enrutador con los servidores DNS IPv6, así que no sé si Android 5.0+ vuelve a los servidores DNS de Google (como se afirmaba en la respuesta anterior) y los capté con mi regla DNAT o si mi dispositivo Android 6.0 simplemente utilizó el servidor DNS IPv4 asignado por DHCP. De cualquier manera, la resolución del nombre de host local ahora funciona.

1 votos

Desactivar IPV6 en mi enrutador solucionó el problema en TODOS mis dispositivos Android.

3voto

Erikw Puntos 121

Finalmente pude resolver esto configurando un servidor DHCP en la misma red, el cual configura el dominio de búsqueda correcto para enviar a los clientes.

Una vez que tenía un servidor DHCP, en mi caso isc-dhcpd con la configuración en dhcp.conf:

option domain-name "myrealdomain.tld";

Android pudo resolver los registros A locales configurados en mi servidor DNS.

-1voto

mackowiakp Puntos 2

En primer lugar, por supuesto debes inspeccionar el problema. Así que por favor instala IP Tools desde Play Store, haz algunos nslookup y así sabremos más. Especialmente el servidor DNS que Nexus utiliza, la búsqueda de DNS y demás. Prueba esta IP Tools. Está en idioma polaco pero por supuesto puedes cambiarlo. Esta herramienta la uso en caso de estos problemas.

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