Una consulta no recursiva, también denominada consulta iterativa, es una solicitud DNS que pide a un servidor de nombres que proporcione únicamente la información de la que ya dispone o que remita al cliente a otro servidor, sin realizar búsquedas adicionales en nombre del cliente. Las consultas no recursivas constituyen la columna vertebral del tráfico DNS entre servidores, y los resolutores recursivos las utilizan para recorrer la jerarquía del DNS consultando secuencialmente los servidores raíz, los servidores de dominio de nivel superior y los servidores autoritativos. Comprender la distinción entre consultas recursivas y no recursivas es fundamental desde el punto de vista operativo para el diseño de servidores, la resolución de problemas, la configuración de seguridad y la prevención de errores de configuración, como los clientes «stub» dirigidos a servidores que solo son autoritativos y que rechazan la recursividad.
Cómo funcionan las consultas no recursivas
En una consulta no recursiva, el cliente envía una pregunta y el servidor responde con la mejor información de la que dispone, sin realizar búsquedas adicionales en nombre del cliente. Los resolutores recursivos utilizan este enfoque para recorrer la jerarquía del DNS.
- El cliente envía la consulta: el cliente, normalmente un resolutor recursivo, envía una consulta a un servidor de nombres sin activar el indicador de recursividad deseada o sin esperar que el servidor realice una búsqueda recursiva.
- El servidor comprueba sus datos: el servidor busca en los datos de su zona si es autoritativo para el nombre, o en su caché si dispone de ella.
- El servidor devuelve una respuesta: si el servidor tiene la respuesta, la devuelve. Un servidor autoritativo marca la respuesta como autoritativa.
- El servidor devuelve una referencia: si el servidor no dispone de la respuesta, devuelve una referencia en la que se enumeran los servidores de nombres más cercanos al nombre, como los servidores de una zona secundaria.
- El cliente sigue la referencia: el cliente envía la misma pregunta al servidor indicado en la referencia y repite el proceso hasta que recibe una respuesta o un error.
El servidor nunca consulta a otros servidores en nombre del cliente, por lo que la tarea de seguir las referencias recae en el solicitante. Un resolutor suele comenzar en un servidor raíz, luego consulta a un servidor de dominio de nivel superior y, a continuación, al servidor autoritativo del dominio, utilizando consultas no recursivas en cada paso.
Conceptos erróneos comunes sobre las consultas no recursivas
Las consultas iterativas no son intrínsecamente más lentas. Cada paso es una simple consulta, y un resolutor que almacena en caché las referencias y las respuestas a menudo se salta la mayoría de los pasos.
Los resolutores «stub» suelen enviar consultas recursivas a un resolutor. El intercambio no recursivo tiene lugar entre el resolutor y los servidores autoritativos, por lo que resulta prácticamente invisible para los clientes finales.
Una remisión es una respuesta normal, no un error. Dirige al resolutor hacia servidores de nombres más cercanos a la respuesta, y la ausencia de una remisión es un problema de delegación más que un problema relacionado con el tipo de consulta.
Un servidor «solo autoritativo» no resuelve nombres fuera de sus zonas, incluso cuando está activado el indicador de recursividad deseada. Normalmente devuelve una remisión o un rechazo, lo que a menudo se confunde con una interrupción del servicio.
Un servidor con caché puede responder a una consulta no recursiva desde su caché si los datos se encuentran allí. Si no están almacenados en caché, el servidor no va a buscarlos para esa consulta.