Módulo 6 · 6.1
TTL e cache
Módulo 6: Tempo, cache e transferência de domínio · Tempo de leitura: 7 minutos
Objetivo de aprendizagem: Depois desta lição, saberá explicar o que é o TTL de um registo, como as caches o utilizam e que TTL escolher em cada situação.
Conceitos-chave: TTL (Time To Live), cache, cache do resolver, cache do seu computador e navegador, TTL em contagem decrescente, valores típicos de TTL (300, 3600, 86400)
Porque é que o DNS memoriza
Na lição 1.4 viu como um resolver procura uma resposta: primeiro num servidor de raiz, depois no servidor do TLD e, por fim, no servidor de nomes autoritativo do domínio. Se isto tivesse de acontecer de novo em cada clique num website, a internet seria bastante mais lenta e os servidores de nomes sucumbiriam sob o volume de pedidos.
Por isso, os resolvers memorizam cada resposta durante algum tempo. Essa memória chama-se a cache. Se outra pessoa pedir o mesmo nome, o resolver dá de imediato a resposta a partir da sua cache, sem percorrer todo o caminho.
A questão é então: durante quanto tempo pode o resolver guardar uma resposta em memória? Isso é determinado pelo titular do domínio, através do TTL de cada registo.
O que é o TTL
TTL significa Time To Live: o tempo durante o qual um registo pode permanecer numa cache, em segundos. Cada registo tem o seu próprio TTL. Numa zona, isto tem este aspeto:
example.com. 3600 IN A 192.0.2.10
www.example.com. 3600 IN A 192.0.2.10
example.com. 3600 IN MX 10 mail.example.com.
_dmarc.example.com. 14400 IN TXT "v=DMARC1; p=quarantine"O número a seguir ao nome é o TTL. Aqui, os registos A e MX podem ser memorizados durante uma hora (3600 segundos) e o registo DMARC durante quatro horas (14400 segundos).
Valores habituais:
| TTL | É | Quando o utilizar? |
|---|---|---|
| 300 | 5 minutos | Imediatamente antes e durante uma transferência de domínio, ou se alterar com frequência |
| 3600 | 1 hora | Uma boa predefinição para a maioria dos registos |
| 14400 | 4 horas | Registos que raramente mudam |
| 86400 | 1 dia | Registos que quase nunca mudam, como os registos NS |
O TTL é um número entre 0 e 2.147.483.647 segundos (2^31 - 1, conforme indicado na RFC 2181). Na prática, raramente encontrará valores acima de um dia ou dois. Muitos resolvers também aplicam um máximo próprio, muitas vezes um dia ou uma semana.
A contagem decrescente
O TTL não é um relógio fixo para o mundo inteiro. Cada resolver só começa a contar no momento em que obtém o registo.
Um exemplo. O registo A de example.com tem TTL 3600.
- Às 10:00, o resolver do provedor A pede o registo. Recebe
192.0.2.10e pode guardá-lo até às 11:00. - Às 10:40, o resolver do provedor B pede-o. Guarda-o até às 11:40.
- Às 10:45, altera o registo para
198.51.100.10. - Os utilizadores do provedor A veem o novo endereço a partir das 11:00; os utilizadores do provedor B só a partir das 11:40.
Se pedir o registo a um resolver que já o tem na sua cache, verá na resposta um TTL que vai diminuindo. No servidor de nomes autoritativo, verá sempre o valor completo:
; no servidor de nomes autoritativo
example.com. 3600 IN A 192.0.2.10
; num resolver, 25 minutos depois
example.com. 2100 IN A 192.0.2.10É útil saber isto: se vir ainda 2100 segundos no seu resolver, ele vai dar a resposta antiga durante mais 35 minutos.
Quem é que memoriza tudo isto?
Não é apenas o resolver do seu fornecedor de internet que tem uma cache. Há mais camadas:
- O resolver do seu fornecedor, da sua rede empresarial, ou um resolver público (por exemplo, 1.1.1.1, 8.8.8.8 ou 9.9.9.9).
- O seu router em casa ou no escritório, que muitas vezes funciona ele próprio como um pequeno resolver.
- O sistema operativo do seu computador ou telemóvel.
- O seu navegador, que por vezes também guarda respostas DNS durante algum tempo.
Cada camada respeita, em princípio, o TTL, mas nem todas o fazem com exatidão. Por isso, pode demorar um pouco mais no seu portátil do que no do seu colega. Pode ler como limpar essas caches na lição 6.2.
Escolher o TTL correto
Um TTL curto parece prático: as alterações tornam-se visíveis rapidamente em todo o lado. Mas há uma desvantagem. Os resolvers têm de pedir o registo de novo com muito mais frequência. Isso torna o primeiro carregamento do seu site uma fração mais lento, e se os seus servidores de nomes estiverem temporariamente inacessíveis, o seu domínio fica mais depressa inacessível. Com um TTL de uma hora, os resolvers conseguem ultrapassar uma falha breve no servidor de nomes com a sua cache.
Algumas regras práticas:
- Predefinição: 3600 segundos. É um bom equilíbrio.
- Para uma alteração planeada: temporariamente 300. Reduza o TTL pelo menos um TTL antigo antes da alteração. Se estava em 3600, faça-o pelo menos uma hora antes, mais seguro ainda um dia antes. Se estava em 86400, faça-o pelo menos um dia antes. Depois da alteração, reponha o valor anterior. Pode ler como fazer isto numa transferência de domínio na lição 6.3.
- Um valor inferior a 60 segundos tem pouca utilidade. Alguns resolvers ignoram TTLs muito curtos e aplicam um mínimo próprio.
- Reduzir um TTL só surte efeito depois de expirar o TTL antigo. Se reduzir o TTL de 86400 para 300 e alterar logo a seguir o endereço, os resolvers que acabaram de obter o registo ainda vão manter o valor antigo durante um dia inteiro.
Este último ponto é o erro mais comum com os TTLs. O novo TTL, mais curto, tem primeiro de chegar a todas as caches.
Na prática: como aparece num painel
No painel de exemplo DirectAdmin, o TTL surge como uma coluna separada em Administração de DNS. Pode alterar o TTL de um registo individual através do lápis junto a esse registo. Com o botão TTL WAARDE OVERSCHRIJVEN, define um único TTL para todos os registos do domínio em simultâneo. Em O meu WebOké, vê o TTL na lista de registos no separador DNS e escolhe-o na janela onde adiciona ou edita um registo.
Outros painéis funcionam de forma semelhante: no cPanel, Plesk, Cloudflare e na maioria dos registrars, o campo também se chama TTL. Por vezes, escolhe de uma lista (por exemplo, "5 minutos", "1 hora", "Auto") em vez de digitar um número em segundos. No Cloudflare, "Auto" significa 300 segundos para registos sem proxy.
Resumo
- O TTL determina quantos segundos uma resposta DNS pode permanecer numa cache.
- Cada resolver conta a partir do momento em que obteve o registo; por isso, nem toda a gente vê uma alteração ao mesmo tempo.
- No servidor de nomes autoritativo vê o TTL completo; num resolver, um valor em contagem decrescente.
- 3600 é uma boa predefinição; reduza temporariamente para 300 antes de uma alteração planeada, e fá-lo pelo menos um TTL antigo de antemão.
Quiz
Exercício
Exercício Z6.1: TTL na origem e no resolver. Com uma ferramenta DNS online ou com dig, procure o TTL do registo A de sidn.nl (o domínio da SIDN, a registry do .nl na Holanda), diretamente num dos servidores de nomes do próprio sidn.nl (por exemplo, ns1.sidn.nl). Introduza o TTL em segundos. Depois, pergunte o mesmo registo a um resolver público e introduza também esse TTL. Explique numa frase porque é que os dois números podem ser diferentes.
dig A sidn.nl @ns1.sidn.nl
dig A sidn.nl @9.9.9.9Exercício O6.1: Configurar na sua zona de treino. Na sua zona de treino , já existe um registo A <code>.dnspractice.euttl-test. que aponta para <code>.dnspractice.eu192.0.2.61, com um TTL de 300 segundos. Reduza o TTL para 60 segundos, como faria antes de uma transferência de domínio, e deixe o endereço inalterado. Depois, verifique com dig junto do servidor de nomes da zona de treino se o novo TTL já lá está. Entregue quando o TTL for 60.
A zona de treino utiliza TTLs curtos (entre 30 e 300 segundos), para não ter de esperar; no seu domínio real, utilize por exemplo 3600 como predefinição e 300 imediatamente antes de uma alteração.
Exercício O6.1
Este exercício é feito na sua própria zona de treino: uma zona DNS real nos servidores de nomes da WebOké, só para si. Registe-se com o seu endereço de email. Recebe uma ligação de acesso por email e, de seguida, volta a esta lição. Utilizamos o seu endereço apenas para a finalidade do curso.
Para saber mais
Os passos nestes artigos referem-se aos painéis da WebOké; noutros painéis o funcionamento é semelhante.
- Manual DirectAdmin 5.11: Quando é que uma alteração tem efeito? Tempo de espera e TTL
- Manual DirectAdmin 5.2: Abrir a Administração de DNS e consultar os registos
- Quanto tempo demora uma alteração de nameserver ou DNS, e o que fazer se não a conseguir ver?
- Manual do WebOké 5.4: Gerir o DNS: adicionar, alterar e eliminar registos
