Existe alguma maneira de informar o TTL sobre os registros DNS do servidor de nomes raiz?

4

No momento, estou migrando uma zona DNS de um provedor de servidor DNS para outro. Eu estou tentando estimar quanto tempo levará para a mudança se propagar, e para entender o que o atraso pode ser se eu optar por reverter mid-stream.

Anteriormente, achei que poderia fazer:

dig example.com ns

Para ver o que o TTL restante no registro NS era, mas agora eu entendo que esse registro NS é o registro NS para subdomínios na zona, e não o registro NS que emana dos servidores raiz, que é o que em última análise, determina para qual servidor de nomes a consulta será enviada.

Eu testei isso configurando um registro de teste na zona em cada um dos provedores:

Provider1 test.example.com 10.0.0.1
Provider2 test.example.com 192.168.0.1

Para ambos os provedores, o TTL no NS registra em 0, enquanto os registros do NS no nível de registrador do TLD apontam para os servidores de nome do Provider1.

Quando eu mudo os registros NS na zona em Provider1, posso ver isso refletido nas consultas NS quase imediatamente (usando 'dig example.com ns').

No entanto, quando envio uma consulta para um registro A, ou seja,

test.example.com

sempre retorna

10.0.0.1

independentemente do que os registros NS na zona do Provedor 1 estão configurados.

Com base nisto, concluí que os registros do NS no arquivo de zona são irrelevantes para a migração e que somente os registros dos servidores de nomes no nível do TLD são importantes.

No entanto, não consigo ler sobre quanto tempo é provável que uma alteração se propague, seja para frente ou para trás.

É possível consultar com o que o TTL está trabalhando para registros que emanam dos servidores raiz do TLD?

    
por Garreth McDaid 07.09.2015 / 17:02

3 respostas

4

On this basis, I've concluded that the NS records within the zone file are irrelevant to the migration, and that only the name servers records at the TLD level are important.

Esta é uma hipótese incorreta, mas um erro fácil de ser cometido. Você pode ler um pouco mais sobre o tema dos registros NS do apex aqui . A versão curta é que ambos importam, e o que está sendo usado será diferente dependendo se um servidor DNS em cache já consultou seu domínio ou não.

Tenha em mente que a maioria dos servidores DNS recursivos impõe um TTL mínimo, portanto, quaisquer conclusões tiradas de experimentos com um TTL de zero são quase certamente imprecisas. O único caso em que isso não acontece é quando você controla a política TTL mínima usada pelo servidor que está sendo consultado.

I am currently migrating a DNS zone from one DNS server provider to another. I am trying to estimate how long it will take for the change to propagate, and to understand what the delay might be if I chose to rollback mid-stream.

Vou me concentrar neste tópico, já que você tem alguns falsos inícios no restante da sua pergunta. Primeiro, é importante lembrar que os TTLs são armazenados em cache em servidores DNS recursivos. Como todos na internet estão usando servidores DNS recursivos diferentes, a suposição somente que você pode fazer é que levará até n segundos, com n sendo o valor dos TTLs.

Isso nos leva a quais TTLs são relevantes aqui:

  • TTLs para registros individuais que estão em cache. Mesmo se os registros NS expirarem, as solicitações de registros individuais que estão no cache não expirarão automaticamente. Exemplo: Se test.example.com IN A expirar daqui a dez minutos, mas example.com IN NS expirar daqui a cinco minutos, test.example.com permanecerá no cache mesmo depois que os registros NS forem alterados. Qualquer problema relacionado ao valor desse registro nos novos servidores não ficará evidente até que o registro tenha expirado e tenha sido atualizado.
  • TTLs para os registros NS glue servidos pelos servidores DNS do TLD. Eles são usados por servidores recursivos que precisam obter informações sobre seu domínio quando são solicitados pela primeira vez. Esses TTLs influenciam quanto tempo demora até que os servidores DNS listados em seu arquivo de zona sejam usados para a próxima atualização. (consulte o Q & A I, acima, para esclarecimentos sobre isso)
  • TTLs para os registros NS listados na parte superior do seu arquivo de zona. Uma vez que os TTLs de registro de cola tenham expirado, esses TTLs podem ser usados no lugar. As implementações variam neste detalhe. Como você está lidando com todo o valor de implementações diferentes da Internet, a única suposição segura é que alguns servidores o estão usando.

Você não pode presumir que todos os TTLs de registros NS armazenados em cache na Internet são de uma fonte ou outra. Isso obriga você a planejar o mais alto dos dois, a menos que você realmente não esteja preocupado com servidores DNS recursivos que você não opera.

Colocando tudo isso junto, chegamos às seguintes conclusões:

  • O tempo máximo necessário para qualquer registro DNS específico ser atualizado em relação a um novo servidor de nomes é o TTL mais alto entre esse registro, os registros NS no adesivo e os registros NS na zona.
  • Supondo que os TTLs no novo servidor DNS são idênticos aos do servidor antigo, o tempo máximo necessário para a reversão é o valor mais alto dos três TTLs, mais uma vez . Todas as consultas que ocorreram no novo servidor entre o momento em que você inicialmente alterou os servidores DNS e reverteram a alteração dependerão dos valores obtidos do novo servidor.
  • É muito importante manter todos os servidores DNS envolvidos na alteração em execução e sincronizados até que todos os TTLs tenham expirado após a alteração final do registro NS . Não apenas você precisa de todos os servidores disponíveis para os clientes que não selecionaram as alterações mais recentes, mas qualquer inconsistência nos dados dos registros entre os dois pode servir para tornar as coisas ainda mais confusas.
