web-dev-qa-db-fra.com

Comment puis-je voir la durée de vie (TTL) pour un enregistrement DNS?

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

J'ai accès à Dig (on Apple Mac OS X), ce 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 TTL pour cet enregistrement DNS?

119
Stefan Lasiewski

Oui, le nombre qui reste est le nombre de secondes restantes jusqu'à ce que cet enregistrement expire (à 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 pour l'enregistrement A vers lequel il pointe dans ce cas peut également être important.

Si vous attendez quelques secondes et réexécutez Dig sur votre serveur de noms local, vous devriez voir que TTL diminue du nombre de secondes que vous avez attendu (approximativement). Lorsqu'il atteint 0, il ' ll rafraîchir ou si votre serveur de noms rafraîchit la zone pour une raison quelconque.

Comme mentionné ci-dessus, il existe une différence entre Dig exécuté sur un serveur de noms avec une entrée en cache et le serveur de noms faisant autorité pour cette entrée.

(dans les exemples que j'utilise ci-dessous, j'utilise le +noauthority+noquestion & +nostats drapeaux juste pour garder la sortie concise).

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

Donc, dans la requête ci-dessus, nous interrogeons un serveur de noms faisant autorité pour stackoverflow.com. Si vous remarquez la section flags, faites particulièrement attention à l'indicateur aa qui indique qu'il s'agit d'un réponse faisant autorité (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 d'indicateur aa, et le TTL continuera de diminuer au fur et à mesure que nous interrogerons et interrogerons. C'est essentiellement le compteur dont je parlais à propos précédemment.

143
Philip Reynolds

Si vous êtes coincé sur une boîte Windows et que vous n'avez accès qu'à nslookup:

nslookup -qa=A -debug Host.example.com authoritiative-dns-Host-here.com
51
M Sleman

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

Oui - comme indiqué par le serveur qui a répondu à votre requête (si vous demandez un serveur de mise en cache, il retournera le temps restant dans son cache).

Pour voir le TTL défini sur l'enregistrement réel, 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 Autorité de la sortie Dig)

Vérification rapide pour voir si vous demandez au NS faisant autorité: si vous exécutez à nouveau Dig et les modifications TTL, vous atteignez probablement un cache. S'il reste le même, vous demandons probablement au serveur faisant autorité (ou à celui qui a cassé la mise en cache).

15
voretaq7

Je ne pouvais pas voir les serveurs faisant autorité dans la sortie Dig par défaut, mais ce qui suit

Dig +nssearch Host.example.com

les a retournés, qui pourraient ensuite être utilisés comme décrit par voretaq7 pour obtenir la valeur réelle TTL pour l'enregistrement.

Mise à jour: n'arrêtait pas d'oublier comment faire et de devoir revenir, alors j'ai écrit un petit script pour d'abord chercher le serveur de noms faisant autorité, puis creuser en l'utilisant

#!/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 $@
7
Adam