Come posso svuotare la cache DNS?


27

Come posso cancellare la mia cache DNS sul mio telefono Android? (Droid3, Gingerbread, rooted per essere specifici)

Idealmente sto cercando un comando per eseguire un emulatore di terminale, qualcosa di simile a

ipconfig /flushdns

Su una macchina Windows.

Qual è la versione Linux di questo?


Devi farlo per un'app di sistema, un'app di terze parti o la tua app?
onik,

Di terze parti immagino? Ne ho bisogno quando eseguo il ping di un server tramite Terminal Emulator.
Steve Robbins,

Aggiorna il titolo per riflettere che desideri una risposta basata sulla CLI. Questa è la classifica di Google e il 99% delle persone che cercano questo titolo non ha competenze di root o CLI.
PJ Brunet,

Risposte:


11

Su un tipico sistema Linux la cache viene cancellata eseguendo /etc/init.d/nscd restart, ma almeno la mia ROM non usa nscd per memorizzare nella cache DNS. Puoi controllare se il tuo lo fa, ma ne dubito. Ho visto dei suggerimenti sul fatto che svuotare la cache di brower cancellerebbe anche la cache DNS, ma un modo sicuro è quello di fare un riavvio difficile (spegnimento, rimozione della batteria per 30 secondi, ricollegamento della batteria e avvio).


1
Tutta la mia ricerca su Google fa apparire anche il suggerimento di "riavvio forzato".
Chahk,

Sto effettuando il downvoting perché la risposta richiede root e / o presuppone l'accesso alla shell che non è realistico per la maggior parte degli utenti Android. Il resto della risposta non ha risolto il mio problema. Inoltre credo che Matthew Read dovrebbe riconsiderare di bloccare la domanda perché questo non è assolutamente un "affare fatto". Il DNS è estremamente complesso e ci saranno ancora risposte più legittime da parte di persone senza account Android, ne sono un esempio. FWIW Ho 10+ reputazione e ancora non sono riuscito a rispondere alla domanda.
PJ Brunet,

@PJBrunet Per essere precisi, hai 1 rappresentante e 100 rappresentanti dal bonus dell'associazione, che non conta poiché non lo hai guadagnato su questo sito. Vedi Cos'è una domanda "protetta"? per ulteriori dettagli. Per quanto riguarda la domanda, per ora non la proteggerò.
onik,

14

Gli indirizzi vengono memorizzati nella cache per 600 secondi (10 minuti) per impostazione predefinita. Le ricerche non riuscite vengono memorizzate nella cache per 10 secondi. Da tutto quello che ho visto, non c'è niente incorporato per svuotare la cache. Questo è apparentemente un bug segnalato in Android a causa del modo in cui memorizza la cache DNS. Svuotare la cache del browser non tocca il DNS, il "hard reset" lo cancella perché semplicemente scade.

Possiamo chiedere il motivo alla base della necessità di svuotare la cache DNS? Forse c'è un'altra soluzione che manca perché non stiamo guardando il quadro generale.


2
Non sono sicuro dell'OP, ma ho un caso d'uso in cui la mia rete domestica serve indirizzi come server.home.mydomain.com, ma il mio ISP risolve * .mydomain.com (per qualsiasi valore di "*" questo non è già mappato) su www.mydomain.com se il mio telefono è su 3G / 4G, quindi a volte non riesco ad accedere alla mia rete domestica fino al timeout della cache.
TomG

Sembra che la memorizzazione forzata nella cache di 10 minuti sia stata risolta in JB - vedi questo commit . Per le versioni precedenti, il comportamento della cache Java potrebbe essere ottimizzato da networkaddress.cache.ttle networkaddress.cache.negative.ttlin build.prop.
Sergey Vlasov,

In seguito, ci sono ancora alcuni (forse diversi) problemi DNS anche in 4.3 - i tablet sul wifi potrebbero non ottenere un indirizzo IP per i nomi che i computer Linux e Windows (sulla rete che ospita il wifi) possono risolvere.
Jon Shemitz,

7

L'unico modo per farlo in Android è fare un riavvio difficile. Gli strumenti da riga di comando necessari non sono normalmente disponibili, tuttavia nei miei test un riavvio difficile ha sempre fatto il trucco per me (Galaxy Nexus e HTC Desire, varie ROM).

Questo è un problema, ma è più veloce del timeout della cache di 10 minuti.


Come si esegue questo?
Steve Robbins,

1
- Tieni premuto il pulsante di accensione - Scegli "Spegni" - Consenti al telefono di spegnersi completamente - Rimuovi la batteria e attendi 30 secondi - Restituisci la batteria - Riaccendi il telefono. Nella mia esperienza, non è necessario rimuovere la batteria, ma alcuni hanno riferito che non funziona se si perde questo passaggio.
Martin,

2
La rimozione della batteria non ha senso. Il riavvio funziona. Ho il sospetto che il tempo aggiuntivo per questo semplicemente consenta il timeout di alcune cache DNS esterne.
Matthias Urlichs,

5

Ci sono anche app come Internet Booster che promettono di "svuotare la cache DNS" (tra le altre cose). Non l'ho provato da solo, e inoltre non sembra esserci modo di farlo (solo un pulsante "ottimizza" che "applica miglioramenti"); anche i suoi effetti potrebbero differire tra i dispositivi (dice la descrizione dell'app) - ma potrebbe essere migliore di un riavvio. A proposito: pur non menzionando root come requisito, potrebbe essere ancora necessario.

Esistono diverse "app simili" elencate su Google Play, ma tieni presente che la maggior parte di esse include annunci Airpush e / o desidera autorizzazioni eccessive, motivo per cui non le ho nominate qui.


