Newsgroup: it.comp.os.linux.sys
Titolo: Cache DNS

Qualcuno mi sa dire come fare ad identificare se bind sta risolvendo
un record usando la cache oppure se sta facendo l'interrogazione?
Forse dai tempi di risposta visibili su dig?
Ho fatto
dig -t A 
www.yahoo.com
 ed ha risposto in 24ms
Ho riprovato dopo 2 minuti ed ha risposto in 0ms.
Mi vien da pensare che la seconda volta sia stato cachato.
Esiste un metodo più preciso per identificare questa cosa?

 Esiste un metodo più preciso per identificare questa cosa?
Prova ad usare wireshark e vedere il traffico in uscita dalla macchina 
con bind

Alessandro ha scritto:
 > Esiste un metodo più preciso per identificare questa cosa?
Abilitando il log dettagliato?

 Abilitando il log dettagliato?
Be, ma mi dovrebbe far vedere solo la query, non se è in cache o meno.

 Be, ma mi dovrebbe far vedere solo la query, non se è in cache o meno.
Con un debug abbastanza alto... non l'ho mai fatto, però, era solo un'idea.

 Con un debug abbastanza alto... non l'ho mai fatto, però, era solo un'idea.
Uhm, quindi non il semplice query-log.
Su un altro server ho un debug abbastanza alto ma non mi pare venga
scritto niente di utile in questo caso.
arrivo al punto: devo disattivare la cache perchè ho come
l'impressione che mi vengano cachati anche gli NXDOMAIN anzichè solo
le risposte positive e non lo voglio.
Ho notato che mettendo
"max-cache-ttl 5;"
e facendo un
# watch -n 7 dig -t A 
www.google.it
i tempi di risposta della prima richiesta sono di qualche
millisecondo, poi 0 per la seconda (cache) e poi ancora di qualche
millisecondo.
Quindi effettivamente ogni 5 secondi la cache scade.
Se faccio la stessa cosa con un record che so restituire NXDOMAIN per
certo, la risposta è qualche millisecondo per la prima, poi sempre 0
(sempre in cache?!?!).
Se mentre il watch gira faccio
# rndc flush
i tempi di risposta ritornano a qualche millisecondo.
Questo fa pensare chiaramente ad una sorta di cache anche sui vari
NXDOMAIN, non soggetta però ai 5 secondi di TTL da me impostati.
Ora:
a) perchè l'eventuale cache delle risposte negative non è soggetta al
mio ttl?
b) perchè sembrerebbe che bind cacha le risposte negative? Mi pare non
si debba fare...
Tutto questo sembra prendere 'valore' da un mio problema su milter-
link: ricevo vagonate di spam contenente links già in blacklist. Ed
effettivamente se interrogo manualmente la blacklist dai vari MX
ottengo risposte NXDOMAIN, vado sul sito della blacklist e ottengo
risposte positive (uri in blacklist), flusho la cache del dns e
ottengo anche io risposte positive.

 un record usando la cache oppure se sta facendo l'interrogazione?
Ebbene, si fa così:
# rndc dump -cache
poi si va a leggere in
/var/cache/bind/named_dump.db
per vedere il contenuto della cache

 si debba fare...
Si, vengono cachati anche gli NXDOMAIN.
; authauthority
109.176.216.212.adult.rhs.mailpolice.com
. 125 \-ANY ;-$NXDOMAIN

 mio ttl?
Perchè bisogna usare
"max-ncache-ttl"


Sì. Guarda il TTL del record che ti ritorna.
Se riporta lo stesso TTL che ottieni interrogando direttamente il DNS 
autoritativo, non sta cachando.
Se ti riporta un TTL minore, ti sta comunicando per quanto tempo sarà 
ancora valida quell'informazione nella sua cache.
-- 
http://www.linkedin.com/in/skull

 ancora valida quell'informazione nella sua cache.
Astuto.
Non avevo mai pensato a questa cosa.
Dunque, facendo la prova sempre su yahoo, usando i miei dns il record
A (www.) ha
un TTL di 60 secondi in diminuzione (hey, io non ho impostato la cache
a 60 secondi!!)
Mentre interrogando 
ns1.yahoo.com
 il record CNAME associato al record
www ha come
ttl 21600
Seguendo il tuo ragionamento il mio dns cacha per 60 secondi.
Umh, mi sembra strano....

 Umh, mi sembra strano....
Invece è esattamente quello che accade nel caso in cui il record in 
questione sia associato ad un TTL di 60 sec.
Infatti...
Prima risoluzione, fatta al mio resolver:
zarathustra:~ skull$ dig a 
www.yahoo.com
[...]
;; ANSWER SECTION:
www.yahoo.com
.          6810    IN      CNAME   
www.yahoo-ht3.akadns.net
.
www.yahoo-ht3.akadns.net
. 60    IN      A       87.248.113.14
Seconda risoluzione:
zarathustra:~ skull$ dig a 
www.yahoo.com
[...]
;; ANSWER SECTION:
www.yahoo.com
.          6808    IN      CNAME   
www.yahoo-ht3.akadns.net
.
www.yahoo-ht3.akadns.net
. 58    IN      A       87.248.113.14
Come vedi, c'è una differenza di 2 secondi tra i due TTL.
Se interrogo direttamente un DNS autoritativo, invece, ottengo sempre i 
TTL "nudi", che non diminuiscono in funzione del tempo trascorso in 
cache, dato che non c'è nessuna cache...
zarathustra:~ skull$ dig a 
www.yahoo.com
 @
ns1.yahoo.com
[...]
;; ANSWER SECTION:
www.yahoo.com
.          21600   IN      CNAME   
www.yahoo-ht3.akadns.net
.
...e ti ritornerà lo stesso valore di TTL ad ogni interrogazione.
-- 
http://www.linkedin.com/in/skull

 questione sia associato ad un TTL di 60 sec.
Ok, ma quei 60 secondi cosa sono?
La cache del MIO dns?
Allora forse è di default pari a 60 secondi? perchè io non ho
specificato mai un valore simile.

 La cache del MIO dns?
La cache del tuo DNS č pari al TTL annunciato dal DNS autoritativo, non 
la decidi tu.
Al massimo ti č data la possibilitą di decidere il limite superiore 
della persistenza in cache.
Suggerirei di ripigliare i DNS dalla teoria...
Bye
-- 
http://www.linkedin.com/in/skull

 Suggerirei di ripigliare i DNS dalla teoria...
Comunque è strabiliante come il DNS che sembra un concetto "semplicissimo"
(ho un nome, voglio sapere a che numero è associato) sia in realtà un mondo
estremamente complicato da gestire bene e capire nella sua interezza.
-- 
Vide

 estremamente complicato da gestire bene e capire nella sua interezza.
E sottovalutato.
Ho visto cose che voi umani...
-- 
http://www.linkedin.com/in/skull