Je me demande s'il existe un moyen d'interroger un serveur DNS et de contourner la mise en cache (avec dig
). Souvent, je change de zone sur le serveur DNS et je veux vérifier si la résolution est correcte à partir de mon poste de travail. Mais puisque le serveur met en cache les requêtes résolues, je récupère souvent les anciennes. Redémarrer ou charger le serveur n'est pas vraiment une bonne chose.
linux
domain-name-system
dig
Daniel
la source
la source
+norecurse
est recommandé.+recurse
est activé par défaut changera parfois la façon dont un serveur DNS interprète entièrement votre question.+trace
mais méfiez-vous de la mise en cache. Andrew B a expliqué comment la mise en cache peut vous tromper en attendant que les serveurs de noms changent.dig @8.8.8.8 example.com
. les enregistrements y apparaissent beaucoup plus rapidement.Le protocole DNS ne prévoit aucun mécanisme pour forcer un serveur de noms à répondre sans utiliser son cache. Dig lui-même n'est pas un serveur de noms, c'est simplement un outil qui transmet votre requête aux serveurs de noms que vous avez configurés, à l'aide de requêtes DNS standard. DNS ne comprend une façon de dire un serveur de ne pas utiliser la récursivité, mais ce n'est pas ce que vous voulez. Ce n'est utile que lorsque vous souhaitez interroger directement un serveur de noms faisant autorité.
Si vous souhaitez empêcher un serveur de noms de répondre à partir de son cache, vous ne pourrez le faire qu'en modifiant la configuration sur le serveur de noms , mais si vous ne contrôlez pas le serveur de noms, cela est impossible.
Vous pouvez toutefois obtenir dig pour contourner les serveurs de noms configurés et exécuter sa propre requête récursive qui renvoie aux serveurs racine. Pour ce faire, utilisez l'
+trace
option.En pratique, dans la mesure où cela interrogera uniquement les serveurs faisant autorité plutôt que votre résolveur de mise en cache local, le résultat ne sera pas périmé, même si ces serveurs utilisent la mise en cache interne. L'avantage supplémentaire de l'utilisation
+trace
est que vous obtenez de voir toutes les demandes séparées effectuées le long du chemin.la source
+norecurse
indique simplement au serveur de noms de renvoyer toutes les informations dont il dispose (y compris les informations mises en cache, le cas échéant), ce qui n’est pas correct.+trace
fonctionnera car il suivra la chaîne de récursion jusqu’à un serveur faisant autorité.+norecurse
recommandation car elle confondait le problème.Un point important à noter ici, et que je remarque que beaucoup de gens n’incluent jamais,
+trace
c’est que l’utilisation de+trace
moyens signifie que le client Dig effectuera la trace, pas le serveur DNS spécifié dans votre configuration (/etc/resolv.conf). En d’autres termes, votre client Dig fonctionnera comme un serveur DNS récursif, si vous le lui demandez. Mais surtout, vous n'avez pas de cache.Plus de détails - donc si vous avez déjà demandé un
mx
enregistrement en utilisantdig -t mx example.com
et que votre fichier /etc/resolv.conf est 8.8.8.8, toute action dans la durée de vie de la zone renverra le résultat mis en cache. En un sens, si vous recherchez quelque chose à propos de votre propre zone et de la façon dont Google la voit, vous avez en quelque sorte empoisonné vos résultats DNS avec Google pour la durée de vie de votre zone. Pas mal si vous avez un TTL court, un peu nul si vous avez une heure.Ainsi, même si
+trace
cela vous aidera à voir ce qui SERAIT vu si vous demandiez à Google pour la PREMIÈRE fois et qu'il n'avait pas d'entrée en mémoire cache, cela peut vous donner une idée fausse que Google dira à tout le monde la même chose que votre+trace
résultat, lequel ce ne sera pas le cas si vous aviez déjà demandé et si vous avez une longue durée de vie, car cela servira cela depuis le cache jusqu'à l'expiration de la durée de vie - ALORS cela servira la même chose que ce que vous avez+trace
révélé.Vous ne pouvez pas avoir trop de détails IMO.
la source
dig mydomain.com +trace
me retourne simplement leresolvd
stub qui en résulte127.0.0.53
. Voir github.com/systemd/systemd/issues/5897+trace
dig commence la trace en utilisant le serveur de noms spécifié (par exemple, 8.8.8.8 si c'est ce que vous avez configuré) pour la première recherche (la zone racine), mais utilise ensuite les serveurs de noms renvoyés pour d'autres requêtes. Ainsi, si votre serveur de noms configuré ne fonctionne pas ou ne répond pas correctement à une requête pour les serveurs de noms racine, vous pouvez avoir des problèmes (comme dans le commentaire ci-dessus).Cette bash va extraire les entrées DNS d’exemple.com à partir de son premier serveur de noms:
Voici la même chose qu'un alias pour un .zshrc (et probablement .bashrc):
Voici la sortie pour / .:
Cette solution est suffisamment compliquée pour ne pas être pratique à retenir, mais assez simple pour que le problème ne soit pas résolu.
dig
n'est pas ma spécialité - améliorations bienvenues :-)la source