A forwarding DNS server is a DNS server that delegates unresolved queries to upstream servers rather than resolving them independently, while caching responses for subsequent local lookups to improve performance and reduce outbound traffic. This architecture concentrates external name resolution at central points and enables conditional forwarding to route specific domains to designated servers, making it ideal for branch offices and internal deployments that require logging and filtering controls. However, forwarding creates dependencies on upstream server availability and introduces potential risks including poisoned cache entries, forwarding loops, and exposure of internal query patterns, which can be mitigated through redundant forwarders, DNSSEC validation, and regular monitoring of upstream response times.
Cómo funciona un servidor DNS de reenvío
Un servidor DNS de reenvío se configura con uno o más servidores de nivel superior, denominados «reenviadores». Responde a lo que puede a partir de los datos locales o de la caché y remite todo lo demás a esos servidores de nivel superior.
- Consulta de cliente: un cliente o un resolutor stub envía una consulta recursiva de un nombre al servidor DNS de reenvío.
- Comprobación local: el servidor comprueba las zonas que aloja y su caché. Si dispone de una respuesta válida, responde inmediatamente.
- Reenvío a un servidor superior: si no hay respuesta disponible, el servidor envía la consulta a un reenviador configurado con el indicador de recursión deseada activado, solicitando al servidor superior que realice la resolución completa.
- Resolución ascendente: El servidor ascendente resuelve el nombre, normalmente recorriendo la jerarquía del DNS desde la raíz, o responde desde su propia caché.
- Almacenamiento en caché y respuesta: El servidor de reenvío recibe la respuesta, la almacena durante su tiempo de vida y la devuelve al cliente.
Muchas implementaciones admiten el reenvío condicional, que envía consultas sobre dominios específicos a servidores concretos, como los servidores DNS de una red asociada. Algunas pueden recurrir a su propia resolución iterativa si los reenviadores no responden, mientras que otras pueden configurarse para reenviar únicamente y, en su defecto, devolver un error en la consulta.
Problemas habituales de los servidores DNS de reenvío
Si no se puede acceder a ninguno de los reenviadores configurados, los clientes no podrán resolver nombres externos aunque el servidor local funcione correctamente. Indicar al menos dos reenviadores en rutas distintas reduce este riesgo.
Dos servidores configurados para reenviarse entre sí, o una cadena que vuelve al punto de partida, provocan que las consultas reboten hasta que se agota el tiempo de espera. Los síntomas son búsquedas lentas y respuestas SERVFAIL para nombres que se resuelven en otro lugar.
El envío de consultas sobre dominios internos a un servidor upstream público devuelve NXDOMAIN o respuestas erróneas. El reenvío condicional o las zonas alojadas localmente para esos dominios evitan este problema.
El reenviador almacena en caché todo lo que devuelve el servidor de origen, por lo que una respuesta errónea persiste hasta que caduca su TTL. Vaciar la caché corrige la copia local, pero no la fuente de origen.