Implementar servidores DNS en alta disponibilidad garantiza la continuidad del servicio y proporciona redundancia ante fallas. El diseño típico incluye múltiples servidores DNS: uno principal (master) y uno o más secundarios (slaves). Este manual detalla los pasos para configurar BIND9 en este escenario.
1. Preparativos iniciales
Antes de comenzar:
- Asegúrate de tener dos o más servidores (uno actuará como master y los demás como slaves).
- Todos los servidores deben tener BIND9 instalado:
sudo apt update sudo apt install bind9 bind9utils bind9-doc -y # Ubuntu/Debian sudo yum install bind bind-utils -y # CentOS/RHEL
- Define las IPs de los servidores. Ejemplo:
- Servidor Master:
192.168.1.10
- Servidor Slave:
192.168.1.11
- Servidor Master:
2. Configurar el servidor master
2.1 Configurar las zonas en el master
Edita el archivo /etc/bind/named.conf.local
:
sudo nano /etc/bind/named.conf.local
Agrega las zonas:
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
allow-transfer { 192.168.1.11; }; // IP del servidor slave
also-notify { 192.168.1.11; }; // Notifica cambios al slave
};
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192.168.1";
allow-transfer { 192.168.1.11; };
also-notify { 192.168.1.11; };
};
2.2 Crear los archivos de zona
Sigue el mismo formato descrito en la guía básica:
- Zona directa (
/etc/bind/db.example.com
):$TTL 604800
@ IN SOA ns.example.com. admin.example.com. (
2023120301 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
; Servidores DNS
@ IN NS ns.example.com.
; Registros A
ns IN A 192.168.1.10
www IN A 192.168.1.20
- Zona inversa (
/etc/bind/db.192.168.1
):$TTL 604800
@ IN SOA ns.example.com. admin.example.com. (
2023120301 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
; Servidores DNS
@ IN NS ns.example.com.
; Registros PTR
10 IN PTR ns.example.com.
20 IN PTR www.example.com.
2.3 Verificar configuración y reiniciar
sudo named-checkconf
sudo named-checkzone example.com /etc/bind/db.example.com
sudo named-checkzone 1.168.192.in-addr.arpa /etc/bind/db.192.168.1
sudo systemctl restart bind9
3. Configurar el servidor slave
3.1 Definir las zonas como esclavas
Edita /etc/bind/named.conf.local
en el servidor slave:
sudo nano /etc/bind/named.conf.local
Agrega las zonas:
zone "example.com" {
type slave;
file "/var/cache/bind/db.example.com";
masters { 192.168.1.10; }; // IP del servidor master
};
zone "1.168.192.in-addr.arpa" {
type slave;
file "/var/cache/bind/db.192.168.1";
masters { 192.168.1.10; };
};
3.2 Reiniciar el servicio
Verifica la configuración y reinicia BIND9:
sudo named-checkconf
sudo systemctl restart bind9
4. Configurar sincronización de zonas (transferencia de zona)
El servidor master envía las zonas al slave automáticamente cuando hay cambios. Para que funcione correctamente:
- Habilitar transferencias de zona en el master:
- Ya se agregó
allow-transfer
en la configuración del master.
- Ya se agregó
- Asegúrate de que el puerto 53 esté abierto en ambos servidores:
sudo ufw allow 53
sudo ufw reload
- Prueba la transferencia desde el slave:
sudo rndc retransfer example.com
sudo rndc retransfer 1.168.192.in-addr.arpa
5. Probar la configuración
Desde un cliente, realiza consultas DNS contra ambos servidores:
- Consulta directa al master:
dig @192.168.1.10 www.example.com
- Consulta directa al slave:
dig @192.168.1.11 www.example.com
- Consulta inversa:
dig -x 192.168.1.20 @192.168.1.11
6. Consideraciones de alta disponibilidad
- Configurar balanceo de carga DNS:
- Puedes usar soluciones como Keepalived o HAProxy para balancear peticiones DNS entre los servidores master y slave.
- Puedes usar soluciones como Keepalived o HAProxy para balancear peticiones DNS entre los servidores master y slave.
- Configurar TTL en registros:
- Un TTL bajo (ej. 300 segundos) permite una rápida conmutación si un servidor falla.
- Un TTL bajo (ej. 300 segundos) permite una rápida conmutación si un servidor falla.
- Monitorización:
- Configura herramientas como Nagios o Prometheus para monitorizar el estado de los servidores DNS.
7. Conclusión
Con este diseño, el servidor master gestiona las actualizaciones de las zonas, y los servidores slave proporcionan redundancia y balanceo de carga. Esto garantiza alta disponibilidad y resiliencia para el servicio DNS.