Servidor DNS caché
Un servidor DNS caché, normalmente colocado entre los PC y los servidores de nombres autoritarios, recibe los RR de respuesta de las consultas DNS de los PC y los guarda en su caché durante un tiempo (TTL) para responder más rápido a las mismas preguntas si surgen de nuevo. Cuando la respuesta a la consulta del PC no está en la caché del servidor DNS, este traslada la consulta a un servidor autoritario, y la respuesta la envía al PC como autoritaria, además de guardarla en la caché. Si la misma pregunta llega antes de que transcurra el TTL de los RR de la respuesta, esta se envía directamente al PC, con el consiguiente ahorro de tiempo, pero como no autoritaria, por encontrarse en la caché.
Los servidores DNS caché disminuyen considerablemente el tiempo de respuesta de las consultas DNS y también el trafico en las redes. Por ejemplo, un RR como el siguiente:
3w IN MX 10 mail.asir.com
al guardarse en la caché, hace que durante las siguientes tres semanas, todas las consultas sobre el servidor de correo del dominio asir.com, se respondan directamente por el servidor DNS caché, con la consiguiente mejora en el tiempo de respuesta y el menor volumen de tráfico en la red.
Los RR de la caché solo se borran en dos situaciones:
- Cuando finaliza el TTL de un RR. Se borra el RR en cuestión.
- Cuando el servidor se recarga. Se borran todos los RR de la caché.
lo que implica que un cambio en el registro MX anterior, puede llegar a tardar hasta tres semanas en propagarse. Solo registros que cambien muy poco, como los MX, deberían tener un TTL tan elevado.
BIND por defecto funciona como servidor DNS caché. Este comportamiento puede cambiarse con la instrucción recursive (por defecto recursive yes) del fichero named.conf. Si un servidor DNS suministra el servicio de caché, debe permitir la consultas recursivas, y las consultas recursivas necesitan del acceso a los servidores raíz. Todo esto hace que en el fichero named.conf se deba introducir el siguiente fragmento para que el servidor se configure como DNS caché:
options {
recursion yes; // se puede omitir pues es un valor por defecto
allow-recursion { 10.2/16; 192.168.2/24; }; // Equipos que pueden hacer consultas recursivas
};
// otras instrucciones zone para las zonas sobre las que es autoritario el servidor
...
// la zona . sirve para atender a cualquier consulta que no pertenezca
// a ninguna de las zonas anteriores, una especie de:
// "para cualquier otro zona lo siguiente"
zone "." IN {
type hint;
file "root.servers";
};
La instrucción allow-recursion indica las IP de los equipos que únicamente podrán solicitar consultas recursivas al servidor, y en consecuencia, podrán también utilizarlo como caché. Si no la ponemos, cualquier equipo podría utilizar el servidor como caché y esto podría ser utilizado por algún atacante. Las instrucciones allow-recursion y allow-query-cache están relacionadas, pero en este caso no es necesario incluir allow-query-cache porque al utilizar allow-recursion toma la misma lista de direcciones IP.
La zona "." incluye a todas las zonas posibles menos a las zonas explícitas, por lo que las instrucciones que se pongan aquí afectarán a cualquier consulta de un dominio para el que el servidor no es autoritario. Con type hint; se especifica que la zona hace referencia al dominio raíz y con file "root.servers"; se indica el fichero donde están las direcciones de los servidores raíz.
Las configuraciones más comunes con servidores DNS caché son:
- Un servidor de nombres maestro o esclavo para una o más zonas y como servidor caché para todas las demás consultas.
- Un servidor de nombres solo caché.
Licencia: licencia de software libre GPL