Un'altra possibile soluzione (non testata da me) che ho trovato su MadPC , apparentemente citando la risposta di user8522 prima di dichiarare:

L'ultima opzione ma più intensiva per l'utente stesso a meno che non vogliano semplicemente aspettare l'aggiornamento: chiedi ai tuoi utenti di accedere alle impostazioni -> applicazioni -> Posizione di rete -> Cancella dati

Un altro breve howto menziona un modo semplice diverso per svuotare il DNS (di nuovo, non l'ho provato io stesso): passare semplicemente alla modalità aereo (oops, nessuna rete?) E viceversa (ah, eccolo) dovrebbe fare il trucco. Potrebbe sembrare stupido, ma potrei immaginare quando entra in modalità aereo Android fa qualcosa di simile /etc/init.d/networking stop, che ha un flush DNS come effetto collaterale.


Dtumaykin ha fornito una soluzione molto semplice nei commenti seguenti: passare semplicemente alla modalità aereo e viceversa potrebbe già farlo (ovviamente con l'effetto collaterale della rete che si abbassa per un paio di secondi;) Anche se potrebbe non funzionare su alcuni dispositivi, vale la pena provare: nessuna installazione extra e facilmente eseguibile anche da n00bs.

Se qualcuno ha provato una di queste soluzioni, la conferma (o il contrario) è sicuramente il benvenuto :)


3
Ci sono comandi shell ndc resolver flushdefaultife ndc resolver flushif wlan0; richiedono root. Esiste anche il metodo NetworkManagementService.flushDefaultDnsCache () , che ha richiesto solo CHANGE_NETWORK_STATE prima di JB, ma è stato bloccato su CONNECTIVITY_INTERNAL. Quindi apparentemente c'era un modo hacker per pulire la cache DNS senza root (dopo l'ottimizzazione build.prop per uccidere la cache a livello Java), ma non funzionerà in JB.
Sergey Vlasov,

Grazie per le informazioni aggiuntive, @SergeyVlasov! Sai se uno dei metodi che hai citato viene attivato dalle due soluzioni proposte menzionate per ultime nella mia risposta (o se funzionano, ma per un motivo diverso)?
Izzy

4
La modalità aereo on-off ha funzionato per me. Samsung Galaxy S4 Mini e CM12.1.
Dtumaykin,

Non posso rispondere perché Matthew Read ha bloccato la domanda. Per favore, schiaffeggiarlo per me :-) Il riavvio forzato non ha funzionato per me, la modalità aereo non ha funzionato, cancellare la "posizione" (come da risposta) non ha funzionato, neanche le ore di attesa. In passato, ho semplicemente risolto questo problema chiudendo la scheda del browser e aprendo una nuova scheda. Esiste un'app "no root" 8.8.8.8 (Google DNS), tuttavia, non posso concedere l'accesso VPN perché ho già un'app VPN che ho pagato. La soluzione per me era cambiare l'impostazione della "posizione virtuale" della VPN o la soluzione era di arrestare e avviare la mia VPN. Supponendo che la mia VPN abbia una propria cache DNS.
PJ Brunet,

@PJBrunet Non schiaffeggerò una mod (troppo pericolosa, potrebbe chiudere il mio account;) e inoltre, le mie braccia non sono abbastanza lunghe da raggiungere oltreoceano). Ma guadagnare 10 rep non è troppo difficile (fai una buona domanda ottenendo 2 voti, oppure scrivi una risposta ottenendo 1 voto); con ciò, torna qui e scrivi la tua risposta :) Grazie per averlo condiviso!
Izzy

2

Nelle versioni moderne di Android esiste un'opzione per cancellare la cache DNS di Chrome in chrome: // net-internals / # dns


non ha funzionato per me, ha dovuto comunque eseguire un riavvio difficile
Cerveser,

0

Nel mio caso, avevo solo un nome di dominio che avevo bisogno di scaricare. Suggerimenti come l'attivazione della modalità aereo, l'esecuzione di un riavvio forzato o le azioni in chrome: // net-internals / # dns non hanno funzionato per me. Invece ho temporaneamente modificato le mie impostazioni WiFi per utilizzare il nameserver di Google a 8.8.8.8.

Questi sono i passi che ho preso:

  • Impostazioni -> WiFi -> tocca la connessione corrente e annota l'indirizzo IP corrente
  • Connessione corrente clic lungo -> Modifica rete
  • Controlla "Impostazioni avanzate"
  • Cambia "Impostazioni IP" in "statico"
  • Impostare "Indirizzo IP" sull'IP corrente dal primo passaggio
  • Imposta "Gateway" sul tuo indirizzo IP ma con .1 come quarto numero (Questa è solo un'ipotesi. Se sai che è qualcosa di diverso, usalo)
  • Impostare "DNS 1" su 8.8.8.8

Dopo questi passaggi, quando ho modificato pingil nome di dominio nella console, si è risolto nell'indirizzo IP corretto e sembrava scrivere su quello precedente memorizzato nella cache. Presumibilmente visitare il dominio in un browser avrà lo stesso effetto.

Quando sono tornato su WiFi e impostato "Impostazioni IP" su "DHCP", il dominio corretto ha continuato a risolversi con l'indirizzo IP corrente.

Questo è su un Sony Xperia Z3 con Android 5.1.1


0

Su un Adroid 5.1 Mobile che ha preso DNS errato in quanto è passato molto tra due WLAN; (Un punto interrogativo su una connessione WLAN. Non volevo ripristinare il mio telefono come una volta. Engelsiz: DNS Changer lo ha riparato; )

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.