Jak mogę zobaczyć czas wygaśnięcia (TTL) dla rekordu DNS?

117

Chciałbym zobaczyć wartość czasu wygaśnięcia (TTL) dla rekordu CNAME.

Mam dostęp do dig (na Apple Mac OS X), co daje mi następującą odpowiedź:

% 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

Czy wartość „43200” oznacza TTL dla tego rekordu DNS?

Stefan Lasiewski
źródło

Odpowiedzi:

142

Tak, pozostała liczba sekund do wygaśnięcia tego rekordu (pod warunkiem, że nie pytamy o autorytatywny serwer nazw). Oczywiście w przypadku CNAME istnieje pewien poziom przekierowania, więc TTL dla rekordu A, na który wskazuje w tym przypadku, może być również ważny.

Jeśli zaczekasz kilka sekund i ponownie uruchom kopanie na lokalnym serwerze nazw, powinieneś zobaczyć, że liczba TTL zmniejsza się o liczbę sekund, którą czekałeś (w przybliżeniu). Gdy osiągnie 0, odświeży się lub jeśli serwer nazw odświeży strefę z jakiegoś powodu.

Jak wspomniano powyżej, istnieje różnica między kopaniem uruchamianym na serwerze nazw z wpisem w pamięci podręcznej a serwerem nazw, który jest autorytatywny dla tego wpisu.

(w przykładach, których używam poniżej, używam flag +noauthority +noquestion& w +nostatscelu zachowania zwięzłości danych wyjściowych).

Zwróć uwagę na różnicę między następującymi zapytaniami:

$ 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

W powyższym zapytaniu pytamy o serwer nazw, który jest autorytatywny dla stackoverflow.com. Jeśli zauważysz flagssekcję, zwróć szczególną uwagę na flagę aa, która oznacza, że ​​jest to wiarygodna odpowiedź (tj. Nie buforowana).

$ 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

W powyższym zapytaniu nie mamy flagi aa , a wartość TTL będzie się zmniejszać, gdy będziemy wysyłać zapytania i zapytania. Zasadniczo o tym mówiłem wcześniej.

Philip Reynolds
źródło
49

Jeśli utkniesz w oknie systemu Windows i masz dostęp tylko do nslookup:

nslookup -qa=A -debug host.example.com authoritiative-dns-host-here.com
M. Sleman
źródło
15

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

Tak - zgodnie z raportem serwera, który odpowiedział na twoje zapytanie (jeśli poprosisz serwer buforujący, zwróci pozostały czas w swojej pamięci podręcznej).

Aby zobaczyć TTL ustawiony na kwerendie o rzeczywisty rekord, autorytatywny serwer nazw ( dig @some.dns.server host.example.gov- Autorytatywne serwery DNS zostaną wymienione w sekcji Autorytet wyników wyszukiwania)

Szybkie sprawdzenie, czy pytasz autorytatywny NS: Jeśli uruchomisz digponownie i zmiany TTL prawdopodobnie trafią w pamięć podręczną. Jeśli nie zmieni się, prawdopodobnie pytasz o autorytatywny serwer (lub taki, który zepsuł się buforowanie).

voretaq7
źródło
1
jeśli ttl się nie zmieni, może to być tylko taki, który uważa się za autorytatywny: właściciel domeny mógł zmienić serwer DNS bez wyłączania starego ... miał ten problem w zeszłym miesiącu.
Jasen
2
@Jasen Tak, to na pewno możliwe (wskazuje to również na coś ważnego: administrator DNS będzie kupował napoje podczas następnej wycieczki firmowej z powodu
spieprzenia
7

Nie widziałem autorytatywnych serwerów w domyślnym wyjściu dig, ale następujące

dig +nssearch host.example.com

zwrócił je, które można następnie wykorzystać zgodnie z opisem w voretaq7, aby uzyskać rzeczywistą wartość TTL dla rekordu.

Aktualizacja: ciągle zapominałem, jak to zrobić i musiał wracać, więc napisałem mały skrypt, aby najpierw pobrać autorytatywny serwer nazw, a następnie kopać za jego pomocą

#!/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
źródło