Cómo instalar un servidor DNS con BIND en Rocky Linux 9

BIND o Berkeley Internet Name Domain es un software de servidor DNS gratuito y de código abierto. Es uno de los programas de servidor DNS más populares, utilizado por más del 70% de los DNS de Internet. BIND existe desde los años 80 y es conocido por su flexibilidad, rendimiento y funciones. BIND puede utilizarse tanto como DNS autoritativo como DNS de caché, y admite equilibrio de carga, actualización dinámica, DNS dividido, DNSSEC, IPv6 y muchas más.

El software DNS BIND es uno de los servidores DNS más fiables para sistemas operativos tipo Unix. Está disponible en la mayoría de las distribuciones de Linux y proporciona herramientas adicionales para diagnosticar y probar el servidor DNS.

Este tutorial te mostrará cómo configurar el servidor DNS con BIND en un servidor Rocky Linux 9. BIND es uno de los programas de servidor DNS más populares, que ofrece varias funciones, como DNS autoritativo, DNS sólo en caché, equilibrio de carga DNS básico, DNS dividido, DNSSEC, IPv6 y muchas más.

Requisitos previos

Con este tutorial, configurarás e implementarás un Servidor DNS BIND con arquitectura Maestro-Esclavo. Para ello, necesitarás dos servidores Linux Rocky. Además, necesitarás privilegios de root/administrador en cada servidor.

Para configurar un servidor DNS público que pueda gestionar tu dominio (Servidor DNS Autoritativo), también deberás tener registrado el nombre de dominio y configurados los «Registros Glue».

Además, en esta guía, supondremos que tienes SELinux ejecutándose con el modo «permisivo».

Preparar el sistema

Para empezar con esta guía, deberás configurar el FQDN (Nombre de Dominio Completamente Cualificado) correcto en cada uno de tus servidores Rocky Linux. Esto puede hacerse mediante la utilidad de comandos«hostnamectl» y el archivo «/etc/hosts«.

A continuación se detallan los servidores que se utilizarán como ejemplo para esta guía:

Hostname    IP Address          FQDN                    Used as
---------------------------------------------------------------
ns1         192.168.5.100       ns1.hwdomain.io         Master
ns2         192.168.5.120       ns2.hwdomain.io         Slave

En el servidor maestro, ejecuta la siguiente utilidad de comandos hostnamectl para configurar el fqdn a‘ns1.hwdomain.io‘.

sudo hostnamectl set-hostname ns1.hwdomain.io

A continuación, también debes ejecutar el comando hostnamectl en el servidor esclavo para configurar el fqdn a ‘ns2.hwdomain.io’.

sudo hostnamectl set-hostname ns2.hwdomain.io

A continuación, abre el archivo ‘/etc/hosts’ tanto en el servidor Maestro como en el Esclavo utilizando el siguiente comando del editor nano.

sudo nano /etc/hosts

Añade la siguiente línea al archivo.

192.168.5.100   ns1.hwdomain.io     ns1
192.168.5.120   ns2.hwdomain.io     ns2

Guarda el archivo y sal del editor cuando hayas terminado.

Por último, ejecuta el siguiente comando ‘hostname’ para verificar el fqdn en cada servidor. Deberías ver que el servidor Maestro tiene el fqdn como‘ns1.hwdomain.io‘, y el servidor Esclavo tiene el fqdn‘ns2.hwdomain.io‘.

sudo hostname -f

A continuación se muestra el resultado del servidor maestro.

servidor maestro fqdn

Y a continuación la salida del servidor Esclavo.

fqdn servidor esclavo

Con el fqdn configurado, ya estás listo para instalar BIND en los servidores Rocky Linux.

Instalar paquetes BIND

Por defecto, el repositorio AppStream de Rocky Linux proporciona la última versión estable del paquete BIND. En el momento de escribir esto, la versión estable actual de BIND es la v9.16.

En este paso, instalarás los paquetes BIND en los servidores Maestro y Esclavo. A continuación, configura BIND para que se ejecute sólo en el IPv4, y configura el firewalld para permitir el puerto DNS.

Ejecuta el siguiente comando dnf para instalar los paquetes BIND en los servidores Maestro y Esclavo. Cuando se te pida confirmación, introduce y para confirmar y pulsa ENTER para continuar.

sudo dnf install bind bind-utils

instalar bind named

Una vez instalados los paquetes BIND, abre la configuración‘/etc/sysconfig/named‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/sysconfig/named

Añade la opción por defecto‘OPTIONS=..’ con la siguiente línea. Esta opción de comando para ‘bind’ o ‘named’ ejecutará el BIND sólo en IPv4.

