Dynamic DNS (DDNS) is an automated mechanism that updates DNS records when a host's IP address changes, eliminating the need for manual record edits in environments where addresses are assigned temporarily via DHCP or internet provider reconnection. The system works by having a host, DHCP server, or update client send address changes to an authoritative DNS server, which verifies the sender's authorization and updates the corresponding A or AAAA records, with resolution clients receiving the new address once cached copies expire based on the record's TTL. Security risks include record hijacking and name conflicts when updates lack proper authentication controls such as TSIG signatures, making it critical to restrict updates with keys, limit them to specific zones, and maintain consistent forward and reverse zone records to prevent operational faults like stale records and failed lookups.
Cómo funciona el DDNS
El DDNS funciona enviando un cambio a un servidor DNS autoritativo cada vez que cambia la dirección de un host. El cambio puede proceder del propio host, de un servidor DHCP que actúe en su nombre o del cliente de actualización de un proveedor.
- Cambio de dirección: un host recibe una nueva dirección IP del DHCP, un router se vuelve a conectar con una nueva dirección proporcionada por su proveedor de Internet o se modifica una asignación estática.
- Solicitud de actualización: el host, el servidor DHCP o un pequeño cliente de actualización envía la nueva dirección al servidor DNS. Las implementaciones basadas en estándares utilizan el mensaje de actualización dinámica de la RFC 2136. Muchos servicios alojados utilizan, en su lugar, una solicitud de actualización basada en HTTP.
- Autenticación: El servidor DNS comprueba que el remitente esté autorizado a modificar el registro. Las actualizaciones basadas en estándares suelen protegerse con firmas de transacción (TSIG), tal y como se define en el RFC 8945, o con otras claves. Los servicios alojados suelen utilizar credenciales de cuenta o tokens.
- Modificación de un registro: el servidor sustituye el antiguo registro A o AAAA por la nueva dirección e incrementa el número de serie de la zona para que los servidores secundarios puedan detectar el cambio.
- Resolución: Los clientes que consultan el nombre reciben la nueva dirección una vez que caducan las copias almacenadas en caché de la respuesta anterior, lo cual viene determinado por el tiempo de vida (TTL) del registro.
Las actualizaciones dinámicas también pueden eliminar o modificar registros relacionados, como los registros PTR para búsquedas inversas. Un TTL corto reduce el intervalo de tiempo durante el cual los clientes utilizan una dirección obsoleta, pero aumenta el volumen de consultas.
Problemas habituales con el DDNS
Los registros creados para los clientes DHCP permanecen tras finalizar el periodo de concesión si el servidor DHCP no los elimina o carece de permiso para hacerlo. Posteriormente, otro dispositivo recibe la misma dirección y dos nombres se resuelven en ella.
El servidor DNS devuelve una respuesta REFUSED cuando el remitente no está autorizado, la clave o la firma TSIG no coinciden, o la zona no permite actualizaciones dinámicas. En ese caso, el registro conserva su dirección anterior sin que se produzca ningún error evidente en el cliente.
Cuando tanto el servidor DHCP como el cliente intentan actualizar el mismo registro, o cuando dos hosts reclaman el mismo nombre, uno sobrescribe al otro o la actualización falla. La causa habitual es que no quede clara la responsabilidad de la actualización entre el cliente y el servidor.
El registro A o AAAA directo se actualiza, pero el registro PTR no, porque la zona inversa no existe, no es dinámica o no está autorizada. Las búsquedas inversas fallan entonces o devuelven un nombre antiguo, lo que impide el registro y algunas comprobaciones de autenticación.
Un TTL elevado en un registro actualizado dinámicamente permite a los resolutores conservar la dirección antigua una vez que la actualización se ha realizado con éxito. Los usuarios experimentan fallos intermitentes hasta que caducan las respuestas almacenadas en caché.