Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: https://www.alcancelibre.org
Licencia Creative Commons
© 1999-2026 Joel Barrios Dueñas. Este manual se distribuye bajo la licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0). Usted es libre de compartir y adaptar el material bajo los siguientes términos: debe dar crédito al autor, no puede utilizarlo para fines comerciales y debe compartir las obras derivadas bajo la misma licencia. La licencia completa está disponible en https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.es.
Los servidores DNS pueden funcionar de modo dinámico, permitiendo la actualización en tiempo real de los nombres de anfitrión y las direcciones IP asociadas a éstos a través de la información enviada por un servidor DHCP. Este mecanismo, definido en el RFC 2136, es fundamental para mantener la coherencia entre las asignaciones de direcciones y la resolución de nombres en una red, eliminando la necesidad de administración manual.
Los procedimientos de este documento requieren haber comprendido, estudiado y puesto en práctica los temas descritos en los siguientes documentos:
La integración exitosa requiere modificaciones coordinadas en la configuración del servidor DHCP (daemon dhcpd) y del servidor DNS (BIND named). El siguiente procedimiento guía a través de cada paso necesario.
Edite el archivo /etc/dhcp/dhcpd.conf:
vim /etc/dhcp/dhcpd.conf
A continuación se muestra un ejemplo de configuración con los parámetros esenciales para DNS dinámico (DDNS). Todos los valores relativos a direcciones IP utilizan el bloque estándar 192.168.100.0/24 para mantener coherencia pedagógica entre manuales.
⚠️ Nota sobre compatibilidad con versiones antiguas: En versiones más antiguas del servidor DHCP de ISC (como las incluidas en CentOS/RHEL 6 o 7), era obligatoria la directiva
ddns-update-styleal inicio del archivo de configuración. Los estilos válidos eraninterim(recomendado),ad-hoconone. En distribuciones modernas (AlmaLinux/Rocky Linux 8/9/10, ALDOS 1.4+), esta directiva es obsoleta y debe omitirse. Si está configurando un sistema heredado y recibe errores, pruebe añadiendoddns-update-style interim;como primera línea del archivo.
# Configuración global para DNS dinámico
ddns-updates on;
ddns-domainname "red-local.local.";
ddns-rev-domainname "in-addr.arpa.";
update-static-leases on;
ignore client-updates;
authoritative;
default-lease-time 900;
max-lease-time 900;
option ip-forwarding off;
option domain-name "red-local.local";
option ntp-servers 0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org, 3.pool.ntp.org;
# Éste es el mismo archivo de firma digital (TSIG) de BIND.
include "/etc/rndc.key";
# Definición de zonas para actualización dinámica
zone localdomain. {
primary 127.0.0.1;
key rndc-key;
}
zone 100.168.192.in-addr.arpa. {
primary 127.0.0.1;
key rndc-key;
}
zone red-local.local. {
primary 127.0.0.1;
key rndc-key;
}
# Definición de la red local
shared-network red-local {
subnet 192.168.100.0 netmask 255.255.255.0 {
option routers 192.168.100.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.100.255;
option domain-name-servers 192.168.100.2;
range 192.168.100.10 192.168.100.50;
}
}
Para que el servidor DNS (BIND) acepte actualizaciones dinámicas, es necesario preparar los archivos de zona con los permisos adecuados.
Cambie al directorio donde se almacenarán las zonas dinámicas y cree los archivos base:
cd /var/named/dynamic/
touch red-local.local.zone
touch 100.168.192.in-addr.arpa.zone
Establezca los permisos y propietario correctos para que el servicio named pueda modificarlos:
chmod 640 red-local.local.zone 100.168.192.in-addr.arpa.zone
chown named:named red-local.local.zone 100.168.192.in-addr.arpa.zone
Edite el archivo de zona de reenvío (/var/named/dynamic/red-local.local.zone) y añada el siguiente contenido mínimo:
$TTL 3600
@ IN SOA servidor.red-local.local. root.localhost. (
2025122901 ; Número de serie
1800 ; Refresh
900 ; Retry
604800 ; Expire
3600 ; TTL mínimo
)
IN NS servidor.red-local.local.
servidor IN A 192.168.100.2
Edite el archivo de zona de resolución inversa (/var/named/dynamic/100.168.192.in-addr.arpa.zone):
$TTL 3600
@ IN SOA servidor.red-local.local. root.localhost. (
2025122901 ; Número de serie
1800 ; Refresh
900 ; Retry
604800 ; Expire
3600 ; TTL mínimo
)
IN NS servidor.red-local.local.
$ORIGIN 100.168.192.in-addr.arpa.
2 IN PTR servidor.red-local.local.
El servidor DNS debe configurarse para permitir actualizaciones dinámicas utilizando una firma digital (TSIG key). Esto normalmente se hace dentro de una vista (view) apropiada en /etc/named.conf.
Edite el archivo de configuración de BIND:
vim /etc/named.conf
Dentro de la vista correspondiente (por ejemplo, view "local"), asegúrese de que las zonas dinámicas tengan la directiva allow-update configurada con la clave correcta:
view "local" {
match-clients { 127.0.0.0/8; 192.168.100.0/24; };
recursion yes;
zone "red-local.local" {
type master;
file "dynamic/red-local.local.zone";
allow-update { key "rndc-key"; };
};
zone "100.168.192.in-addr.arpa" {
type master;
file "dynamic/100.168.192.in-addr.arpa.zone";
allow-update { key "rndc-key"; };
};
// ... otras zonas
};
Para que BIND pueda escribir en los archivos de zona maestra, es necesario ajustar la política de SELinux:
setsebool -P named_write_master_zones 1
El siguiente procedimiento probablemente ya lo realizó si siguio la secuencia didáctica de los manuales de DHCP y DNS. En distribuciones que utilicen firewalld (como AlmaLinux, Rocky Linux o RHEL 8/9/10), debe permitirse el tráfico de los servicios DHCP y DNS:
firewall-cmd --permanent --add-service=dhcp
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload
💡 Nota: En sistemas que utilicen otros mecanismos de cortafuegos, este paso puede variar. La regla esencial es permitir los puertos UDP 67 (DHCP servidor) y puertos TCP y UDP 53 (DNS).
Aplique todos los cambios reiniciando los servicios. El mandato específico depende del sistema de inicio:
Para sistemas con systemctl (AlmaLinux/Rocky Linux/RHEL 8/9/10):
systemctl restart named
systemctl restart dhcpd
Para ALDOS o sistemas con SysVinit:
service named restart
service dhcpd restart
A partir de este momento, el servidor DHCP deberá actualizar dinámicamente el DNS cada vez que asigne o renueve una concesión a un cliente.
Para verificar que la integración funciona, puede simular una actualización usando el mandato nsupdate, que es la misma herramienta que utilizará internamente el servidor DHCP.
Conéctese al servidor DNS local utilizando la clave TSIG compartida:
nsupdate -k /etc/rndc.key
Dentro del intérprete de nsupdate, ejecute las siguientes órdenes para añadir un registro de prueba. Asegúrese de usar su dominio y bloque de IP:
server 127.0.0.1
update add prueba.red-local.local. 3600 A 192.168.100.20
send
update add 20.100.168.192.in-addr.arpa. 3600 PTR prueba.red-local.local.
send
quit
Si la operación tiene éxito (no devuelve errores), consulte los registros para confirmar:
host prueba.red-local.local 192.168.100.2
host 192.168.100.20 192.168.100.2
La salida debería mostrar la correspondencia correcta entre el nombre y la dirección IP. Para limpiar después de la prueba, use nsupdate nuevamente con las órdenes update delete.
Finalmente, supervice los registros del sistema en busca de actividad generada por un cliente real:
tail -f /var/log/messages
# o, en sistemas más recientes:
journalctl -f -u dhcpd -u named
Conecte un cliente a la red, configure su interfaz para usar DHCP y observe cómo aparecen las entradas de actualización dinámica en el registro.