Si un servidor DNS busca un registro y falta, a menudo "almacenará en caché negativamente" el hecho de que falta este registro, y no intentará buscarlo nuevamente por un tiempo. No veo nada en el RFC sobre el TTL en el almacenamiento en caché negativo, así que supongo que es algo arbitrario. En el mundo real, ¿por cuánto tiempo permanecen estos registros negativos?
domain-name-system
Leopd
fuente
fuente
Respuestas:
El TTL para el almacenamiento en caché negativo no es arbitrario. Se toma del registro SOA en la parte superior de la zona a la que habría pertenecido el registro solicitado, si hubiera existido. Por ejemplo:
El último valor en el registro SOA ("86400") es la cantidad de tiempo que los clientes deben almacenar en caché los resultados negativos
example.org.
.Si un cliente lo solicita
doesnotexist.example.org.
, almacenará en caché el resultado durante 86400 segundos.fuente
MIN(SOA TTL, SOA.MINIMUM)
, no es simplementeSOA.MINIMUM
. (Ver tools.ietf.org/html/rfc2308#section-5 )Esto depende de su definición exacta de una "consulta negativa", pero en cualquier caso, esto se documenta en rfc2308 «Almacenamiento en caché negativo de consultas DNS (DNS NCACHE)» :
NXDOMAIN
NXDOMAIN
, la respuesta vendrá con unSOA
registro, que contendría elNXDOMAIN
TTL (tradicionalmente conocido como elMINIMUM
campo).rfc2308#section-4
SERVFAIL
Si la resolución no es exitosa y resulta en un tiempo de espera excedido (
SERVFAIL
) , es mejor que no se almacene en caché y, en todas las circunstancias, NO DEBE almacenarse en caché por más de 5 minutos.rfc2308#section-7.1
Tenga en cuenta que, en la práctica, el almacenamiento en caché de dichos resultados durante los 5 minutos permitidos es una excelente manera de disminuir la experiencia de un cliente en caso de que su servidor de caché ocasionalmente sufra breves problemas de conectividad (y efectivamente lo hace fácilmente vulnerable a una amplificación de denegación de servicio, donde unos segundos de tiempo de inactividad darían como resultado que ciertas partes del DNS estén inactivas durante los cinco minutos completos).
Antes de BIND 9.9.6-S1 (lanzado en 2014), aparentemente,
SERVFAIL
no estaba en caché en absoluto.a878301
(2014-09-04)Por ejemplo, en el momento de su pregunta y en todas las versiones de BIND lanzadas antes de 2014, el solucionador recursivo BIND NO se almacenó
SERVFAIL
en caché , si se cree en la confirmación anterior y la documentación sobre la primera introducción en 9.9.6-S1 .En el último BIND, el valor predeterminado
servfail-ttl
es1s
, y la configuración está codificada en un techo de30s
(en lugar del techo obligatorio de RFC de300s
).90174e6
(17/10/2015)Además, las siguientes son algunas citas notables al respecto:
En resumen, una
NXDOMAIN
respuesta se almacenaría en caché como se especifica en laSOA
zona correspondiente, mientras queSERVFAIL
es poco probable que se almacene en caché o, si se almacena en caché, será como máximo un número de segundos de dos dígitos.fuente
Hay un RFC dedicado a este tema: RFC 2308 - Almacenamiento en caché negativo de consultas DNS (DNS NCACHE) .
La sección relevante para leer es 5: almacenamiento en caché de respuestas negativas que establece:
En primer lugar, identifiquemos
SOA.MINIMUM
y el SOA TTL descrito en el RFC. El TTL es el número antes del tipo de registroIN
(900
segundos en el ejemplo a continuación). Mientras que el mínimo es el último campo en el registro (86400
segundos en el ejemplo a continuación).Ahora veamos algunos ejemplos, la
serverfault.com
zona es ilustrativa ya que tiene servidores autorizados de dos proveedores diferentes que están configurados de manera diferente.Vamos a encontrar los servidores de nombres autorizados para la
serverfault.com
zona:Luego verifique el registro SOA usando un servidor de nombres aws:
De esto podemos ver que el TTL del registro SOA es
900
segundos, mientras que el valor TTL negativo es86400
segundos. El valor de SOA TTL900
es menor, por lo que esperamos que se use este valor.Ahora, si consultamos un servidor autorizado para un dominio inexistente, deberíamos obtener una respuesta sin respuesta y con un registro SOA en la sección de autoridad:
Cuando un resolutor recursivo (almacenamiento en caché) recibe esta respuesta, analizará el registro SOA en el
AUTHORITY SECTION
y utilizará el TTL de este registro para determinar cuánto tiempo debe almacenar en caché el resultado negativo (en este caso,900
segundos).Ahora sigamos el mismo procedimiento con un servidor de nombres de Google:
Puede ver que los servidores de nombres de Google tienen valores diferentes para los valores SOA TTL y Negative TTL. En este caso, el TTL negativo de
300
es menor que el TTL de SOA de21600
. Por lo tanto, el servidor de Google debe usar el valor más bajo en elAUTHORITY SECTION
registro SOA al devolver unaNXDOMAIN
respuesta:Como se esperaba, el TTL del registro SOA en la
NXDOMAIN
respuesta es300
segundos.El ejemplo anterior también demuestra lo fácil que es obtener diferentes respuestas a la misma consulta. La respuesta que utiliza un solucionador de almacenamiento en caché individual se basa en qué se consultó el servidor de autoridad autorizado.
En mis pruebas, también he observado que algunos resolutivos recursivos (almacenamiento en caché) no devuelven un
AUTHORITY SECTION
con un registro SOA con un TTL decreciente para solicitudes posteriores, mientras que otros lo hacen.Por ejemplo, el solucionador Cloudflare hace (tenga en cuenta la disminución del valor TTL):
Mientras que el solucionador predeterminado en una VPC de AWS responderá con una sección de autoridad solo en la primera solicitud:
Nota: Esta respuesta aborda el comportamiento de las
NXDOMAIN
respuestas.Glosario:
fuente