Quanto tempo dura o cache negativo do DNS?

33

Se um servidor DNS procurar um registro e ele estiver faltando, muitas vezes "armazenará negativamente em cache" o fato de que esse registro está faltando e não tentará procurá-lo novamente por um tempo. Eu não vejo nada no RFC sobre o TTL no cache negativo deve ser, então eu estou supondo que é um pouco arbitrário . No mundo real, por quanto tempo esses registros negativos permanecem?

    
por Leopd 12.09.2012 / 17:53

2 respostas

44

O TTL para armazenamento em cache negativo não é arbitrário. Ele é obtido do registro SOA no topo da zona à qual o registro solicitado teria pertencido, se ele existisse. Por exemplo:

example.org.    IN      SOA     master-ns1.example.org. Hostmaster.example.org. (
            2012091201 43200 1800 1209600 86400 )

O último valor no registro SOA ("86400") é a quantidade de tempo em que os clientes são solicitados a armazenar em cache os resultados negativos em example.org. .

Se um cliente solicitar doesnotexist.example.org. , ele armazenará em cache o resultado por 86400 segundos.

    
por 12.09.2012 / 18:07
8

Isso depende da sua definição exata de uma "consulta negativa", mas, em ambos os casos, isso está documentado em rfc2308 « Cache negativo de consultas DNS (DNS NCACHE) » :

NXDOMAIN

  • Se a resolução for bem-sucedida e resultar em NXDOMAIN , a resposta virá com um registro SOA , que conterá o NXDOMAIN TTL (tradicionalmente conhecido como o campo MINIMUM ). rfc2308#section-4

SERVFAIL

  • Se a resolução não for bem-sucedida e resultar em um tempo limite ( SERVFAIL ) , então pode não ser armazenado em cache, e em todas as circunstâncias NÃO DEVE ser armazenado em cache por mais de 5 minutos. rfc2308#section-7.1

    Observe que, na prática, o cache desses resultados para os 5 minutos permitidos é uma ótima maneira de diminuir a experiência de um cliente, caso o servidor de cache ocasionalmente sofra problemas de conectividade (e torne-o vulnerável a um problema de negação). Amplificação de serviço, onde alguns segundos de inatividade resultariam em certas partes do DNS sendo desativadas por cinco minutos completos.

    Antes do BIND 9.9.6-S1 (lançado em 2014), aparentemente, SERVFAIL não foi armazenado em cache. a878301 (2014-09-04)

    Por exemplo, no momento da sua pergunta e em todas as versões do BIND lançadas antes de 2014, o resolvedor recursivo BIND NÃO armazenou em cache SERVFAIL , se o commit acima e deve-se acreditar na documentação sobre a primeira introdução em 9.9.6-S1 .

    No BIND mais recente, o servfail-ttl padrão é 1s , e a configuração é codificada para um limite máximo de 30s (no lugar do teto obrigatório de 300s ). 90174e6 (2015-10-17)

    Além disso, a seguir, algumas citações dignas de nota sobre o assunto:

    The outcome of caching SERVFAIL responses has included some situations where it was seen to be detrimental to the client experience, particularly when the causes of the SERVFAIL being presented to the client were transient and from a scenario where an immediate retry of the query would be a more appropriate action.

    The second tactic is to claim that widespread DNS clients will do something Particularly Evil when they are unable to reach all DNS servers. The problem with this argument is that the claim is false. Any such client is clearly buggy, and will be unable to survive in the marketplace: consider what happens if the client's routers briefly go down, or if the client's network is temporarily flooded.

Em resumo, uma resposta NXDOMAIN seria armazenada em cache conforme especificado em SOA da zona aplicável, enquanto é improvável que o SERVFAIL seja armazenado em cache ou, se armazenado em cache, ser no máximo um número de dígitos com dois dígitos.

    
por 08.01.2017 / 01:49