130 votes

Comment puis-je voir le Time-To-Live (TTL) d'un enregistrement DNS ?

Je voudrais voir la valeur du Time-To-Live (TTL) pour un enregistrement CNAME.

J'ai accès à creuser (sur Apple Mac OS X), qui me donne une réponse comme celle-ci :

% dig host.example.gov
<*SNIP*>
;; ANSWER SECTION:
host.example.gov.       43200   IN  CNAME   host1.example.gov.
host1.example.gov.      43200   IN  A       192.168.16.10

La valeur '43200' est-elle le TTL de cet enregistrement DNS ?

155voto

David Pokluda Points 4284

Oui, le chiffre indiqué correspond au nombre de secondes restant avant l'expiration de cet enregistrement (à condition que nous n'interrogions pas le serveur de noms faisant autorité). Évidemment, avec un CNAME, il y a un niveau de redirection, donc le TTL de l'enregistrement A vers lequel il pointe dans ce cas peut également être important.

Si vous attendez quelques secondes et exécutez à nouveau dig sur votre serveur de noms local, vous devriez voir le nombre de TTL diminuer du nombre de secondes que vous avez attendu (approximativement). Lorsqu'il atteint 0, il sera rafraîchi ou si votre serveur de noms rafraîchit la zone pour une raison quelconque.

Comme nous l'avons mentionné plus haut, il y a une différence entre une recherche effectuée sur un serveur de noms avec une entrée en cache et le serveur de noms qui fait autorité pour cette entrée.

(dans les exemples ci-dessous, j'utilise l'option +noauthority +noquestion & +nostats juste pour que la sortie soit laconique).

Notez la différence entre les requêtes suivantes :

$ dig +noauthority +noquestion +nostats stackoverflow.com @ns2.p19.dynect.net.

; <<>> DiG 9.7.0-P1 <<>> +noauthority +noquestion +nostats stackoverflow.com @ns2.p19.dynect.net.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50066
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; ANSWER SECTION:
stackoverflow.com.  432000  IN  A   69.59.196.211

Ainsi, dans la requête ci-dessus, nous interrogeons un serveur de noms qui fait autorité pour stackoverflow.com. Si vous remarquez le flags de la section, prêtez une attention particulière à la aa qui indique qu'il s'agit d'une réponse autorisée (c'est-à-dire non mis en cache).

$ dig +noauthority +noquestion +noadditional +nostats stackoverflow.com 

; <<>> DiG 9.7.0-P1 <<>> +noauthority +noquestion +noadditional +nostats stackoverflow.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43514
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4

;; ANSWER SECTION:
stackoverflow.com.  246696  IN  A   69.59.196.211

Dans la requête ci-dessus, nous n'avons pas de aa et le TTL continuera à diminuer au fur et à mesure des requêtes. C'est essentiellement le compteur dont je parlais précédemment.

0 votes

Dans le second exemple, le TTL de 246696 signifie que le serveur de noms (qui a renvoyé l'adresse 69.59.196.211) a récupéré la réponse dans son cache et qu'il continuera à le faire pendant 246696 secondes, n'est-ce pas ? Après quoi, il se tournera vers le serveur de noms faisant autorité ou vers un autre serveur de noms ne faisant pas autorité et mettra en cache les résultats obtenus à partir de là, n'est-ce pas ? Merci pour cette clarification. J'ai du mal avec celle-ci.

63voto

HexInteractive Points 239

Si vous êtes coincé sur un poste Windows et que vous n'avez accès qu'à nslookup :

nslookup -qa=A -debug host.example.com authoritiative-dns-host-here.com

17voto

voretaq7 Points 78924

Is the value '43200' the TTL for this DNS record?

Oui, tel qu'il vous est indiqué par le serveur qui a répondu à votre requête (si vous demandez à un serveur cache, il vous renverra le temps restant dans son cache).

Pour connaître le TTL fixé sur l'enregistrement actuel, interrogez le serveur de noms faisant autorité ( dig @some.dns.server host.example.gov - Les serveurs DNS faisant autorité seront répertoriés dans la section Authority de la sortie dig).

Vérification rapide pour voir si vous demandez le NS qui fait autorité : Si vous exécutez le programme dig et que le TTL change, c'est probablement un cache qui est touché. S'il reste le même, vous demandez probablement au serveur qui fait autorité (ou à celui qui n'a pas de cache).

1 votes

Si le ttl ne change pas, il se peut qu'il s'agisse d'un serveur qui croit faire autorité : le propriétaire du domaine peut avoir changé de serveur DNS sans fermer l'ancien.... a eu ce problème le mois dernier.

2 votes

@Jasen Oui, c'est tout à fait possible (Cela indique également quelque chose d'important : L'administrateur DNS paiera des boissons lors de la prochaine sortie de l'entreprise pour avoir fait foirer la migration).

10voto

Adam Points 246

Je n'ai pas pu voir les serveurs faisant autorité dans la sortie de dig par défaut, mais ce qui suit

dig +nssearch host.example.com

les renvoie, qui peuvent ensuite être utilisées comme décrit par voretaq7 pour obtenir la valeur TTL réelle de l'enregistrement.

Mise à jour : j'oubliais toujours comment faire et je devais y revenir, donc j'ai écrit un petit script pour d'abord récupérer le serveur de noms faisant autorité et ensuite l'utiliser.

#!/bin/bash

show_help(){
        echo Usage $0 domain
}

if [ -z "$1" ]; then
        show_help
        exit 1
fi

DOMAIN=$1
APEX_DOMAIN=`echo $DOMAIN | sed 's/\(.*\.\)\([^.]*\.[^.]*\)/\2/'`
FIRST_AUTHORITATIVE_NS=$(dig +nssearch $APEX_DOMAIN | awk '$1=="SOA"{sub(".$","",$2);print $2;exit;}')

echo
echo Using authoritative nameserver $FIRST_AUTHORITATIVE_NS

dig @$FIRST_AUTHORITATIVE_NS $@

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X