OPTIONS="-4"

Guarda el archivo y sal del editor cuando hayas terminado.

A continuación, ejecuta la siguiente utilidad de comandos systemctl para iniciar y habilitar el servicio BIND ‘named‘. El servicio «named» debería estar ahora en ejecución y habilitado, y se iniciará automáticamente al arrancar el sistema.

sudo systemctl start named
sudo systemctl enable named

iniciar activar llamado

Ahora verifica el servicio ‘named’ para asegurarte de que se está ejecutando y está habilitado mediante el siguiente comando.

sudo systemctl is-enabled named
sudo systemctl status named

Recibirás una salida similar a la siguiente: El servicio BIND «named» está activado y se está ejecutando.

verificar nombre

Con el servicio BIND ‘named’ en ejecución, tendrás que añadir el puerto DNS al cortafuegos, que está activado y en ejecución por defecto en Rocky Linux.

Ejecuta el siguiente comando firewall-cmd para añadir el servicio DNS al firewalld. A continuación, recarga el firewalld para aplicar los cambios.

sudo firewall-cmd --add-service=dns --permanent
sudo firewall-cmd --reload

Si compruebas la lista de servicios habilitados en firewalld, deberías ver que el servicio DNS está habilitado. Ejecuta el siguiente comando firewall-cmd para comprobar la lista de servicios.

sudo firewall-cmd --list-services

Salida:

configurar firewalld

Llegados a este punto, ya has terminado la configuración de fqdn, has instalado los paquetes BIND y también has configurado el firewalld. Con esto en mente, ya puedes empezar a configurar el BIND Master en el servidor Master.

Configurar el servidor DNS BIND Maestro

En este paso, configurarás el servidor BIND Master utilizando el Linux Rocky‘ns1.hwdomain.io‘ y la dirección IP del servidor es‘192.168.5.100‘. Asegúrate de que ejecutas los siguientes comandos en el servidor Maestro.

Configurarás el servidor BIND Maestro con los siguientes pasos:

  • La Configuración Básica incluirá la configuración de las ACL (Listas de Control de Acceso), la configuración de la dirección IP en la que se ejecutará el servicio BIND, la configuración de los reenviadores, y muchas cosas más.
  • Configuración de Zonas – Aquí es donde creas configuraciones para tu dominio. Esto incluye la configuración del dominio principal y la configuración del DNS inverso.

Configuración básica

La configuración BIND por defecto en una distribución basada en RHEL está disponible en ‘/etc/named.conf’.

Ahora abre el archivo‘/etc/named.conf’ utilizando el siguiente comando del editor nano.

sudo nano /etc/named.conf

Cambia la configuración por defecto con las siguientes líneas.

acl "trusted" {
        192.168.5.100;    # ns1 - or you can use localhost for ns1
        192.168.5.120;    # ns2
        192.168.5.0/24;  # trusted networks
};

