Come svuotare la cache DNS locale in CentOS


20

Sto cercando un modo per svuotare la cache DNS locale su CentOS 6.

Il sistema non esegue alcun server DNS o altro e desidero che ogni query DNS venga inviata al nameserver configurato, anche per quelli duplicati.

La maggior parte di ciò che ho trovato online mi dice di fare service nscd restart, ricaricare o fare nscd -i hosts. Tuttavia, nessuno sembra svuotare la cache.

Quindi mi chiedo se qualcuno abbia un'idea di come potrei farlo. C'è qualche tipo di interruttore nel kernel che devo girare? Va bene anche qualsiasi tipo di lavoro.


Cosa stai facendo per verificare se la cache è stata svuotata o meno?
Giovanni

ok è un po 'complicato, ho un programma sul mio sistema in ascolto sulla porta 53 e inoltro le query DNS in un certo modo, e anche un proxy http che usa localhost come "server DNS"; sulla prima query (diciamo wget -e 'http_proxy=localhost:3128' xxx.com) vedo che la query viene inoltrata correttamente, ma tutte le successive non lo sono. Se aspetto abbastanza (la cache scade), funzionerà di nuovo.
Zee

E ho anche configurato il proxy (calamari) per non memorizzare nella cache alcun oggetto, quindi suppongo che il sistema stia ancora memorizzando nella cache la risposta in qualche modo
zee

1
nscd -i hosts -> funziona ogni volta. Ho riavviato nscd 3 volte di seguito e non volevo svuotare la cache.
Danie

nscd non sembra essere una cosa in CentOS 7 minimal. So che la domanda chiama CentOS 6, ma il titolo chiama CentOS in generale. Come funziona CentOS 7?
duct_tape_coder

Risposte:


11

Non è la tua casella locale che sta memorizzando nella cache le richieste DNS ma è il risolutore DNS che stai utilizzando nella tua /etc/resolv.confcache.

Per impedire la risposta a quelle query memorizzate nella cache:

  1. Cambia il resolver.

    $ dig @<resolve-ip> www.google.com

  2. Svuota la cache DNS sul resolver, se puoi accedere al server DNS.

    $ sudo /etc/init.d/bind restart


Hmm, ma ho impostato il dns_nameservers 127.0.0.1file di configurazione proxy e l'ascoltatore inoltra le query solo al server dei nomi preconfigurato, non dovrebbe essere il caso che resolv.conf non sia nemmeno consultato?
Zee

4
"bash: /etc/init.d/bind: nessun file o directory del genere" E il metodo dell'OP ottiene "Impossibile riavviare nscd.service: impossibile caricare l'unità nscd.service: nessun file o directory." Immagino che questi siano stati spostati / modificati. Perché non possono semplicemente lasciare cose che funzionano sul posto o almeno mantenere gli alias? Abbastanza male da diventare uno specialista del sistema operativo per usare semplicemente una Linux-box. Peggio ancora quando devi imparare di nuovo il sistema operativo ad ogni versione.
JosephK,

3

Anche dopo l'aggiornamento o lo svuotamento della cache DNS sul computer client se non funziona, allora il tuo server o computer client è associato a qualsiasi server NIS se sì, quindi modifica i "host: file nis dns" in "host: file dns nis" voce nel file /etc/nsswitch.conf e inoltre è necessario modificare l'indirizzo IP nell'elenco degli host del server master NIS.


Questo ha portato alla mia soluzione. All'interno di / etc / hosts c'era il vecchio indirizzo IP precedentemente configurato staticamente. Qualcosa che avevo fatto tempo fa. L'eliminazione di quella linea (o la sostituzione con il nuovo ip) ha risolto il problema e mi ha permesso di eseguire il ping della mia macchina usando il suo nome host.
Paul

3

Sono quasi certo che non è il sistema che memorizza nella cache la risposta - quella parte (memorizzazione nella cache del sistema) è gestita solo dal nscddemone. Il riavvio (o l'arresto completo) del daemon reimposta o elimina la memorizzazione nella cache del sistema operativo delle risposte alle richieste del servizio dei nomi.

Offrirò due possibilità, anche se l'ascoltatore personalizzato che hai impostato sulla porta 53 confonde considerevolmente le acque:

  • A) Il sistema sta eseguendo query a monte, ma il risolutore di nomi a monte immediato memorizza nella cache la risposta in base alle sue impostazioni o al TTL del record.
  • B) Il tuo listener personalizzato sta memorizzando nella cache le risposte internamente e le sta semplicemente restituendo al sistema quando viene richiesto di nuovo prima che il tempo di cache sia scaduto.

Grazie per l'input, ma l'ascoltatore non fa altro che inoltrare la query e la risposta, dopo tutto è come solo 200 righe di codice. Quindi non dovrebbe essere il secondo caso; anche l'ascoltatore sta stampando tutto ciò che riceve, quindi sono sicuro che in effetti non sta ottenendo nulla: |
Zee
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.