por 07.09.2015 / 19:09
1

Você pode fazer isso facilmente com nslookup no Windows, estou assumindo que você poderia fazer o mesmo com o dig. Com o nslookup, você simplesmente consulta um dos servidores de nome da GTLD para os registros do servidor de nomes do seu domínio usando a depuração para obter uma lista de servidores de nome para o seu domínio com o TTL desses registros de servidor de nomes.

Microsoft Windows [Version 10.0.10240]
(c) 2015 Microsoft Corporation. All rights reserved.

C:\Users\Joe>nslookup
Default Server:  Unknown
Address:  192.168.1.2

> server f.gtld-servers.net
Default Server:  f.gtld-servers.net
Address:  192.35.51.30

> set q=ns
> set debug
> crabbygeezer.com
Server:  f.gtld-servers.net
Address:  192.35.51.30

------------
Got answer:
    HEADER:
        opcode = QUERY, id = 4, rcode = NOERROR
        header flags:  response, want recursion
        questions = 1,  answers = 0,  authority records = 5,  additional = 10

    QUESTIONS:
        crabbygeezer.com, type = NS, class = IN
    AUTHORITY RECORDS:
    ->  crabbygeezer.com
        nameserver = freedns1.registrar-servers.com
        ttl = 172800 (2 days)
    ->  crabbygeezer.com
        nameserver = freedns2.registrar-servers.com
        ttl = 172800 (2 days)
    ->  crabbygeezer.com
        nameserver = freedns3.registrar-servers.com
        ttl = 172800 (2 days)
    ->  crabbygeezer.com
        nameserver = freedns4.registrar-servers.com
        ttl = 172800 (2 days)
    ->  crabbygeezer.com
        nameserver = freedns5.registrar-servers.com
        ttl = 172800 (2 days)
    ADDITIONAL RECORDS:
    ->  freedns1.registrar-servers.com
        internet address = 208.64.122.242
        ttl = 172800 (2 days)
    ->  freedns1.registrar-servers.com
        internet address = 72.20.53.50
        ttl = 172800 (2 days)
    ->  freedns2.registrar-servers.com
        internet address = 208.64.122.244
        ttl = 172800 (2 days)
    ->  freedns2.registrar-servers.com
        internet address = 72.20.38.137
        ttl = 172800 (2 days)
    ->  freedns3.registrar-servers.com
        internet address = 5.135.128.216
        ttl = 172800 (2 days)
    ->  freedns3.registrar-servers.com
        internet address = 62.210.149.103
        ttl = 172800 (2 days)
    ->  freedns4.registrar-servers.com
        internet address = 62.210.149.102
        ttl = 172800 (2 days)
    ->  freedns4.registrar-servers.com
        internet address = 72.20.53.50
        ttl = 172800 (2 days)
    ->  freedns5.registrar-servers.com
        internet address = 192.99.40.34
        ttl = 172800 (2 days)
    ->  freedns5.registrar-servers.com
        internet address = 72.20.53.50
        ttl = 172800 (2 days)

------------
crabbygeezer.com
        nameserver = freedns1.registrar-servers.com
        ttl = 172800 (2 days)
crabbygeezer.com
        nameserver = freedns2.registrar-servers.com
        ttl = 172800 (2 days)
crabbygeezer.com
        nameserver = freedns3.registrar-servers.com
        ttl = 172800 (2 days)
crabbygeezer.com
        nameserver = freedns4.registrar-servers.com
        ttl = 172800 (2 days)
crabbygeezer.com
        nameserver = freedns5.registrar-servers.com
        ttl = 172800 (2 days)
freedns1.registrar-servers.com
        internet address = 208.64.122.242
        ttl = 172800 (2 days)
freedns1.registrar-servers.com
        internet address = 72.20.53.50
        ttl = 172800 (2 days)
freedns2.registrar-servers.com
        internet address = 208.64.122.244
        ttl = 172800 (2 days)
freedns2.registrar-servers.com
        internet address = 72.20.38.137
        ttl = 172800 (2 days)
freedns3.registrar-servers.com
        internet address = 5.135.128.216
        ttl = 172800 (2 days)
freedns3.registrar-servers.com
        internet address = 62.210.149.103
        ttl = 172800 (2 days)
freedns4.registrar-servers.com
        internet address = 62.210.149.102
        ttl = 172800 (2 days)
freedns4.registrar-servers.com
        internet address = 72.20.53.50
        ttl = 172800 (2 days)
freedns5.registrar-servers.com
        internet address = 192.99.40.34
        ttl = 172800 (2 days)
freedns5.registrar-servers.com
        internet address = 72.20.53.50
        ttl = 172800 (2 days)
>

A sintaxe para executar uma consulta semelhante usando dig é:

$ dig NS crabbygeezer.com @f.gtld-servers.net +trace
    
por 07.09.2015 / 17:22
0

Costumava ser que você poderia consultar o registro SOA do domínio para obter os valores de TTL padrão:

dig example.com. SOA

Mas isso está obsoleto em favor da diretiva $ TTL.

Se você tiver algum registro especial em que esteja interessado, adicione o sinalizador + ttlid para pesquisar:

dig +ttlid somehost.example.com.

Para obter o TTL exato restante:

;; ANSWER SECTION:
somehost.example.com.      604800  IN      A       192.168.99.5

(o segundo campo é TTL - neste caso 604800)

    
por 07.09.2015 / 17:49