Como posso ver o tempo de vida (TTL) de um registro DNS?

117

Gostaria de ver o valor do tempo de vida (TTL) de um registro CNAME.

Eu tenho acesso ao dig (no Apple Mac OS X), o que me dá uma resposta 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

O valor '43200' é o TTL para este registro DNS?

Stefan Lasiewski
fonte

Respostas:

142

Sim, o número restante é o número de segundos restantes até o registro expirar (desde que não esteja consultando o servidor de nomes autoritativo). Obviamente, com um CNAME, há um nível de redirecionamento; portanto, o TTL para o registro A que ele aponta neste caso também pode ser importante.

Se você esperar alguns segundos e executar dig novamente no servidor de nomes local, verá que o número TTL diminui pelo número de segundos que você esperou (aproximadamente). Quando atingir 0, ele será atualizado ou se o servidor de nomes atualizar a zona por algum motivo.

Como mencionado acima, há uma diferença entre dig sendo executado em um servidor de nomes com uma entrada em cache e o servidor de nomes que é autoritário para essa entrada.

(nos exemplos que uso abaixo, uso os sinalizadores +noauthority +noquestion& +nostatsapenas para manter a saída concisa).

Observe a diferença entre as seguintes 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

Portanto, na consulta acima, estamos consultando um servidor de nomes com autoridade para stackoverflow.com. Se você observar a flagsseção, preste atenção especial ao sinalizador aa, que indica que esta é uma resposta autorizada (ou seja, não armazenada em 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

Na consulta acima, não temos um sinalizador aa , e o TTL continuará diminuindo à medida que consultamos e consultamos. Este é essencialmente o contador que eu estava falando anteriormente.

Philip Reynolds
fonte
49

Se você estiver preso em uma caixa do Windows e tiver acesso apenas ao nslookup:

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

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

Sim - conforme informado pelo servidor que respondeu à sua consulta (se você estiver solicitando um servidor de cache, ele retornará o tempo restante no cache).

Para ver o TTL definido na consulta de registro real, o servidor de nomes autoritativo ( dig @some.dns.server host.example.gov- os servidores DNS autoritativos serão listados na seção Autoridade da saída dig)

Verificação rápida para ver se você está perguntando ao NS autoritativo: Se você executar dignovamente e o TTL mudar, provavelmente está atingindo um cache. Se permanecer o mesmo, você provavelmente está solicitando ao servidor autoritário (ou um que tenha quebrado o cache).

voretaq7
fonte
1
se ttl não mudar, pode ser apenas um que acredita ser autoritário: o proprietário do domínio pode ter mudado o servidor DNS sem desligar o antigo ... teve esse problema no mês passado.
Jasen
2
@Jasen Sim, isso é definitivamente possível (Ele indica algo importante assim: O administrador de DNS será comprar bebidas no próximo passeio empresa para estragar a migração!)
voretaq7
7

Não consegui ver os servidores autoritativos na saída de digitação padrão, mas o seguinte

dig +nssearch host.example.com

retornou-os, que poderiam ser usados ​​conforme descrito por voretaq7 para obter o valor TTL real do registro.

Atualização: continuava esquecendo como fazer isso e tendo que voltar, então escrevi um pequeno script para buscar primeiro o servidor de nomes autoritário e depois cavá-lo

#!/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ão
fonte