Se um servidor DNS procurar um registro e ele estiver ausente, geralmente "armazenará em cache negativamente" o fato de esse registro estar ausente e não tentará procurá-lo novamente por um tempo. Não vejo nada na RFC sobre o TTL no cache negativo, então acho que é um tanto arbitrário. No mundo real, por quanto tempo esses registros negativos permanecem?
domain-name-system
Leopd
fonte
fonte
Respostas:
O TTL para cache negativo não é arbitrário. Ele é retirado do registro SOA na parte superior da zona à qual o registro solicitado teria pertencido, se ele existisse. Por exemplo:
O último valor no registro SOA ("86400") é a quantidade de tempo que os clientes são solicitados a armazenar em cache resultados negativos
example.org.
.Se um cliente solicitar
doesnotexist.example.org.
, ele armazenará em cache o resultado por 86400 segundos.fonte
MIN(SOA TTL, SOA.MINIMUM)
, não é simplesmenteSOA.MINIMUM
. (Ver tools.ietf.org/html/rfc2308#section-5 )Isso depende da sua definição exata de uma "consulta negativa", mas em ambos os casos, isso está documentado em rfc2308 «Armazenamento em cache negativo de consultas DNS (DNS NCACHE)» :
NXDOMAIN
NXDOMAIN
, a resposta virá com umSOA
registro, que conteria oNXDOMAIN
TTL (tradicionalmente conhecido comoMINIMUM
campo).rfc2308#section-4
SERVFAIL
Se a resolução não for bem-sucedida e resultar em um tempo limite (
SERVFAIL
) , ela também poderá não ser armazenada em cache e, em todas as circunstâncias, NÃO DEVE ser armazenada em cache por mais de 5 minutos.rfc2308#section-7.1
Observe que, na prática, armazenar em cache esses resultados pelos 5 minutos permitidos completos é uma ótima maneira de diminuir a experiência de um cliente, caso o servidor de cache sofra ocasionalmente breves problemas de conectividade (e torne-o facilmente vulnerável a uma amplificação de negação de serviço, alguns segundos de inatividade resultariam em algumas partes do DNS inativas por cinco minutos completos).
Antes do BIND 9.9.6-S1 (lançado em 2014), aparentemente,
SERVFAIL
não era armazenado em cache.a878301
(04/09/2014)Por exemplo, no momento da sua pergunta e em todas as versões do BIND lançadas antes de 2014, o resolvedor recursivo do BIND NÃO fez cache
SERVFAIL
, se se acredita que o commit acima e a documentação sobre a primeira introdução no 9.9.6-S1 .No BIND mais recente, o padrão
servfail-ttl
é1s
e a configuração é codificada para um limite máximo de30s
(no lugar do limite obrigatório de RFC de300s
).90174e6
(17/10/2015)Além disso, a seguir, algumas citações dignas de nota sobre o assunto:
Em resumo, uma
NXDOMAIN
resposta seria armazenada em cache conforme especificado naSOA
zona aplicável, enquantoSERVFAIL
é improvável que seja armazenada em cache ou, se armazenada em cache, será no máximo um número de dois dígitos.fonte
Há uma RFC dedicada a este tópico: RFC 2308 - Armazenamento em cache negativo de consultas DNS (DNS NCACHE) .
A seção relevante a ser lida é 5 - Caching Negative Answers, que afirma:
Em primeiro lugar, vamos identificar o
SOA.MINIMUM
e SOA TTL descrito no RFC. O TTL é o número antes do tipo de registroIN
(900
segundos no exemplo abaixo). Enquanto o mínimo é o último campo no registro (86400
segundos no exemplo abaixo).Agora vamos ver alguns exemplos, a
serverfault.com
zona é ilustrativa, pois possui servidores autoritativos de dois provedores diferentes configurados de maneira diferente.Vamos encontrar os servidores de nomes com autoridade para a
serverfault.com
zona:Em seguida, verifique o registro SOA usando um servidor de nomes aws:
A partir disso, podemos ver que o TTL do registro SOA é
900
segundos enquanto o valor TTL negativo é86400
segundos. O valor SOA TTL de900
é menor, portanto esperamos que esse valor seja usado.Agora, se consultarmos um servidor autoritativo em busca de um domínio inexistente, obteremos uma resposta sem resposta e com um registro SOA na seção de autoridade:
Quando um resolvedor recursivo (em cache) recebe essa resposta, ele analisa o registro SOA no
AUTHORITY SECTION
e usa o TTL desse registro para determinar quanto tempo deve armazenar em cache o resultado negativo (nesse caso,900
segundos).Agora vamos seguir o mesmo procedimento com um servidor de nomes do Google:
Você pode ver que os servidores de nomes do Google têm valores diferentes para os valores SOA TTL e Negative TTL. Nesse caso, o TTL negativo de
300
é menor que o SOA TTL de21600
. Portanto, o servidor do Google deve usar o valor mais baixo noAUTHORITY SECTION
registro SOA ao retornar umaNXDOMAIN
resposta:Como esperado, o TTL do registro SOA na
NXDOMAIN
resposta é300
segundos.O exemplo acima também demonstra como é fácil obter respostas diferentes para a mesma consulta. A resposta que um resolvedor de armazenamento em cache individual acaba usando é a que servidor de nomes autoritativo foi consultado.
Nos meus testes, também observei que alguns resolvedores recursivos (cache) não retornam um
AUTHORITY SECTION
com um registro SOA com um TTL decrescente para solicitações subsequentes, enquanto outros o fazem.Por exemplo, o resolvedor de cloudflare faz (observe o decrescente valor TTL):
Enquanto o resolvedor padrão em um AWS VPC responderá com uma seção de autoridade apenas na primeira solicitação:
Nota: Esta resposta aborda o comportamento das
NXDOMAIN
respostas.Glossário:
fonte