Quanto tempo dnsmasq memorizza nella cache dns?


9

Ho cercato la pagina man e non sono riuscito a trovare per quanto tempo dnsmasq memorizza nella cache un dns. qual è la regola per la memorizzazione nella cache e la scadenza?

Sto riscontrando un problema per cui la richiesta di invio a un servizio esterno a volte impiega più di 5 o 10 secondi per namelookup. Potrei salvare l'ip del servizio esterno su / etc / hosts ma temo di cambiare l'ip. L'installazione di Dnsmasq migliora la ricerca dei nomi, ma il namelookup lento si verifica ancora con meno frequenza.

Una soluzione consiste nell'impostare un semplice ping in cron job ma prima devo scoprire l'ora di scadenza.

Grazie.

AGGIORNARE

aggiunto output di scavo

; <<>> DiG 9.8.1-P1 <<>> api.mch.weixin.qq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45012
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;api.mch.weixin.qq.com.             IN      A

;; ANSWER SECTION:
api.mch.weixin.qq.com.      0       IN      A       140.207.69.102

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Jul 17 19:24:36 2015
;; MSG SIZE  rcvd: 55

AGGIORNAMENTO 2

l'output di scavo precedente contiene TTL come 0 che è fuorviante. Ho pubblicato un altro output di scavo.

; <<>> DiG 9.8.1-P1 <<>> api.mch.weixin.qq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60900
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;api.mch.weixin.qq.com.             IN      A

;; ANSWER SECTION:
api.mch.weixin.qq.com.      181     IN      CNAME   forward.qq.com.
forward.qq.com.             181     IN      A       101.226.90.149
forward.qq.com.             181     IN      A       101.226.129.200

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Jul 21 12:01:54 2015
;; MSG SIZE  rcvd: 99

Risposte:


9

DNSmasq utilizza il valore TTL DNS per determinare il periodo di memorizzazione nella cache. È possibile utilizzare il digcomando per eseguire una query sul TTL corrente del server DNS per quel dominio.


Vuoi dire che dnsmasq memorizza nella cache solo DNS nel periodo TTL? Ho aggiornato la mia domanda con l'output di scavo.
perlwle il

1
Sì, per la memorizzazione nella cache viene utilizzato solo il periodo TTL. E il tuo TTL è 0, quindi DNSmasq eseguirà sempre la query al server DNS autorevole.
Tero Kilkanen,

Tuttavia, come indicato nel manuale, è possibile utilizzare --max-cache-ttl per forzare un TTL inferiore per i valori memorizzati nella cache (non l'ho testato da solo).
sam_pan_mariusz,

@TeroKilkanen Query time: 0msecindica un hit della cache su dnsmasq. ma per quanto tempo dnsmasq manterrà il record dns nella cache?
perlwle il

@sam_pan_mariusz Penso che intendevi la --max_ttlbandiera? Preferirei sempre ottenere l'IP giusto piuttosto che perdere la modifica dell'IP del servizio esterno.
perlwle il

4

L'opzione che dovrai impostare per dnsmasq è --min-cache-ttl, il valore è in secondi.

Secondo l'output di scavo, il TTL è 0, se lo si imposta su, diciamo --min-cache-ttl=600, allora il valore TTL che verrà restituito dallo scavo sarà 600. Il TTL per api.mch.weixin.qq.comda dove sono io è 600, quindi impostarlo su 600 secondi dovrebbe essere ragionevolmente sicuro per evitare di perdere qualsiasi modifica dell'IP. (Immagino che ti trovi in ​​Cina.)

Ciò farà considerare validi tutti i record DNS per 10 minuti.

Vedi il messaggio della mailing list di dnsmasq che descrive in dettaglio l'introduzione di questa funzione.


Ho intenzione di eseguire il ping ogni 10 minuti circa e, si spera, questo risolverà il ritardo di ricerca DNS. Come menzionato nel commento precedente, sto usando una versione precedente che non ha questa impostazione. Correggimi se sbaglio .. Tuttavia, se è disponibile, impostandolo su 600 sarà lo stesso del servizio esterno TTL. Non farà alcuna differenza, vero?
perlwle

1
@perlwle No, non avrei pensato che avessi sempre ricevuto un TTL di zero, aumentandolo a 1200 sarebbe stato d'aiuto. Suggerirei di esaminare DNSCrypt . Senza ulteriori informazioni su quanto tempo impiegano le ricerche, la velocità della connessione e gli effetti di terze parti, non posso dare una risposta più chiara. Se hai bisogno di una cache DNS / resolver più potente, consiglierei la parte base di questo tutorial su Unbound, che funziona perfettamente su Ubuntu 12.04 dai repository standard. (Nota che Google DNS gestisce correttamente DNSSEC ora.)
Phizes

1
Nota anche dnsmasq 'local-ttl' per quelle voci del file host
KCD
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.