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?
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.
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
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).
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 $@