Comment puis-je vider le cache DNS?

27

Comment puis-je vider mon cache DNS sur mon téléphone Android? (Droid3, Gingerbread, enraciné pour être spécifique)

Idéalement, je recherche une commande pour exécuter un émulateur de terminal, quelque chose de similaire à

ipconfig /flushdns

Sur une machine Windows.

Quelle est la version Linux de cela?

Steve Robbins
la source
Devez-vous le faire pour une application système, une application tierce ou votre application?
onik
Tiers je suppose? J'en ai besoin pour envoyer un ping à un serveur via l'émulateur de terminal.
Steve Robbins du
Veuillez mettre à jour votre titre pour indiquer que vous souhaitez une réponse basée sur CLI. C'est un classement dans Google et 99% des personnes recherchant ce titre n'ont pas de compétences root ou CLI.
PJ Brunet

Réponses:

11

Sur un système Linux typique, le cache est effacé en exécutant /etc/init.d/nscd restart, mais au moins ma ROM n'utilise pas nscd pour mettre en cache DNS. Vous pouvez vérifier si le vôtre le fait, mais j'en doute. J'ai vu des suggestions selon lesquelles l'effacement du cache du navigateur effacerait également le cache DNS, mais un moyen sûr est de faire un redémarrage dur (arrêt, retirer la batterie pendant 30 secondes, rattacher la batterie et démarrer).

onik
la source
1
Tout mon googler fait également apparaître la suggestion de "redémarrage dur".
Chahk
Je downvoting parce que la réponse nécessite root et / ou suppose un accès shell qui est irréaliste pour la plupart des utilisateurs d'Android. Le reste de la réponse n'a pas résolu mon problème. Je pense également que Matthew Read devrait reconsidérer le verrouillage de la question, car il ne s'agit absolument pas d'un "accord conclu". Le DNS est extrêmement complexe et il y aura encore des réponses légitimes de personnes sans compte Android, j'en suis un exemple. FWIW J'ai 10+ points de réputation et je n'ai toujours pas pu répondre à la question.
PJ Brunet
@PJBrunet Pour être précis, vous avez 1 représentant et 100 représentants du bonus d'association, ce qui ne compte pas puisque vous ne l'avez pas gagné sur ce site. Voir Qu'est-ce qu'une question "protégée"? pour plus de détails. Quant à la question, je vais la déprotéger pour l'instant.
onik
14

Les adresses sont mises en cache pendant 600 secondes (10 minutes) par défaut. Les recherches ayant échoué sont mises en cache pendant 10 secondes. De tout ce que j'ai vu, il n'y a rien de intégré pour vider le cache. Il s'agit apparemment d'un bogue signalé dans Android en raison de la façon dont il stocke le cache DNS. L'effacement du cache du navigateur ne touche pas le DNS, la «réinitialisation matérielle» l'efface car elle expire simplement.

Pouvons-nous demander la raison sous-jacente de la nécessité d'effacer le cache DNS? Peut-être y a-t-il une autre solution manquée parce que nous ne regardons pas la situation dans son ensemble.

user8522
la source
2
Je ne suis pas sûr de l'OP, mais j'ai un cas d'utilisation où mon réseau domestique sert des adresses comme server.home.mydomain.com, mais mon FAI résout * .mydomain.com (pour toute valeur de "*" ce n'est pas déjà mappé) sur www.mydomain.com si mon téléphone est en 3G / 4G, il m'est donc parfois impossible d'accéder à mon réseau domestique jusqu'à ce que le cache expire.
TomG
Il semble que la mise en cache forcée de 10 minutes soit corrigée dans JB - voir ce commit . Pour les versions plus anciennes, le comportement du cache Java pouvait être réglé par networkaddress.cache.ttlet networkaddress.cache.negative.ttldans build.prop.
Sergey Vlasov
Fwiw, il y a encore des problèmes DNS (peut-être différents) même en 4.3 - les tablettes sur wifi peuvent ne pas obtenir d'adresse IP pour les noms que les machines Linux et Windows (sur le réseau qui héberge le wifi) peuvent résoudre.
Jon Shemitz
7

