9 votos

Las consultas de DNS se almacenan en caché de forma permanente, ¿cómo limpiar de forma fiable la caché de DNS en Android 7+?

¿Existe una manera confiable y reproducible de borrar la caché DNS en Android Nougat 7.0?

Sé que al menos hay otra pregunta acerca de esto, pero esa fue hace 8 años y espero poder preguntar de nuevo y ver lo que la gente está haciendo en estos días.

Para explicar un poco más mi configuración:

Estoy probando la carga de una página web simple en el navegador Chrome con la captura de paquetes de Wireshark para ver las solicitudes DNS. También estoy ejecutando dnsmasq en mi LAN y he mapeado el nombre de mis páginas web: mymovies a la dirección IP correcta de la máquina en mi LAN en la que está el servidor web. Por lo tanto, http://mymovies debería funcionar y de hecho carga.

Las búsquedas de DNS comienzan inicialmente con el servidor DHCP agregando el sufijo DNS (.home) por lo que en la traza de paquetes veo una solicitud DNS para mymovies.home que falla porque no tengo un mapeo de dirección IP para eso en dnsmasq.conf. Entonces aparece una segunda búsqueda de DNS solo para mymovies que tiene éxito.

La mayoría de las veces, las búsquedas de DNS posteriores son siempre solo para mymovies y nunca más para mymovies.home sin importar lo que intente hacer para borrar la caché DNS:

Estoy probando a través de WiFi con un Moto G5 ejecutando Android 7.0 y está rooteado, por lo que puedo ejecutar comandos desde adb shell en el sistema operativo.

He intentado muchas cosas como:

  1. Cerrar el navegador Chrome y volver a iniciarlo.
  2. chrome://net-internals/#dns para borrar la caché de host y también limpiar los sockets
  3. Configuración > Aplicaciones > Chrome > Almacenamiento > Borrar caché
  4. ndc resolver clearnetdns wlan0

Lo único que parece funcionar para mí fue apagar y encender el teléfono de nuevo. Después de reiniciarlo, abrí http://mymovies en Chrome en el teléfono. La página cargó y en la traza de Wireshark veo la primera solicitud DNS para mymovies.home que falla como de costumbre, seguida de una solicitud DNS para mymovies que tiene éxito. Luego cerré esa pestaña y abrí una nueva y cargué la página de nuevo.. Lo hice dos veces. Cada vez, ahora veo una solicitud de DNS para mymovies solamente.. ni siquiera intenta mymovies.home.

Reinicié el servidor dnsmasq y la primera búsqueda de DNS después de eso fue para mymovies.home seguida de una búsqueda para mymovies. Pero desde entonces, las búsquedas de DNS ahora son solo para mymovies. Esto es a pesar de reiniciar el servidor dnsmasq varias veces e intentar los cuatro supuestos pasos de limpieza de caché DNS mencionados anteriormente.

Pero para confundir más las cosas, intenté el truco de activar y desactivar el Modo Avión. Ahora, cuando cargo mi pequeña página web de prueba varias veces, ¡parece que ya no almacena en caché en absoluto! Cargar la página web siempre da inicialmente una búsqueda DNS para mymovies.home que falla, luego una búsqueda para mymovies que tiene éxito. Incluso después de reiniciar el teléfono, las búsquedas de DNS ahora han dejado de almacenar en caché por completo y ¡siempre intenta mymovies.home cada vez!

Pienso que este comportamiento de almacenamiento en caché es normal y esperado, pero solo me gustaría una manera de borrar esa caché para que vuelva a intentar mymovies.home sin tener que reiniciar el teléfono.

No estoy seguro si el IPv6 tiene algo que ver con esto. En mi enrutador he especificado la dirección IP del Raspberry Pi en mi LAN en el que se está ejecutando dnsmasq, por lo que el enrutador direcciona las solicitudes DNS hacia él.

No quiero que la página deje de almacenar en caché O que siempre almacene en caché. Solo quiero poder borrar la caché DNS de manera predecible para que pueda hacer la solicitud DNS de mymovies.home una vez seguida por el almacenamiento en caché de DNS esperado.

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