Un servidor de nombres es un servidor DNS que traduce los nombres de dominio a direcciones IP y otros datos, ya sea manteniendo registros de zona autoritativos o actuando como un resolutor recursivo que consulta a otros servidores en nombre de los clientes. Los servidores de nombres son fundamentales para el funcionamiento de la red, pero unas prácticas de gestión deficientes —como delegaciones inadecuadas, redundancia insuficiente y registros obsoletos— pueden provocar interrupciones visibles y molestias a los usuarios. Una implementación adecuada de los servidores de nombres requiere al menos dos servidores en redes separadas, una supervisión minuciosa para garantizar la coherencia, la firma DNSSEC y controles de seguridad para prevenir abusos y ataques de envenenamiento de caché.
Cómo funciona un servidor de nombres
Un servidor de nombres recibe una consulta DNS, comprueba la información de la que dispone y, o bien responde, o bien redirige al cliente hacia un servidor que pueda hacerlo. El comportamiento depende de si el servidor es autoritativo, recursivo o ambos.
- Recibir la consulta: el servidor de nombres recibe una consulta que contiene un nombre, un tipo de registro y una clase, normalmente a través de UDP en el puerto 53.
- Comprobación de datos locales: un servidor autoritativo consulta los datos de su zona. Un servidor recursivo comprueba su caché en busca de una respuesta almacenada que no haya caducado.
- Responder o remitir: si el servidor dispone de los datos, devuelve los registros. En caso contrario, un servidor autoritativo devuelve un error o una remisión a los servidores de nombres delegados de una zona secundaria.
- Recursar cuando sea necesario: un resolutor recursivo sin respuesta en caché consulta un servidor de nombres raíz, luego los servidores de nombres de dominio de primer nivel y, a continuación, los servidores autoritativos de la zona, siguiendo las referencias hasta obtener una respuesta.
- Respuesta y almacenamiento en caché: el resolutor envía la respuesta final al cliente y la almacena en caché durante el tiempo establecido por el tiempo de vida del registro.
Las respuestas que superan el límite de tamaño de UDP, o que requieren fiabilidad, se reenvían a través de TCP, tal y como se describe en los estándares del DNS. Las zonas suelen estar gestionadas por al menos dos servidores de nombres, y los servidores secundarios copian los datos del primario mediante transferencias de zona.
Problemas habituales con los servidores de nombres
Un registro NS de la zona principal apunta a un servidor que no responde de forma autoritativa para la zona, a menudo tras una migración o una retirada del servicio. Los resolutores observan tiempos de espera agotados o errores SERVFAIL en algunas consultas y búsquedas lentas en otras.
Los registros NS publicados en la zona principal difieren de los de la propia zona, normalmente porque solo se ha actualizado uno de los dos. Los resolutores pueden utilizar servidores diferentes en función del conjunto que tengan almacenado en caché, lo que provoca fallos intermitentes.
Los servidores de nombres secundarios se retrasan porque fallan las transferencias de zona o porque no se ha incrementado el número de serie del SOA. Los clientes obtienen respuestas diferentes dependiendo del servidor al que se conecten.
Un servidor destinado a ser autoritativo también responde a consultas recursivas procedentes de cualquier origen. Por lo tanto, puede ser objeto de abuso para llevar a cabo ataques de amplificación y sondeo de caché.