La seule façon de le faire dans Android est de faire un redémarrage dur. Les outils de ligne de commande nécessaires ne sont normalement pas disponibles, mais dans mes tests, un redémarrage dur a toujours fait l'affaire pour moi (Galaxy Nexus et HTC Desire, différentes ROM).

C'est une douleur, mais c'est plus rapide que le délai d'expiration du cache de 10 minutes.

Martin
la source
Comment fait-on cela?
Steve Robbins
1
- Maintenez le bouton d'alimentation enfoncé - Choisissez «Éteindre» - Laissez le téléphone s'éteindre complètement - Retirez la batterie et attendez 30 secondes - Retournez la batterie - Rallumez le téléphone. D'après mon expérience, le retrait de la batterie n'est pas nécessaire, mais certains ont signalé que cela ne fonctionne pas si vous manquez cette étape.
Martin
2
Retirer la batterie est un non-sens. Le redémarrage fonctionne. Je soupçonne que le temps supplémentaire pour cela permet simplement à un cache DNS externe de se terminer.
Matthias Urlichs
5

Il existe également des applications comme Internet Booster promettant de "vider le cache DNS" (entre autres). Je ne l'ai pas essayé moi-même, et de plus il ne semble pas possible de faire seulement cela (juste un bouton "Optimiser" qui "applique des améliorations"); ses effets peuvent également différer d'un appareil à l'autre (selon la description de l'application) - mais cela peut être mieux qu'un redémarrage. Btw: bien que ne mentionnant pas root comme exigence, il pourrait toujours être nécessaire.

Il existe plusieurs "applications similaires" répertoriées sur Google Play - mais sachez que la plupart d'entre elles incluent des publicités Airpush et / ou veulent des autorisations excessives, c'est pourquoi je ne les ai pas nommées ici.


Une autre solution possible (non testée par moi-même) que j'ai trouvée chez MadPC , apparemment citant la réponse de user8522 avant de déclarer:

La dernière option, mais la plus intensive pour l'utilisateur lui-même, sauf s'il souhaite simplement attendre la mise à jour: demandez à vos utilisateurs d'accéder aux paramètres -> applications -> Emplacement réseau -> Effacer les données

