Gingerbread phone solo consultas para registros AAAA?

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

Tengo computadoras de escritorio Windows XP, Windows 7 y Linux y una tableta 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), puedo ver el sitio perfectamente. Al escribir la URL de un sitio solo IPv4 (como android.stackexchange.com), aparece un error que indica que no se puede acceder al sitio. Cuando ingreso la dirección IP IPv4, PUEDO llegar al sitio mencionado con este teléfono.

Así que habilité la depuración en mi servidor DNS (dnsmasq) y noté que

  • todos los clientes que trabajan hacen una solicitud del registro AAAA y si eso falla prueban el registro A.
  • el teléfono Android 2.3.3 SOLAMENTE solicita el registro AAAA y si eso falla, todo falla.

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

¿Cómo puedo solucionar esto?

Respuestas (2)

Puede informar el error a los desarrolladores de Android o votar por un error existente , si ya hay uno abierto. Este se parece un poco al problema del que estás hablando.

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

Sí, este sitio me ayudó mucho: encontré este informe de error code.google.com/p/android/issues/detail?id=8113 que se parece exactamente a lo que veo. Por lo que puedo decir, se trata de un "error conocido" que parece haberse solucionado en febrero de 2011. Ahora tengo que averiguar qué versión de Android incluye esta solución.

Tomó mucho esfuerzo, pero en realidad encontré una solución funcional a 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 predeterminada.

¿Cómo sucedió eso? ¡En el DHCP presiono una ruta predeterminada (opción 3 de dhcp)!

Me di cuenta de que cuando acababa de tener el enlace IPv6 (que es parte de una conexión a Internet completamente nueva), mi teléfono SÍ se conectó a Internet con IPv4 e IPv6. Así que recreé la configuración original y descubrí que en ese escenario sí funciona. Entonces, ¿qué es diferente?

Me tomó dos noches con wireshark rastrear al culpable.

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

Cuando hago eso, el teléfono Android solo muestra una ruta para la subred local y la ruta adicional que presioné. La ruta predeterminada se pierde, por lo que el tráfico IPv4 se distorsiona. Aparentemente, Android ya no intenta realizar solicitudes de DNS IPv4 (que es el problema con el que comencé).

Todos mis otros sistemas (Windows {XP,7}, Linux, Android 3.x) no hacen esto y mantienen todas las rutas enviadas y la ruta predeterminada.

Una vez que descubrí cuál era el problema, pude buscar en Google de manera más efectiva 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 en realidad ¡¡obras!!

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

Entonces, al mirar el paquete DHCP ACK, verá la ruta predeterminada allí dos veces: en la opción 3 y 121.

Una solución bastante inesperada... pero funciona para mí.


Resulta que el comportamiento de Android es correcto:

https://www.rfc-editor.org/rfc/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."