Existe-t-il un moyen fiable et reproductible de vider le cache DNS sous Android Nougat 7.0 ?
Je sais qu'il y a au moins une autre question comme celle-ci, mais elle datait d'il y a 8 ans. J'espère pouvoir la redemander et voir ce que les gens font aujourd'hui.
Pour expliquer un peu plus mon installation :
Je teste une page web simple qui se charge dans le navigateur Chrome avec la capture de paquets Wireshark pour voir les requêtes DNS. J'exécute également dnsmasq
sur mon réseau local et j'ai mappé le nom de mes pages web : mymovies
à l'adresse IP correcte de la machine sur mon réseau local où se trouve le serveur web. Donc http://mymovies
devrait fonctionner et il se charge.
Les recherches DNS commencent initialement par le serveur DHCP qui ajoute le suffixe DNS ( .home
) donc dans la trace du paquet je vois une requête DNS pour mymovies.home
ce qui échoue parce que je n'ai pas de mappage d'adresse IP pour cela dans la base de données. dnsmasq.conf
. Donc une seconde recherche DNS pour juste mymovies
apparaît et réussit.
La plupart du temps, je trouve que les recherches DNS ultérieures sont toujours pour mymovies
et plus jamais pour mymovies.home
peu importe ce que j'essaie de faire pour vider le cache DNS :
Je teste en WiFi avec un Moto G5 sous Android 7.0 et il est enraciné donc je peux lancer des commandes depuis l'intérieur. adb shell
au système d'exploitation.
J'ai essayé beaucoup de choses comme :
- Fermer le navigateur Chrome et le redémarrer.
-
chrome://net-internals/#dns
pour vider le cache de l'hôte et vider les sockets aussi - Paramètres > Apps > Chrome > Stockage > Effacer le cache
ndc resolver clearnetdns wlan0
La seule chose qui semblait fonctionner pour moi était d'éteindre et de rallumer le téléphone. Après le redémarrage, j'ai ouvert http://mymovies
dans Chrome sur le téléphone. La page s'est chargée et dans la trace Wireshark, je vois la première requête DNS pour mymovies.home
qui échoue comme d'habitude, suivi d'une demande DNS pour mymovies
qui réussit. J'ai ensuite fermé cet onglet et en ai ouvert un nouveau et j'ai chargé la page à nouveau J'ai fait cela deux fois. À chaque fois, je vois une demande de dns pour mymovies
seulement il n'essaie même pas mymovies.home
.
J'ai redémarré dnsmasq
et la première recherche DNS après cela était pour mymovies.home
suivi d'une recherche de mymovies
. Mais depuis lors, les recherches de DNS ne concernent plus que mymovies
. Et ce, malgré le redémarrage de l dnsmasq
plusieurs fois et en essayant les quatre étapes de suppression du cache DNS indiquées ci-dessus.
Mais pour compliquer les choses, j'ai essayé d'activer et de désactiver le mode avion. Maintenant, lorsque je charge ma petite page Web de test plusieurs fois, il semble que le cache ne fonctionne plus du tout ? Le chargement de la page web donne toujours une recherche DNS pour mymovies.home
qui échoue alors une recherche de mymovies
qui réussit. Même après le redémarrage du téléphone, les recherches DNS ont maintenant complètement cessé d'être mises en cache et il essaie d'abord mymovies.home
à chaque fois !
Je pense que ce comportement de mise en cache est normal et attendu, mais j'aimerais juste pouvoir effacer ce cache pour qu'il recommence à essayer mymovies.home
sans que je doive redémarrer le téléphone.
Je ne suis pas sûr que l'IPv6 ait quelque chose à voir avec les choses ? Dans mon routeur, j'ai spécifié l'adresse IP du Raspberry Pi sur mon réseau local que dnsmasq
pour que le routeur lui adresse les requêtes DNS.
Je ne veux pas que la page cesse d'être mise en cache OU qu'elle le soit toujours. Je veux juste être capable de vider le cache DNS de manière prévisible afin de pouvoir faire la requête DNS de mymovies.home
apparaissent une fois, suivis par la mise en cache DNS attendue.