options {
listen-on port 53 { 192.168.5.100; };

// listen-on-v6 port 53 { ::1; };

directory       «/var/named»;
dump-file       «/var/named/data/cache_dump.db»;
statistics-file «/var/named/data/named_stats.txt»;
memstatistics-file «/var/named/data/named_mem_stats.txt»;
secroots-file   «/var/named/data/named.secroots»;
recursing-file  «/var/named/data/named.recursing»;

allow-query     { localhost; trusted; };

recursion yes;
allow-recursion { trusted; };
allow-transfer { localhost; 192.168.5.120; };

forwarders {
8.8.8.8;
1.1.1.1;
};

Guarda el archivo y sal del editor cuando hayas terminado.

archivo named.conf

Con esta configuración, establecerás BIND con las siguientes configuraciones:

  • Configura una ACL‘trusted‘ que permita cualquier consulta desde redes locales.
  • Ejecuta el servicio BIND en‘192.168.5.100‘ con el puerto por defecto’53‘.
  • Activa la recursividad y permite la recursividad desde las redes de la ACL ‘deconfianza‘.
  • Permite la transferencia de zonas al servidor esclavo con la dirección IP«192.168.5.120«.
  • Configura los reenviadores con el servidor DNS público 1.1.1.1 de Cloudflare y 8.8.8.8 de Google.

A continuación, ejecuta el siguiente comando para verificar la configuración de BIND‘/etc/named.conf‘.

sudo named-checkconf /etc/named.conf

Por último, ejecuta la siguiente utilidad de comandos systemctl para reiniciar el servicio ‘named’ de BIND y aplicar los cambios.

sudo systemctl restart named

Ya has terminado la configuración básica del servidor DNS BIND.

Configurar zonas

Ahora vas a configurar zonas con el Servidor DNS BIND. Crearás un nuevo Servidor DNS con la dirección ‘ns1.hwdomain.io’ y ‘ns2.hwdomain.io’.

Para empezar, abre la configuración BIND ‘/etc/named.conf‘ mediante el comando del editor nano que aparece a continuación.

sudo nano /etc/named.conf

Añade la siguiente configuración al final de la línea.

include "/etc/named/zones.conf.local";

Guarda el archivo y sal del editor cuando hayas terminado.

incluir archivos de zona

A continuación, crea una nueva configuración ‘/etc/named/zones.conf.local ‘ utilizando el editor nano que aparece a continuación.

sudo nano /etc/named/zones.conf.local

Añade las siguientes líneas al archivo.

zone "hwdomain.io" {
    type master;
    file "db.hwdomain.io";        # zone file path
    allow-transfer { 192.168.5.120; };           # ns2 IP address - secondary DNS
};

zone «5.168.192.in-addr.arpa» {
type master;
file «db.192.168.5»;  # subnet 192.168.5.0/24
allow-transfer { 192.168.5.120; };  # ns2 private IP address – secondary DNS
};

Guarda y cierra el archivo cuando hayas terminado.

Con esta configuración, definirás las siguientes configuraciones:

  • Crea dos zonas para el dominio‘hwdomain.io‘ y el DNS inverso‘5.168.192.in-addr.arpa‘.
  • Ambas zonas de tipo«maestro«.
  • Permite la transferencia de zonas al servidor DNS esclavo que se ejecutará en la dirección IP del servidor‘192.168.5.120‘.

lista de zonas

A continuación, crea una nueva configuración de zona DNS, ‘/var/named/db.hwdomain.io’, utilizando el siguiente comando del editor nano.

sudo nano /var/named/db.hwdomain.io

Añade las siguientes líneas al archivo.

;
; BIND data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     ns1.hwdomain.io. admin.hwdomain.io. (
                              3         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;

; NS records for name servers
IN      NS      ns1.hwdomain.io.
IN      NS      ns2.hwdomain.io.

; A records for name servers
ns1.hwdomain.io.          IN      A       192.168.5.100
ns2.hwdomain.io.          IN      A       192.168.5.120

; Mail handler or MX record for the domain hwdomain.io
hwdomain.io.    IN     MX   10   mail.hwdomain.io.

; A records for domain names
hwdomain.io.            IN      A      192.168.5.50
mail.hwdomain.io.       IN      A      192.168.5.15

Guarda y cierra el archivo cuando hayas terminado.

En este ejemplo, establecerás zonas con las siguientes configuraciones:

  • Define los registros del servidor de nombres«ns1.hwdomain.io» con la dirección IP«192.168.5.100» y el«ns2.hwdomain.io» con la dirección IP«192.168.5.120«.
  • Define dos dominios adicionales, ‘hwdomain.io’, que se resolverá en la dirección IP del servidor ‘192.168.5.50′ y el dominio‘mail.hwdomain.io’ en la dirección IP‘192.168.5.15′.
  • También crearás un registro MX para el dominio ‘hwdomain.io’ que gestionará el servidor de correo ‘ mail.hwdomain.io.

zonas servidor de nombres

A continuación, empezarás a configurar el DNS inverso para el dominio hwdomain.io.

Crea una nueva configuración DNS inversa ‘/var/named/db.192.168.5‘ utilizando el siguiente comando del editor nano.

sudo nano /var/named/db.192.168.5

Añade las siguientes líneas al archivo.

;
; BIND reverse data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     ns1.hwdomain.io. admin.hwdomain.io. (
                              3         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;

; name servers – NS records
IN      NS      ns1.hwdomain.io.
IN      NS      ns2.hwdomain.io.

; PTR Records
100   IN      PTR     ns1.hwdomain.io.    ; 192.168.5.100
120   IN      PTR     ns2.hwdomain.io.    ; 192.168.5.120
50    IN      PTR     hwdomain.io.        ; 192.168.5.50
15    IN      PTR     mail.hwdomain.io.   ; 192.168.5.15

Guarda y cierra el archivo cuando hayas terminado.

Con esta configuración, establecerás el DNS inverso o registros PTR como se indica a continuación.

  • En la configuración del DNS inverso, también definirás el servidor de nombres ns1.hwdomain. io y ns2.hwdomain.io.
  • Cada configuración de DNS inverso utiliza el último número de la dirección IP que se resuelve a cada dominio. En este ejemplo, el servidor de nombres ns1.h wdomain.io con dirección IP «192.168.5.100», y el registro PTR debe ser«100«.
  • El resto de los registros PTR son iguales a los descritos anteriormente.

zones reverse dns

Llegados a este punto, has creado la configuración de dos zonas para el dominio«hwdomain.io» y has creado un servidor de nombres«ns1.hwdomain.io» y«ns2.hwdomain.io«.

Ahora ejecuta el siguiente comando chmod para cambiar la propiedad de ambas configuraciones de zona.

sudo chown -R named: /var/named/{db.hwdomain.io,db.192.168.5}

A continuación, comprueba los archivos de configuración de zona mediante la utilidad de comandos«named-checkconf» que aparece a continuación.

sudo named-checkconf
sudo named-checkzone hwdomain.io /var/named/db.hwdomain.io
sudo named-checkzone 5.168.192.in-addr.arpa /var/named/db.192.168.5

Si la configuración de BIND es correcta, obtendrás un resultado como el de la siguiente captura de pantalla.

configurar servidor dns master bind

Por último, ejecuta el siguiente comando systemctl para reiniciar el servicio BIND ‘named’ y aplicar los cambios. A continuación, comprueba el estado del servicio BIND para asegurarte de que se está ejecutando.

sudo systemctl restart named
sudo systemctl status named

Recibirás una salida similar a la siguiente: el servicio BIND ‘named‘ se está ejecutando y has finalizado la configuración del BIND Master.

reiniciar verificar maestro

En el siguiente paso, configurarás el servidor BIND Esclavo.

Configurar el servidor DNS BIND Esclavo

Tras configurar el servidor DNS Maestro, empezarás a configurar el servidor BIND Esclavo en el servidor ‘ns2.hwdomain.io’ con la dirección IP ‘192.168.5.120’.

La configuración básica de ‘named.conf’ es similar a la del BIND Maestro, y para los archivos de zona, puedes definir el nombre del archivo sin crear un archivo real en el servidor BIND Esclavo.

Antes de empezar, asegúrate de que ejecutas los siguientes comandos en el servidor BIND Esclavo.

Ahora abre la configuración BIND‘/etc/named.conf‘ en el servidor Esclavo mediante el comando editor nano que aparece a continuación.

sudo nano /etc/named.conf

Cambia la configuración por defecto con las siguientes líneas.

acl "trusted" {
        192.168.5.100;    # ns1 - or you can use localhost for ns1
        192.168.5.120;    # ns2
        192.168.5.0/24;  # trusted networks
};

options {
listen-on port 53 { 192.168.5.120; };

//listen-on-v6 port 53 { ::1; };

directory       «/var/named»;
dump-file       «/var/named/data/cache_dump.db»;
statistics-file «/var/named/data/named_stats.txt»;
memstatistics-file «/var/named/data/named_mem_stats.txt»;
secroots-file   «/var/named/data/named.secroots»;
recursing-file  «/var/named/data/named.recursing»;

allow-query     { any; };

recursion yes;
allow-recursion { trusted; };
allow-transfer { none; };

forwarders {
8.8.8.8;
1.1.1.1;
};

};

La configuración es similar a la del servidor BIND Maestro, y a continuación se indican algunas diferencias en las configuraciones.

  • El servicio BIND se ejecutará en la dirección IP«192.168.5.120» del servidor Esclavo.
  • La recursividad está activada, pero el «allow-transfer» está configurado a«none«.

named.conf esclavo dns bind

Ahora añade la siguiente línea al final del archivo ‘named.conf’ para definir las zonas.

include "/etc/named/zones.conf.local";

Guarda el archivo y sal del editor cuando hayas terminado.

A continuación, crea una nueva configuración ‘/etc/named/zones.conf.local ‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/named/zones.conf.local

Añade las siguientes líneas al archivo.

zone "hwdomain.io" {
    type slave;
    file "slaves/db.hwdomain.io";
    masters { 192.168.5.100; };           # ns1 IP address - master DNS
};

zone «5.168.192.in-addr.arpa» {
type slave;
file «slaves/db.192.168.5»;
masters { 192.168.5.100; };  # ns1 IP address – master DNS
};

Guarda y cierra el archivo cuando hayas terminado.

Con esto, definirás algunas configuraciones a continuación en el servidor BIND Esclavo:

  • Define dos zonas para el dominio«hwdomain.io» y su DNS inverso.
  • El tipo de ambas zonas es«esclavo«.
  • El archivo de zona de cada una se tomará del directorio ‘/var/named/slaves‘, que se transfiere desde el servidor BIND Maestro.

ajustes de zona

A continuación, ejecuta la siguiente utilidad de comandos ‘named-checkconf’ para verificar las configuraciones del BIND. A continuación, reinicia el servicio ‘named’ de BIND en el servidor Esclavo mediante el comando systemctl como se indica a continuación.

sudo named-checkconf
sudo systemctl restart named

No tendrás ningún mensaje de error si la configuración de BIND es correcta.

Por último, ejecuta el siguiente comando systemctl para verificar el servicio BIND ‘named‘ en el servidor Esclavo y asegurarte de que el servicio se está ejecutando.

sudo systemctl status named

Ahora recibirás una salida similar a la siguiente: el servicio BIND ‘named’ se está ejecutando en el servidor BIND Esclavo.

comprobar nombre

Llegados a este punto, habrás finalizado la instalación del DNS BIND con la arquitectura Maestro-Esclavo. Ahora estarás listo para empezar a probar desde la máquina cliente.

Pruebas desde el cliente

Este ejemplo utiliza un sistema Debian como máquina cliente, así que instala algunos paquetes a continuación a través del APT antes de empezar.

sudo apt install dnsutils bind9-utils

Introduce y cuando se te pida confirmación y pulsa ENTER para continuar.

instalar dnsutils

A continuación, ejecuta el siguiente comando para eliminar el archivo de enlace predeterminado«/etc/resolv.conf» y crea un nuevo archivo utilizando el editor nano.

sudo unlink /etc/resolv.conf
sudo nano /etc/resolv.conf

Añade la siguiente configuración al archivo. En la siguiente configuración estamos definiendo tres resolvedores diferentes, el BIND DNS Master, el servidor BIND DNS Secundario y el resolvedor DNS público de Cloudflare. Cuando la máquina cliente solicite información sobre el nombre de dominio, la información se tomará del resolvedor DNS, de arriba a abajo.

nameserver 192.168.5.100
nameserver 192.168.5.120
nameserver 1.1.1.1
search hwdomain.io

Guarda y cierra el archivo cuando hayas terminado.

Ahora estás preparado para verificar tu servidor DNS desde la máquina cliente.

Ejecuta el comando dig que aparece a continuación para comprobar el nombre de dominio «hwdomain.io» y «mail.hwdomain.io». Y deberías ver que«hwdomain.io» está resuelto en la dirección IP del servidor «192.168.5.50«, mientras que el subdominio «mail.hwdomain.io» está gestionado por la dirección IP del servidor«192.168.5.15«.

dig hwdomain.io +short
dig hwdomain.io
dig mail.hwdomain.io +short
dig mail.hwdomain.io

Verificando el nombre de dominio hwdomain.io.

verificar dominio

Verificando el subdominio mail.hwdomain.io.

verificar nombre de dominio

A continuación, ejecuta el siguiente comando dig para comprobar el gestor de correo del nombre de dominio«hwdomain.io». Y deberías obtener la salida de que el «mail.hwdomain.io» gestiona el correo del dominio principal «hwdomain.io».

dig hwdomain.io MX +short
dig hwdomain.io MX

verificar registros mx

Puedes verificar la configuración de la zona inversa para tu nombre de dominio utilizando el comando nslookup.

Ejecuta el siguiente comando nslookup para comprobar y verificar el DNS inverso de algunas direcciones IP.

Ahora deberías ver que la dirección IP«192.168.5.100» está revertida al servidor de nombres«ns1.hwdomain.io», la dirección IP«192.168.5.120» está revertida al servidor de nombres«ns2.hwdomain.io«, y la dirección IP «192.168.5.50″ se invierte al nombre de dominio principal «hwdomain.io», y por último la dirección IP«192.168.5.15» se invierte al subdominio«mail.hwdomain.io«.

nslookup 192.168.5.100
nslookup 192.168.5.120
nslookup 192.168.5.50
nslookup 192.168.5.15

verificar nslookup

Llegados a este punto, has finalizado la instalación del Servidor DNS BIND con arquitectura Maestro-Esclavo en Rocky Linux. También has aprendido a probar el Servidor DNS mediante varias utilidades de comandos como dig y nslookup.

Conclusión

Enhorabuena! a lo largo de este tutorial, has aprendido la instalación y configuración del Servidor DNS BIND en servidores Rocky Linux 9. Has configurado con éxito el Servidor DNS BIND Maestro-Esclavo utilizando dos servidores Rocky Linux diferentes. Además, has aprendido los comandos básicos de Dig y Nslookup para comprobar y verificar los registros DNS y la configuración.

También te podría gustar...