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

107

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

Eu tenho acesso a dig ( na Apple Mac OS X), 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 deste registro DNS?

    
por Stefan Lasiewski 09.09.2010 / 20:21

4 respostas

130

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

Se você esperar alguns segundos e executar a escavação novamente em seu servidor de nomes local, deverá ver que o número de TTL diminui de acordo com o número de segundos que você esperou (aproximadamente). Quando ele atingir 0, ele será atualizado ou se o seu servidor de nomes atualizar a zona por algum motivo.

Como mencionado acima, há uma diferença entre a escavação sendo executada em um servidor de nomes com uma entrada em cache e o servidor de nomes que é autoritativo para essa entrada.

(nos exemplos que uso abaixo, eu uso os sinalizadores +noauthority +noquestion & +nostats apenas para manter a saída sucinta).

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 que é autoritativo para stackoverflow.com. Se você observar a seção flags , preste atenção especial à sinalização aa , que indica que essa é uma resposta autoritativa (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 conforme consultamos e consultamos. Este é essencialmente o contador que eu estava falando anteriormente.

    
por 09.09.2010 / 20:28
43

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

nslookup -qa=A -debug host.example.com authoritiative-dns-host-here.com
    
por 23.01.2013 / 23:41
14

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

Sim - conforme relatado pelo servidor que respondeu à sua consulta (se você estiver solicitando um servidor de armazenamento em cache, ele retornará o tempo restante em seu 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 de escavação)

Verifique rapidamente se você está perguntando ao NS autoritativo: se você executar dig novamente e as alterações de TTL, provavelmente estará atingindo um cache. Se continuar igual, provavelmente você está perguntando ao servidor autoritativo (ou ao servidor que quebrou o cache).

    
por 09.09.2010 / 20:32
6

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

dig +nssearch host.example.com

retornou-os, o que poderia então ser usado como descrito por voretaq7 para obter o valor real do TTL para o registro.

Atualização: ficava esquecendo como fazer isso e precisando voltar, então escrevi um pequeno script para primeiro buscar o servidor de nomes autoritativo e depois usá-lo

#!/bin/bash

show_help(){
        echo Usage $0 domain
}

if [ -z "$1" ]; then
        show_help
        exit 1
fi

DOMAIN=$1

FIRST_AUTHORITATIVE_NS=$(dig +nssearch $DOMAIN | sed -n 's/^SOA \([^ ]*\)\.[ ].*//p' | head -1)

echo
echo Using authoritative nameserver $FIRST_AUTHORITATIVE_NS

dig @$FIRST_AUTHORITATIVE_NS $@
    
por 19.10.2012 / 16:04