Configuración de un servidor DNS con BIND9

Configuración de un servidor DNS con BIND9

BIND9 es uno de los servidores DNS más utilizados en entornos Linux y Unix. Permite gestionar zonas, reenviadores, seguridad DNSSEC, vistas por cliente y mucho más. En este artículo veremos, paso a paso, cómo instalar, configurar y asegurar un servidor DNS autoritativo y recursivo basado en BIND9.

1. Introducción y requisitos

  • Sistema operativo: Debian/Ubuntu (o derivadas).
  • Usuario: root o con privilegios sudo.
  • Conexión a Internet: para pruebas de resolución recursiva.
  • Puertos: UDP/TCP 53 abiertos.

2. Instalación de BIND9

  1. Actualiza los repositorios:
    # sudo apt update
  2. Instala BIND9:
    # sudo apt install bind9 bind9utils bind9-doc
  3. Verifica el servicio:
    # systemctl status bind9

3. Estructura de archivos y directorios

Ruta Descripción
/etc/bind/named.conf Archivo principal que incluye otros archivos de configuración.
/etc/bind/named.conf.options Opciones globales (forwarders, recursion, listen-on).
/etc/bind/named.conf.local Declaración de zonas locales (autoritativas).
/var/cache/bind Archivos de zona cargados y archivos temporales.
/etc/bind/rndc.key Clave TSIG para control remoto con rndc.

4. Configuración básica

4.1. named.conf.options

options {
    directory /var/cache/bind
    recursion yes                 // Permitir resolución recursiva
    allow-query { any }          // Permitir consultas DNS
    listen-on { 127.0.0.1          // Dirección local
                192.168.1.10 }    // IP del servidor DNS
    forwarders {
        8.8.8.8                   // Google DNS
        1.1.1.1                   // Cloudflare DNS
    }
    dnssec-validation auto        // Activar DNSSEC
    auth-nxdomain no              // Respuesta estándar para NXDOMAIN
    listen-on-v6 { any }
}

4.2. named.conf.local: Zonas autoritativas

zone ejemplo.com {
    type master
    file /etc/bind/zones/db.ejemplo.com
    allow-transfer { 192.168.1.11 } // Servidor esclavo
}

zone 1.168.192.in-addr.arpa {
    type master
    file /etc/bind/zones/db.192.168.1
}

4.3. Archivos de zona

TTL  86400
@   IN  SOA  ns1.ejemplo.com. admin.ejemplo.com. (
        2023081501   Serial
        3600         Refresh
        1800         Retry
        604800       Expire
        86400 )      Negative caching TTL

 Servidores de nombres
    IN  NS   ns1.ejemplo.com.
    IN  NS   ns2.ejemplo.com.

 Registros A
ns1 IN  A    192.168.1.10
ns2 IN  A    192.168.1.11
www IN  A    192.168.1.12

 Alias
ftp IN  CNAME www

5. Configuración avanzada

5.1. Vistas (views) por red o cliente

Permiten servir diferentes zonas o políticas según la IP origen.

view interna {
    match-clients { 192.168.1.0/24 }
    recursion yes
    zone ejemplo.com {
        type master
        file /etc/bind/zones/db.ejemplo.com.int
    }
}

view externa {
    match-clients { any }
    recursion no
    zone ejemplo.com {
        type master
        file /etc/bind/zones/db.ejemplo.com.ext
    }
}

5.2. Control remoto con rndc y TSIG

  1. Genera la clave:
    # rndc-confgen -a -b 512
  2. Reinicia el servicio para aplicar la nueva rndc.key.
  3. Prueba el control remoto:
    # rndc status

6. Seguridad y buenas prácticas

  • DNSSEC: Protege de manipulaciones. Genera claves con dnssec-keygen y firma zonas con dnssec-signzone.
  • ACLs: Define en named.conf.options quién puede consultar o transferir zonas.
  • Chroot: Ejecuta BIND en un entorno aislado si tu distribución lo soporta.
  • Actualizaciones: Mantén el paquete bind9 al día con apt upgrade.
  • Monitoreo: Utiliza herramientas como rndc dumpdb o dnstop para analizar tráfico.

7. Resolución y diagnósticos

  • dig: Consulta directa:
     dig @192.168.1.10 www.ejemplo.com
  • nslookup:
     nslookup www.ejemplo.com 192.168.1.10
  • Registro de BIND: /var/log/syslog o ficheros específicos según logging en named.conf.

8. Integración con VPN

Para ambientes aislados o multi-sede, se recomienda usar VPNs para que los servidores DNS internos sean accesibles de forma segura. Por ejemplo:

  • WireGuard: ligero, alto rendimiento y moderno.
  • OpenVPN: ampliamente adoptado y con muchas opciones de autentificación.

9. Conclusión

La implementación de un servidor DNS autoritativo y recursivo con BIND9 permite un control total sobre la resolución de nombres en tu red. Siguiendo estas pautas de configuración básica, avanzada y de seguridad tendrás un servicio robusto, eficiente y preparado para entornos de producción.

Para profundizar, consulta la documentación oficial de ISC BIND.

  • Hola 👋 , soy la IA de Linuxmind.dev, te puedo ayudar a aprender.
Gathering thoughts ...

Leave a Reply

Your email address will not be published. Required fields are marked *