Wie kann ich Time-To-Live (TTL) für einen DNS-Eintrag anzeigen?

117

Ich möchte den TTL-Wert (Time-To-Live) für einen CNAME-Datensatz sehen.

Ich habe Zugriff auf dig (unter Apple Mac OS X), was mir eine Antwort wie diese gibt:

% 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

Ist der Wert '43200' die TTL für diesen DNS-Eintrag?

Stefan Lasiewski
quelle

Antworten:

142

Ja, die Zahl dort gibt die Anzahl der Sekunden an, die verbleiben, bis dieser Datensatz abläuft (vorausgesetzt, wir fragen nicht den autorisierenden Nameserver ab). Offensichtlich gibt es bei einem CNAME eine Umleitungsstufe, sodass die TTL für den A-Datensatz, auf den er verweist, in diesem Fall ebenfalls wichtig sein kann.

Wenn Sie ein paar Sekunden warten und dig erneut auf Ihrem lokalen Nameserver ausführen, sollten Sie feststellen, dass die TTL-Nummer um die Anzahl der Sekunden abnimmt, die Sie (ungefähr) gewartet haben. Wenn es 0 erreicht, wird es aktualisiert oder wenn Ihr Nameserver die Zone aus irgendeinem Grund aktualisiert.

Wie oben erwähnt, gibt es einen Unterschied zwischen dig, das auf einem Nameserver mit einem zwischengespeicherten Eintrag ausgeführt wird, und dem Nameserver, der für diesen Eintrag autorisiert ist.

(In den folgenden Beispielen verwende ich die +noauthority +noquestion& +nostats-Flags nur, um die Ausgabe knapp zu halten).

Beachten Sie den Unterschied zwischen den folgenden Abfragen:

$ 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

In der obigen Abfrage wird also ein Nameserver abgefragt, der für stackoverflow.com maßgeblich ist. Wenn Sie den flagsAbschnitt bemerken , achten Sie besonders auf die Markierung aa, die angibt, dass es sich um eine autoritative Antwort handelt (dh nicht zwischengespeichert).

$ 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

In der obigen Abfrage haben wir kein aa- Flag, und die TTL wird beim Abfragen und Abfragen immer kleiner. Dies ist im Wesentlichen der Zähler, über den ich zuvor gesprochen habe.

Philip Reynolds
quelle
49

Wenn Sie zufällig auf einer Windows-Box hängen bleiben und nur Zugriff auf nslookup haben:

nslookup -qa=A -debug host.example.com authoritiative-dns-host-here.com
M Sleman
quelle
15

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

Ja - wie Ihnen vom Server gemeldet, der Ihre Anfrage beantwortet hat (wenn Sie einen Caching-Server fragen, wird die verbleibende Zeit in seinem Cache zurückgegeben).

Um die in der aktuellen Datensatzabfrage festgelegte TTL anzuzeigen, muss der autorisierende Nameserver angegeben werden. ( dig @some.dns.server host.example.gov- Die autorisierenden DNS-Server werden im Abschnitt Authority der Dig-Ausgabe aufgelistet.)

Überprüfen Sie schnell, ob Sie den autorisierenden NS fragen: Wenn Sie digerneut ausgeführt werden und sich die TTL ändert, stoßen Sie wahrscheinlich auf einen Cache. Wenn es gleich bleibt, fragen Sie wahrscheinlich den autorisierenden Server (oder einen, der das Caching unterbrochen hat).

voretaq7
quelle
1
Wenn ttl sich nicht ändert, kann es sich um einen handeln, der sich als maßgeblich erachtet: Der Domaininhaber hat möglicherweise den DNS-Server geändert, ohne den alten herunterzufahren. Hatte das Problem letzten Monat.
Jasen
2
@Jasen Ja, das ist definitiv möglich (Es weist auch auf etwas Wichtiges hin: Der DNS-Administrator kauft beim nächsten Betriebsausflug Getränke, um die Migration zu
vermasseln
7

Ich konnte die autorisierenden Server in der Standardausgabe von dig nicht sehen, aber die folgenden

dig +nssearch host.example.com

gaben sie zurück, die dann wie von voretaq7 beschrieben verwendet werden konnten, um den tatsächlichen TTL-Wert für den Datensatz zu erhalten.

Update: Habe immer wieder vergessen, wie das geht und musste zurück, also habe ich ein kleines Skript geschrieben, um zuerst den autorisierenden Nameserver zu holen und dann damit zu graben

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