6 votos

¿El teléfono Gingerbread sólo consulta los registros AAAA?

Desde ayer tengo (además del IPv4 normal) IPv6 en mi LAN en casa (el IPv6 nativo lo proporciona mi ISP).

Tengo ordenadores de sobremesa con Windows XP, Windows 7 y Linux y una tablet Android 3.1 (Asus Transformer 101) que funcionan bien. Pueden acceder a sitios web IPv4 e IPv6 en Internet.

El problema es con mi Samsung Galaxy S2 (Android 2.3.3). El sistema obtiene una dirección IPv6 pública y una dirección IPv4 interna.

Cuando escribo la URL de un sitio habilitado para IPv6 (como google.com o xs4all.nl) consigo ver el sitio sin problemas. Cuando escribo la URL de un sitio con IPv4 solamente (como Android.stackexchange.com) obtengo un error indicando que no se puede llegar al sitio. Cuando introduzco la dirección IPv4 PUEDO llegar al sitio mencionado con este teléfono.

Así que activé la depuración en mi servidor DNS (dnsmasq) y me di cuenta de que

  • todos los clientes que trabajan hacen una petición del registro AAAA y si eso falla intentan el registro A.
  • el teléfono Android 2.3.3 SOLO hace una solicitud del registro AAAA y si eso falla todo falla.

Todos los clientes (incluido el teléfono) reciben la misma configuración de red.

¿Cómo puedo solucionarlo?

4voto

mercutio Puntos 5828

Podrías informar del error a los desarrolladores de Android, o votar sobre un error existente si ya hay uno abierto. Este se parece un poco a la cuestión de la que hablas.

Asegúrese de explicar exactamente lo que está sucediendo, y cómo pueden reproducir el problema.

2voto

pdavis Puntos 2497

Me ha costado mucho esfuerzo, pero he encontrado una solución que funciona para mi problema.

Primero actualicé mi teléfono a la última versión disponible de Android 2.3.6 y eso no resolvió mi problema. Así que instalé una aplicación que me muestra más detalles sobre la configuración de red de mi teléfono. Y después de investigar un poco me di cuenta de lo que estaba mal:

Mi teléfono no tenía una ruta IPv4 por defecto.

¿Cómo sucedió eso? ¡En el DHCP empujo una ruta por defecto (dhcp opción 3)!

Me di cuenta de que cuando sólo tenía el enlace IPv6 (que es parte de una conexión a Internet completamente nueva) mi teléfono SÍ se conectaba a Internet tanto con IPv4 como con IPv6. Así que recreé la configuración original y encontré que en ese escenario sí funciona. Entonces, ¿cuál es la diferencia?

Me tomó dos noches con wireshark para rastrear al culpable.

La verdadera razón resulta ser que tengo una ruta estática para mi DMZ que es empujada por mi servidor DHCP IPv4 (opción 121 de dhcp).

Cuando lo hago, el teléfono Android sólo muestra una ruta para la subred local y la ruta adicional que he introducido. La ruta por defecto se pierde, por lo que el tráfico IPv4 se distorsiona. Aparentemente, Android ya no intenta hacer peticiones DNS IPv4 (que es el problema con el que empecé).

Todos mis otros sistemas (Windows {XP,7}, Linux, Android 3.x) no lo hacen y mantienen todas las rutas empujadas y la ruta por defecto.

Una vez que me di cuenta de cuál era el problema, pude buscar en Google de forma más eficaz y encontré este informe de error: http://code.google.com/p/Android/issues/detail?id=17525 Lo que a su vez condujo a una solución que realmente funciona.

Cita de http://forum.xda-developers.com/archive/index.php/t-635489.html

So as a "band aid fix it" i added the default gw to the static routes list... 
So the line in dnsmasq looks like:

dhcp-option=121,<network>,<route>,0/0,192.168.1.254

Así que al mirar el paquete DHCP ACK verás la ruta por defecto allí dos veces: bajo la opción 3 y 121.

Una solución bastante inesperada... pero a mí me funciona.


Resulta que el comportamiento de Android es correcto:

http://tools.ietf.org/html/rfc3442#page-5

"If the DHCP server returns both a Classless Static Routes option and
a Router option, the DHCP client MUST ignore the Router option."

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