Combien de temps dnsmasq cache-t-il le DNS?

9

J'ai recherché la page de manuel et n'ai pas pu trouver combien de temps dnsmasq cache un DNS. quelle est la règle de mise en cache et d'expiration?

J'ai un problème qui demande l'envoi à un service externe prend parfois plus de 5 ou 10 secondes pour namelookup. Je pourrais enregistrer l'ip du service externe dans / etc / hosts mais j'ai peur du changement d'ip. L'installation de Dnsmasq améliore la recherche de noms mais la recherche de noms lente se produit toujours avec moins de fréquence.

Une solution consiste à configurer un simple ping dans le travail cron, mais je dois d'abord connaître le délai d'expiration.

Merci.

MISE À JOUR

sortie de fouille ajoutée

; <<>> 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

MISE À JOUR 2

la sortie de fouille précédente contient TTL comme 0, ce qui est trompeur. J'ai posté une autre sortie de fouille.

; <<>> 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
perlwle
la source

Réponses:

9

DNSmasq utilise la valeur DNS TTL pour déterminer la période de mise en cache. Vous pouvez utiliser la digcommande pour interroger le TTL actuel de votre serveur DNS pour ce domaine.

Tero Kilkanen
la source
Voulez-vous dire que dnsmasq ne cache que les dns pendant la période TTL? J'ai mis à jour ma question avec la sortie de fouille.
perlwle
1
Oui, seule la période TTL est utilisée pour la mise en cache. Et votre TTL est 0, donc DNSmasq fera toujours la requête au serveur DNS autorisé.
Tero Kilkanen
Cependant, comme indiqué dans le manuel, vous pouvez utiliser --max-cache-ttl pour forcer un TTL inférieur pour les valeurs mises en cache (je ne l'ai pas testé moi-même).
sam_pan_mariusz
@TeroKilkanen Query time: 0msecsignifie un accès au cache à dnsmasq. mais combien de temps dnsmasq conservera-t-il l'enregistrement DNS dans le cache?
perlwle
@sam_pan_mariusz Je pense que vous vouliez dire le --max_ttldrapeau? Je préfère toujours obtenir la bonne adresse IP que de manquer le changement d'adresse IP du service externe.
perlwle
4

L'option que vous devrez définir pour dnsmasq est --min-cache-ttl, la valeur est en secondes.

Selon la sortie de fouille, le TTL est 0, si vous le définissez, disons --min-cache-ttl=600, la valeur TTL qui sera renvoyée par dig sera de 600. Le TTL pour api.mch.weixin.qq.comd'où je suis est de 600, donc définissez-le sur 600 secondes vous-même devrait être raisonnablement sûr en évitant de manquer toute modification IP. (Je suppose que vous vous trouvez en Chine.)

Ainsi, tous les enregistrements DNS seront considérés comme valides pendant 10 minutes.

Voir le message de la liste de diffusion dnsmasq détaillant l'introduction de cette fonctionnalité.

Phizes
la source
Je vais cingler toutes les 10 minutes environ et j'espère que cela corrigera le retard de recherche DNS. Comme mentionné dans le commentaire précédent, j'utilise une ancienne version qui n'a pas ce paramètre. Corrigez-moi si je me trompe .. Cependant, s'il est disponible, le paramétrer sur 600 sera le même que le service externe TTL. Cela ne fera aucune différence, n'est-ce pas?
perlwle
1
@perlwle Non, ce ne serait pas le cas, j'avais supposé que vous receviez toujours un TTL de zéro, l'augmenter à 1200 aiderait. Je suggérerais de regarder dans DNSCrypt . Sans plus d'informations sur la durée des recherches, la vitesse de votre connexion et les effets des tiers, je ne peux pas donner de réponse plus claire. Si vous avez besoin d'un cache / résolveur DNS plus puissant, je recommanderais la partie de base de ce tutoriel sur Unbound, il fonctionne parfaitement sur Ubuntu 12.04 à partir des référentiels standard. (Notez que Google DNS gère désormais DNSSEC correctement.)
Phizes
1
Notez également dnsmasq 'local-ttl' pour ces entrées de fichier hôte
KCD