Instalar Bind

Configurar un servidor de sistema de nombres de dominio (DNS) es una tarea crucial para los administradores de sistemas. BIND es una de las soluciones de software DNS más utilizadas, conocida por su fiabilidad y flexibilidad. Este artículo describe el proceso de configuración de un servidor BIND en Debian, proporcionándole instrucciones detalladas, consejos para la resolución de problemas y mejores prácticas para garantizar una instalación y configuración sin problemas.

1. Instalación

Actualizar las listas de paquetes del sistema para asegurarse de que está instalando las últimas versiones:

apt update

Instalar los paquetes BIND, las utilidades y las herramientas de búsqueda DNS.

apt install bind9 bind9utils dnsutils

Verificar la instalación

named -v

2. Archivos de configuración

BIND utiliza varios archivos de configuración ubicados en /etc/bind/.

named.conf es el archivo de configuración principal que incluye otros archivos de configuración named.conf.options contiene opciones globales para el servidor DNS named.conf.local aqui se definen los archivos de zona locales

3. Opciones de configuración

Configuración de los reenviadores

nano /etc/bind/named.conf.options

Añada la siguiente configuración:

options {
    directory "/var/cache/bind";
    recursion yes;
    allow-recursion { trusted; };
    listen-on { 192.168.1.10; };
    allow-transfer { none; };

    forwarders {
        8.8.8.8;
        8.8.4.4;
    };

    dnssec-validation auto;

    auth-nxdomain no;    # conforme a RFC1035
    listen-on-v6 { any; };
};

Esta configuración establece reenviadores (utilizando los servidores DNS de Google), habilita la recursividad para clientes de confianza y configura interfaces de escucha.

Definición de listas de control de acceso (ACL)

Para restringir las consultas a redes de confianza, añada una ACL al principio del archivo named.conf.options:

acl "trusted" {
    192.168.1.0/24;
    localhost;
    localnets;
};

4. Configuración de zonas

Configure las zonas directa e inversa para su dominio.

Configuración de la zona directa

Agregue la siguiente definición de zona:

zone "dominio.edu.ar" {
    type master;
    file "/etc/bind/zones/db.dominio.edu.ar";
    allow-transfer { none; };
};

Para mantener la configuración ordenada, cree un nuevo directorio para los archivos de zona:

mkdir /etc/bind/zones

Cree el archivo de zona directa:

nano /etc/bind/zones/db.dominio.edu.ar

Agregue el siguiente contenido:

$TTL    604800
@       IN      SOA     ns1.dominio.edu.ar. admin.dominio.edu.ar. (
                  3     ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
@       IN      NS      ns1.dominio.edu.ar.
@       IN      A       192.168.1.10
ns1     IN      A       192.168.1.10
www     IN      A       192.168.1.10

Configuración de la zona inversa

Añada la zona inversa a named.conf.local:

zone "1.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/db.192.168.1";
    allow transfer { none; };
};

Cree el archivo de zona inversa

nano /etc/bind/zones/db.192.168.1

Agregue el siguiente contenido:

$TTL    604800
@       IN      SOA     ns1.dominio.edu.ar. admin.dominio.edu.ar. (
                  3     ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative cache TTL
;
@       IN      NS      ns1.ejemplo.com.
10      IN      PTR     ns1.ejemplo.com.
10      IN      PTR     www.dominio.edu.ar.

5. Prueba de la configuración

Antes de reiniciar el servicio BIND, es fundamental comprobar que no haya errores de configuración.

Comprobación de sintaxis

named-checkconf

Si no ve nada es que no hay errores.

Validación del archivo de zona

named-checkzone dominio.edu.ar /etc/bind/zones/db.dominio.edu.ar
named-checkzone 1.168.192.in-addr.arpa /etc/bind/zones/db.192.168.1

Estos comandos deberían devolver «OK» si los archivos de zona tienen el formato correcto.

6. Iniciar y habilitar BIND

Ahora que ha configurado BIND, inicirá el servicio y lo habilitará para que se inicie al arrancar el sistema.

systemctl start bind9
systemctl enable bind9

Comprobar el estado de BIND

systemctl status bind9

Asegúrese de que el servicio está activo y funcionando sin errores.

7. Probar la resolución DNS

Usando el comando dig

Probar la búsqueda directa:

dig @192.168.1.10 www.dominio.edu.ar

Probar la búsqueda inversa:

dig @192.168.1.10 -x 192.168.1.10

Usanodo el comando nslookup

Prueba de búsqueda directa:

nslookup www.dominio.edu.ar 192.168.1.10

Prueba de búsqueda inversa:

nslookup 192.168.1.10 192.168.1.10

Solución de problemas comunes

Incluso con una configuración cuidadosa, es posible que surjan algunos problemas.

El servicio BIND no se inicia

Si BIND no se inicia, revise los registros del sistema:

journalctl -u bind9

Busque mensajes de error que puedan indicar problemas de configuración.

Error en la resolución de nombres

Si la resolución de nombres no funciona:

  • Verifique que su cliente esté utilizando el servidor DNS correcto.

  • Compruebe la configuración del firewall para asegurarse de que el puerto 53 (TCP y UDP) esté abierto.

  • Revise los archivos de zona en busca de errores tipográficos o direcciones IP incorrectas.

Fallo en las transferencias de zona

Si tiene problemas con las transferencias de zona:

  • Compruebe la directiva allow-transfer en la configuración de su zona.

  • Verifique que la IP del servidor DNS secundario esté correctamente indicada.

  • Asegúrese de que el número de serie del registro SOA se haya incrementado después de los cambios.

Consideraciones de seguridad

Proteger su servidor BIND resulta esencial para garantizar la seguridad de la infraestructura DNS y prevenir posibles ataques que puedan comprometer la integridad, disponibilidad o confidencialidad de los servicios de red.

Implemente DNSSEC

DNSSEC añade una capa adicional de seguridad mediante la firma digital de los registros DNS. Visite el artículo dedicado a habilitar DNSSEC

Restringir las transferencias de zona

Limite las transferencias de zona solo a los servidores DNS secundarios autorizados:

allow-transfer { 192.168.1.11; };

Utilizar listas de control de acceso

Implemente ACL para restringir el acceso a las consultas solo a clientes de confianza.

Optimizar el rendimiento de BIND

Ajuste el tamaño de la caché en función de la memoria disponible de su servidor para garantizar el rendimiento óptimo:

options {
    ...
    max-cache-size 256M;
    ...
};

Habilite el registro de consultas

Habilite el registro de consultas con el fin de facilitar la resolución de problemas, analizar el comportamiento del servidor y supervisar el rendimiento general del sistema DNS.

logging {
    channel query_logging {
        file "/var/log/named/query.log" versions 3 size 5m;
        print-time yes;
    };
    category queries { query_logging; };
};

Si la ruta /var/log/named/ no existe, deberá crearla y asignar los permisos al usuario con el cual se ejecuta bind.

mkdir /var/log/named/
chgrp bind /var/log/named/ -R

Bind no crea automáticamente los archivos de log, así que debemos encargarnos de ello. Además de cerciorarnos que tenga el propietario y los permisos adecuados.

touch /var/log/named/query.log
chmod 664 /var/log/named/query.log
chgrp bind /var/log/named/query.log