Este artículo detalla cómo configurar un servidor DNS BIND para ofrecer respuestas personalizadas basadas en la red de origen del cliente, implementando un sistema de "CDN inteligente" a través de la funcionalidad de views.
Modificaciones en el Archivo de Configuración Principal (named.conf)
Es crucial definir las listas de control de acceso (ACLs) antes de la sección options. La directiva views permite segmentar las respuestas DNS. Cada view se asocia a una ACL específica y a un conjunto de zonas.
Archivo de Configuración Principal (/etc/named.conf)
# Definición de ACLs basadas en rangos de IP
acl red_beijing {
192.168.3.0/24;
};
acl red_shanghai {
192.168.2.0/24;
};
acl red_general {
any;
};
options {
// listen-on port 53 { 127.0.0.1; }; // Descomentar si se necesita escuchar en IPv4
listen-on-v6 port 53 { ::1; };
directory "/var/named";
// ... otros parámetros de options ...
allow-query { any; };
allow-transfer { none; };
dnssec-enable no;
dnssec-validation no;
// Definición de Views para respuestas geolocalizadas
view beijing_view {
match-clients { red_beijing; };
include "/etc/named.rfc1912.zones.beijing"; // Zona específica para Beijing
};
view shanghai_view {
match-clients { red_shanghai; };
include "/etc/named.rfc1912.zones.shanghai"; // Zona específica para Shanghai
};
view default_view { // View para otros clientes
match-clients { red_general; };
include "/etc/named.rfc1912.zones.other"; // Zona por defecto
};
include "/etc/named.root.key";
};
Configuración de Archivos de Zona por Vista
Se crearán archivos de configuración de zona separados para cada view, permitiendo la inclusión de diferentes registros DNS según la red del cliente.
Creación de Archivos de Zona por Vista
# Copiar el archivo de zonas base para cada vista
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.beijing
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.shanghai
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.other
Archivo de Configuración de Zona para Beijing (/etc/named.rfc1912.zones.beijing)
zone "." IN {
type hint;
file "named.ca";
};
// Asociación de la zona 'hxg.com' con el archivo de datos específico para Beijing
zone "hxg.com" IN {
type master;
file "hxg.com.zone.beijing";
};
Archivo de Configuración de Zona para Shanghai (/etc/named.rfc1912.zones.shanghai)
zone "." IN {
type hint;
file "named.ca";
};
// Asociación de la zona 'hxg.com' con el archivo de datos específico para Shanghai
zone "hxg.com" IN {
type master;
file "hxg.com.zone.shanghai";
};
Archivo de Configuración de Zona para Otros (/etc/named.rfc1912.zones.other)
zone "." IN {
type hint;
file "named.ca";
};
// Asociación de la zona 'hxg.com' con el archivo de datos por defecto
zone "hxg.com" IN {
type master;
file "hxg.com.zone.other";
};
Creación de Archivos de Base de Datos de Zona Específicos
Se crearán archivos de base de datos de zona distintos para cada vista, cada uno conteniendo registros A para el servicio 'ap' dirigiendo a diferentes direcciones IP.
Copia y Modificación de Archivos de Base de Datos
# Copiar el archivo de base de datos de zona base
cp -p /var/named/hxg.com.zone /var/named/hxg.com.zone.beijing
cp -p /var/named/hxg.com.zone /var/named/hxg.com.zone.shanghai
cp -p /var/named/hxg.com.zone /var/named/hxg.com.zone.other
Archivo de Base de Datos de Zona para Beijing (/var/named/hxg.com.zone.beijing)
$TTL 1D
@ IN SOA ns1.hxg.com. admin.hxg.com. (
51 ; Serial
2H ; Refresh
10M ; Retry
1W ; Expire
1D ) ; Negative Cache TTL
NS ns1.hxg.com.
ns1 A 192.168.3.102 ; IP del servidor DNS para Beijing
ap A 1.1.1.1 ; IP del servicio 'ap' para Beijing
www CNAME ap.hxg.com.
Archivo de Base de Datos de Zona para Shanghai (/var/named/hxg.com.zone.shanghai)
$TTL 1D
@ IN SOA ns1.hxg.com. admin.hxg.com. (
51 ; Serial
2H ; Refresh
10M ; Retry
1W ; Expire
1D ) ; Negative Cache TTL
NS ns1.hxg.com.
ns1 A 192.168.3.102 ; IP del servidor DNS para Shanghai
ap A 2.2.2.2 ; IP del servicio 'ap' para Shanghai
www CNAME ap.hxg.com.
Archivo de Base de Datos de Zona por Defecto (/var/named/hxg.com.zone.other)
$TTL 1D
@ IN SOA ns1.hxg.com. admin.hxg.com. (
51 ; Serial
2H ; Refresh
10M ; Retry
1W ; Expire
1D ) ; Negative Cache TTL
NS ns1.hxg.com.
ns1 A 192.168.3.102 ; IP del servidor DNS general
ap A 3.3.3.3 ; IP del servicio 'ap' general
www CNAME ap.hxg.com.
Verificación de la Configuración
Antes de reiniciar el servicio BIND, se deben verificar la sintaxis de los archivos de configuración y las zonas.
Comprobación de Sintaxis de named.conf
named-checkconf
Comprobación de Sintaxis de Archivos de Zona
named-checkzone hxg.com /var/named/hxg.com.zone.beijing
named-checkzone hxg.com /var/named/hxg.com.zone.shanghai
named-checkzone hxg.com /var/named/hxg.com.zone.other
Pruebas de Resolución DNS
Se configuran direcciones IP de cliente en redes diferentes para simular las condiciones de prueba.
Configuración de IP de Cliente de Ejemplo
# Cliente en la red de Shanghai
ip addr add 192.168.2.101/24 dev eth0
# Cliente en la red de Beijing (simulado, si es necesario)
# ip addr add 192.168.3.101/24 dev eth0
Ejecución de Consultas DNS
Se utiliza la herarmienta dig para consultar el servidor DNS BIND (192.168.3.102) desde diferentes clientes y verificar las respuestas esperadas.
Consulta desde un Cliente en la Red de Beijing
dig www.hxg.com @192.168.3.102
Resultado Esperado: La respuesta para ap.hxg.com debería ser 1.1.1.1.
Conuslta desde un Cliente en la Red de Shanghai
dig www.hxg.com @192.168.2.102
Resultado Esperado: La respuesta para ap.hxg.com debería ser 2.2.2.2.
Consulta desde un Cliante Local (localhost)
dig www.hxg.com @127.0.0.1
Resultado Esperado: La respuesta para ap.hxg.com debería ser 3.3.3.3 (según la configuración de red_general).