¿Cómo puedo ver Time-To-Live (TTL) para un registro DNS?

117

Me gustaría ver el valor de Time-To-Live (TTL) para un registro CNAME.

Tengo acceso a dig (en Apple Mac OS X), lo que me da una respuesta como esta:

% 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

¿Es el valor '43200' el TTL para este registro DNS?

Stefan Lasiewski
fuente

Respuestas:

142

Sí, el número allí es el número de segundos restantes hasta que caduque ese registro (siempre que no estemos consultando el servidor de nombres autorizado). Obviamente, con un CNAME hay un nivel de redireccionamiento, por lo que el TTL para el registro A al que apunta en este caso también puede ser importante.

Si espera un par de segundos y ejecuta dig nuevamente en su servidor de nombres local, debería ver que el número TTL disminuye en la cantidad de segundos que esperó (aproximadamente). Cuando llegue a 0, se actualizará o si su servidor de nombres actualiza la zona por alguna razón.

Como se mencionó anteriormente, existe una diferencia entre la excavación que se ejecuta contra un servidor de nombres con una entrada en caché y el servidor de nombres que tiene autoridad para esa entrada.

(en los ejemplos que uso a continuación, uso las banderas +noauthority +noquestion& +nostatssolo para mantener la salida concisa).

Tenga en cuenta la diferencia entre las siguientes consultas:

$ 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

Entonces, en la consulta anterior, estamos consultando un servidor de nombres que tenga autoridad para stackoverflow.com. Si observa la flagssección, preste especial atención a la bandera aa que denota que esta es una respuesta autorizada (es decir, no almacenada en caché).

$ 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

En la consulta anterior, no tenemos un indicador aa , y el TTL seguirá disminuyendo a medida que consultamos y consultamos. Este es esencialmente el contador del que estaba hablando anteriormente.

Philip Reynolds
fuente
49

Si está atascado en un cuadro de Windows y solo tiene acceso a nslookup:

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

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

Sí, como le informó el servidor que respondió a su consulta (si está solicitando un servidor de almacenamiento en caché, devolverá el tiempo restante en su caché).

Para ver el TTL establecido en la consulta de registro real, el servidor de nombres autorizado ( dig @some.dns.server host.example.gov- Los servidores DNS autorizados se enumerarán en la sección Autoridad de la salida de excavación)

Comprobación rápida para ver si le está preguntando al NS autorizado: si digvuelve a ejecutar y el TTL cambia, probablemente esté llegando a un caché. Si permanece igual, probablemente esté preguntando al servidor autorizado (o uno que haya roto el almacenamiento en caché).

voretaq7
fuente
1
Si ttl no cambia, podría ser uno que se considere autoritario: el propietario del dominio puede haber cambiado el servidor DNS sin apagar el antiguo ... tuvo ese problema el mes pasado.
Jasen
2
@Jasen Sí, eso es definitivamente posible (también indica algo importante: ¡el administrador de DNS comprará bebidas en la próxima salida de la compañía por arruinar la migración!)
voretaq7
7

No pude ver los servidores autorizados en la salida de excavación predeterminada, pero lo siguiente

dig +nssearch host.example.com

los devolvió, que luego podrían usarse como se describe en voretaq7 para obtener el valor TTL real para el registro.

Actualización: seguí olvidando cómo hacer esto y tuve que volver, así que escribí un pequeño script para buscar primero el servidor de nombres autorizado y luego excavar usándolo

#!/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 $@
Adán
fuente