Un autre petit guide mentionne un autre moyen facile de vider le DNS (encore une fois, je n'ai pas testé cela moi-même): il suffit de passer en mode avion (oups, pas de réseau?) Et le retour (ah, il est là) devrait faire l'affaire. Cela peut sembler stupide, mais je pourrais imaginer qu'en entrant en mode avion, Android fait quelque chose de similaire /etc/init.d/networking stop, qui a un flush DNS comme effet secondaire.


Une solution très simple a été fournie par dtumaykin dans les commentaires ci-dessous: le simple fait de passer en mode avion et vice-versa pourrait déjà le faire (bien sûr avec l'effet secondaire du réseau en baisse pendant quelques secondes;) Bien que cela puisse ne pas fonctionner sur certains appareils, cela vaut la peine d'essayer: aucune installation supplémentaire, et facilement effectuée même par n00bs.

Si quelqu'un a essayé l'une de ces solutions, la confirmation (ou l'inverse) est certainement la bienvenue :)

Izzy
la source
3
Il existe des commandes shell ndc resolver flushdefaultifet ndc resolver flushif wlan0; ils ont besoin de racine. Il existe également la méthode NetworkManagementService.flushDefaultDnsCache () , qui nécessitait juste CHANGE_NETWORK_STATE avant JB, mais a ensuite été verrouillée sur CONNECTIVITY_INTERNAL. Il y avait donc apparemment un moyen piraté de nettoyer le cache DNS sans racine (après le réglage de build.prop pour tuer le cache au niveau Java), mais cela ne fonctionnera pas dans JB.
Sergey Vlasov
Merci pour les informations supplémentaires, @SergeyVlasov! Savez-vous si l'une des méthodes que vous avez mentionnées est déclenchée par les deux solutions proposées mentionnées en dernier dans ma réponse (ou si elles fonctionnent, mais pour une raison différente)?
Izzy
4
Le mode avion activé / désactivé a fonctionné pour moi. Samsung Galaxy S4 Mini et CM12.1.
dtumaykin
Je ne peux pas répondre car Matthew Read a verrouillé la question. Veuillez le gifler pour moi :-) Le redémarrage dur n'a pas fonctionné pour moi, le mode avion n'a pas fonctionné, l'effacement de "l'emplacement" (selon la réponse) n'a pas fonctionné, les heures d'attente n'ont pas fonctionné non plus. Dans le passé, j'ai simplement résolu cela en fermant l'onglet du navigateur et en ouvrant un nouvel onglet. Il existe une application "sans racine" 8.8.8.8 (Google DNS) cependant, je ne peux pas accorder l'accès VPN car j'ai déjà une application VPN pour laquelle j'ai payé. La solution pour moi a été de changer le paramètre "emplacement virtuel" du VPN ou la solution était d'arrêter et de démarrer mon VPN. En supposant que mon VPN possède son propre cache DNS.
PJ Brunet
@PJBrunet Je ne giflerai pas de mod (trop dangereux, il pourrait fermer mon compte;) et en plus, mes bras ne sont pas assez longs pour aller outre-mer). Mais gagner 10 répétitions n'est pas trop difficile (poser une bonne question en obtenant 2 votes positifs ou écrire une réponse en obtenant 1 vote positif); avec ça, revenez ici et écrivez votre réponse :) Merci pour le partage!
Izzy
2

Dans les versions modernes d'Android, il existe une option pour effacer le cache DNS de Chrome sous chrome: // net-internals / # dns

Joao Costa
la source
n'a pas fonctionné pour moi, a encore dû faire un redémarrage difficile
Cerveser
0

Dans mon cas, je n'avais qu'un seul nom de domaine dont j'avais besoin d'être vidé. Des suggestions telles que le basculement du mode avion, un redémarrage dur ou les actions dans chrome: // net-internals / # dns n'ont pas fonctionné pour moi. Au lieu de cela, j'ai temporairement modifié mes paramètres WiFi pour utiliser le serveur de noms de Google à 8.8.8.8.

Ce sont les étapes que j'ai prises:

  • Paramètres -> WiFi -> appuyez sur la connexion actuelle et notez l'adresse IP actuelle
  • Cliquez longuement sur la connexion actuelle -> Modifier le réseau
  • Cochez "Paramètres avancés"
  • Changez "Paramètres IP" en "statique"
  • Réglez "adresse IP" sur l'adresse IP actuelle dès la première étape
  • Réglez "Gateway" sur votre adresse IP mais avec .1 comme 4ème numéro (C'est juste une supposition. Si vous savez que c'est quelque chose de différent, utilisez-le)
  • Réglez "DNS 1" sur 8.8.8.8

Après ces étapes, lorsque j'ai pingédité le nom de domaine dans la console, il s'est résolu à la bonne adresse IP et a semblé écraser l'ancienne mise en cache. Vraisemblablement, la visite du domaine dans un navigateur aura le même effet.

Lorsque je suis retourné au WiFi et que j'ai redéfini "Paramètres IP" sur "DHCP", le domaine correct a continué à se résoudre à l'adresse IP actuelle.

C'est sur un Sony Xperia Z3 sous Android 5.1.1

pix
la source
0

Sur un Adroid 5.1 Mobile qui a pris un mauvais DNS car il est passé à beaucoup entre deux WLAN; (Un point d'interrogation sur une connexion WLAN. Je ne voulais pas restaurer mon téléphone comme je l'ai fait une fois .. Engelsiz: DNS Changer l'a corrigé; )

user237310
la source