¿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:
- Cerrar el navegador Chrome y volver a iniciarlo.
chrome://net-internals/#dns
para borrar la caché de host y también limpiar los sockets- Configuración > Aplicaciones > Chrome > Almacenamiento > Borrar caché
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.