Come posso vedere Time-To-Live (TTL) per un record DNS?


117

Vorrei vedere il valore Time-To-Live (TTL) per un record CNAME.

Ho accesso a scavare (su Apple Mac OS X), che mi dà una risposta come questa:

% 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

Il valore "43200" è il TTL per questo record DNS?

Risposte:


142

Sì, il numero è il numero di secondi rimanenti fino alla scadenza del record (a condizione che non stiamo interrogando il nameserver autorevole). Ovviamente con un CNAME c'è un livello di reindirizzamento, quindi anche il TTL per il record A che indica in questo caso potrebbe essere importante.

Se aspetti un paio di secondi ed esegui di nuovo lo scavo sul tuo nameserver locale, dovresti vedere che il numero TTL diminuisce del numero di secondi che hai atteso (circa). Quando raggiunge 0, si aggiorna o se il tuo nameserver aggiorna la zona per qualche motivo.

Come accennato in precedenza, esiste una differenza tra lo scavo in esecuzione su un nameserver con una voce memorizzata nella cache e il nameserver che è autorevole per quella voce.

(negli esempi che utilizzo di seguito utilizzo i flag +noauthority +noquestion& +nostatssolo per mantenere l'output ridotto).

Nota la differenza tra le seguenti query:

$ 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

Quindi nella query sopra, stiamo interrogando un nameserver che è autorevole per stackoverflow.com. Se noti la flagssezione, presta particolare attenzione alla bandiera aa che indica che questa è una risposta autorevole (cioè non memorizzata nella 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

Nella query sopra, non abbiamo un flag aa e il TTL continuerà a diminuire mentre eseguiamo query e query. Questo è essenzialmente il contatore di cui stavo parlando in precedenza.


49

Se ti capita di rimanere bloccato su una finestra di Windows e hai accesso solo a nslookup:

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

15

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

Sì, come indicato dal server che ha risposto alla query (se si richiede a un server di memorizzazione nella cache, il tempo rimanente verrà restituito nella sua cache).

Per visualizzare il TTL impostato sulla query del record effettivo il nameserver autorevole ( dig @some.dns.server host.example.gov- I server DNS autorevoli verranno elencati nella sezione Autorità dell'output di scavo)

Verifica rapida se stai chiedendo all'autorevole NS: se esegui di dignuovo e il TTL cambia probabilmente stai colpendo una cache. Se rimane lo stesso probabilmente stai chiedendo al server autorevole (o uno che ha rotto la memorizzazione nella cache).


1
se ttl non cambia, potrebbe essere solo uno che si ritiene autorevole: il proprietario del dominio potrebbe aver cambiato il server DNS senza spegnere il vecchio .... ha avuto quel problema il mese scorso.
Jasen,

2
@Jasen Sì, è sicuramente possibile (indica anche qualcosa di importante: l'amministratore DNS acquisterà bevande alla prossima uscita aziendale per aver
rovinato

7

Non ho potuto vedere i server autorevoli nell'output di scavo predefinito, ma quanto segue

dig +nssearch host.example.com

li ha restituiti, che potrebbero quindi essere utilizzati come descritto da voretaq7 per ottenere il valore TTL effettivo per il record.

Aggiornamento: continuando a dimenticare come fare questo e dover tornare, quindi ho scritto un piccolo script per recuperare prima l'autorevole nameserver quindi scavare usando

#!/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 $@
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.