DNS Server · 15 min read · Sep 08, 2025

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 software de servidor DNS más populares, utilizado por más del 70% de los DNS en Internet. BIND ha existido desde la década de 1980, siendo conocido por su flexibilidad, rendimiento y características. BIND puede ser utilizado tanto como DNS autoritativo como DNS de caché, y soporta balanceo de carga, actualización dinámica, DNS dividido, DNSSEC, IPv6, y muchos más.

El software DNS BIND es uno de los servidores DNS más confiables para sistemas operativos similares a Unix. Está disponible en la mayoría de las distribuciones de Linux y proporciona herramientas adicionales para el diagnóstico y la prueba del servidor DNS.

Este tutorial te mostrará cómo configurar un servidor DNS con BIND en un servidor Rocky Linux 9. BIND es uno de los software de servidor DNS más populares que proporciona varias características como DNS autoritativo, DNS solo de caché, balanceo de carga básico de DNS, DNS dividido, DNSSEC, IPv6, y muchos más.

Requisitos previos

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

Para configurar un servidor DNS público que pueda manejar tu dominio (Servidor DNS Autoritativo), también debes tener el nombre de dominio registrado y ‘Registros Glue’ configurados.

Además, en esta guía, asumiremos que tienes SELinux ejecutándose en modo ‘permisivo’.

Preparando el sistema

Para comenzar con esta guía, configurarás el FQDN (Nombre de Dominio Totalmente Calificado) correcto en cada uno de tus servidores Rocky Linux. Esto se puede hacer a través de la utilidad de comando ‘ 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.howtoforge.local         Master  
ns2         192.168.5.120     ns2.howtoforge.local         Slave

En el servidor maestro, ejecuta la siguiente utilidad de comando hostnamectl para configurar el fqdn a ‘ ns1.howtoforge.local ‘.

sudo hostnamectl set-hostname ns1.howtoforge.local

A continuación, también necesitas ejecutar el comando hostnamectl en el servidor esclavo para configurar el fqdn a ‘ ns2.howtoforge.local ‘.

sudo hostnamectl set-hostname ns2.howtoforge.local

Luego, abre el archivo ‘/etc/hosts’ en ambos servidores Maestro y Esclavo utilizando el siguiente comando del editor nano.

sudo nano /etc/hosts

Agrega la siguiente línea al archivo.

192.168.5.100   ns1.howtoforge.local     ns1  
192.168.5.120   ns2.howtoforge.local     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.howtoforge.local ‘, y el servidor Esclavo tiene el fqdn ‘ ns2.howtoforge.local ‘.

sudo hostname -f

A continuación se muestra la salida del servidor Maestro.

fqdn master server

Y a continuación se muestra la salida del servidor Esclavo.

fqdn slave server

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

Instalando 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 v9.16.

En este paso, instalarás los paquetes BIND en ambos servidores Maestro y Esclavo. Luego configurarás BIND para que funcione solo en IPv4 y configurarás el firewalld para permitir el puerto DNS.

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

sudo dnf install bind bind-utils

install bind named

Después de que se instalen los paquetes BIND, abre la configuración ‘ /etc/sysconfig/named ‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/sysconfig/named

Agrega la opción predeterminada ‘ OPTIONS=.. ‘ con la siguiente línea. Esta opción de comando para ‘bind’ o ‘named’ ejecutará BIND solo en IPv4.

OPTIONS="-4"

Guarda el archivo y sal del editor cuando hayas terminado.

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

sudo systemctl start named  
sudo systemctl enable named

start enable named

Ahora verifica el servicio ‘named’ para asegurarte de que el servicio esté en ejecución y habilitado a través del siguiente comando.

sudo systemctl is-enabled named  
sudo systemctl status named

Recibirás una salida similar a la siguiente: el servicio BIND ‘named’ está habilitado y actualmente está en ejecución.

verify named

Con el servicio BIND ‘named’ en ejecución, necesitarás agregar el puerto DNS al firewalld, que está habilitado y en ejecución por defecto en Rocky Linux.

Ejecuta la siguiente utilidad de comando firewall-cmd para agregar el servicio DNS al firewalld. Luego recarga el firewalld para aplicar los cambios.

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

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

sudo firewall-cmd --list-services

Salida:

setup firewalld

En este punto, has terminado la configuración del fqdn, instalado los paquetes BIND y también configurado el firewalld. Con esto en mente, ahora puedes comenzar a configurar el BIND Maestro en el servidor Maestro.

Configurando el servidor DNS Maestro BIND

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

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

  • La configuración básica incluirá la configuración de ACLs (Listas de Control de Acceso), configurando qué dirección IP ejecutará el servicio BIND, configurando los reenvíos, y muchos más.
  • Configuración de Zonas - Aquí es donde crearás configuraciones para tu dominio. Esto incluye la configuración del dominio principal y la configuración de DNS inverso.

Configuración básica

La configuración predeterminada de BIND en la 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 a continuación.

sudo nano /etc/named.conf

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

acl "trusted" {  
        192.168.5.100;    # ns1 - o puedes usar localhost para ns1  
        192.168.5.120;    # ns2  
        192.168.5.0/24;  # redes de confianza  
};  
  
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.

named.conf file

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

  • Configura un ACL ‘ trusted ‘ que permite cualquier consulta de redes locales.
  • Ejecuta el servicio BIND en ‘ 192.168.5.100 ‘ con el puerto predeterminado ‘ 53 ‘.
  • Habilita la recursión y permite la recursión desde las redes de ACL ‘ trusted ‘.
  • Permite la transferencia de zonas al servidor Esclavo con dirección IP ‘ 192.168.5.120 ‘.
  • Configura reenvíos 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 comando systemctl para reiniciar el servicio BIND ‘named’ y aplicar los cambios.

sudo systemctl restart named

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

Configurando Zonas

Ahora configurarás zonas con el servidor DNS BIND. Crearás un nuevo servidor DNS con la dirección ‘ns1.howtoforge.local’ y ‘ns2.howtoforge.local’.

Para comenzar, abre la configuración de BIND ‘/etc/named.conf ‘ a través del comando del editor nano a continuación.

sudo nano /etc/named.conf

Agrega 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.

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

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

Agrega las siguientes líneas al archivo.

zone "howtoforge.local" {  
    type master;  
    file "db.howtoforge.local";        # ruta del archivo de zona  
    allow-transfer { 192.168.5.120; };           # dirección IP ns2 - DNS secundario  
};  
  
zone "5.168.192.in-addr.arpa" {  
    type master;  
    file "db.192.168.5";  # subred 192.168.5.0/24  
    allow-transfer { 192.168.5.120; };  # dirección IP privada ns2 - DNS secundario  
};

Guarda y cierra el archivo cuando hayas terminado.

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

  • Crea dos zonas para el dominio ‘ howtoforge.local ‘ y el DNS inverso ‘ 5.168.192.in-addr.arpa ‘.
  • Ambas zonas son de tipo ‘ master ‘.
  • Permite la transferencia de zona al servidor DNS Esclavo que se ejecutará en la dirección IP del servidor ‘ 192.168.5.120 ‘.

zones list

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

sudo nano /var/named/db.howtoforge.local

Agrega las siguientes líneas al archivo.

;  
; Archivo de datos BIND para la interfaz de bucle local  
;  
$TTL    604800  
@       IN      SOA     ns1.howtoforge.local. admin.howtoforge.local. (  
                              3         ; Serial  
                             604800         ; Refresh  
                              86400         ; Retry  
                            2419200         ; Expire  
                             604800 )       ; Negative Cache TTL  
;  
; Registros NS para servidores de nombres  
    IN      NS      ns1.howtoforge.local.  
    IN      NS      ns2.howtoforge.local.  
  
; Registros A para servidores de nombres  
ns1.howtoforge.local.          IN      A       192.168.5.100  
ns2.howtoforge.local.          IN      A       192.168.5.120  
  
; Manejador de correo o registro MX para el dominio howtoforge.local  
howtoforge.local.    IN     MX   10   mail.howtoforge.local.  
  
; Registros A para nombres de dominio  
howtoforge.local.            IN      A      192.168.5.50  
mail.howtoforge.local.       IN      A      192.168.5.15

Guarda y cierra el archivo cuando hayas terminado.

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

  • Define los registros del Servidor de Nombres ‘ ns1.howtoforge.local ‘ con la dirección IP ‘ 192.168.5.100 ‘ y el ‘ ns2.howtoforge.local ‘ con la dirección IP ‘ 192.168.5.120 ‘.
  • Define dos dominios adicionales, ‘ howtoforge.local ‘, que se resolverán a la dirección IP del servidor ‘ 192.168.5.50 ‘ y el dominio ‘ mail.howtoforge.local ‘ a la dirección IP ‘ 192.168.5.15 ‘.
  • También crearás un registro MX para el dominio ‘ howtoforge.local ‘ que el servidor de correo ‘ mail.howtoforge.local manejará.

zones nameserver

A continuación, comenzarás a configurar el DNS inverso para el dominio howtoforge.local.

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

sudo nano /var/named/db.192.168.5

Agrega las siguientes líneas al archivo.

;  
; Archivo de datos inverso BIND para la interfaz de bucle local  
;  
$TTL    604800  
@       IN      SOA     ns1.howtoforge.local. admin.howtoforge.local. (  
                              3         ; Serial  
                             604800         ; Refresh  
                              86400         ; Retry  
                            2419200         ; Expire  
                             604800 )       ; Negative Cache TTL  
;  
; servidores de nombres - Registros NS  
      IN      NS      ns1.howtoforge.local.  
      IN      NS      ns2.howtoforge.local.  
  
; Registros PTR  
100   IN      PTR     ns1.howtoforge.local.    ; 192.168.5.100  
120   IN      PTR     ns2.howtoforge.local.    ; 192.168.5.120  
50    IN      PTR     howtoforge.local.        ; 192.168.5.50  
15    IN      PTR     mail.howtoforge.local.   ; 192.168.5.15

Guarda y cierra el archivo cuando hayas terminado.

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

  • En la configuración de DNS inverso, también definirás el servidor de nombres ns1.howtoforge.local y ns2.howtoforge.local.
  • 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.howtoforge.local con la dirección IP ‘192.168.5.100’, y el registro PTR debería ser ‘ 100 ‘.
  • El resto de los registros PTR son los mismos que se describieron anteriormente.

zones reverse dns

En este punto, has creado dos configuraciones de zona para el dominio ‘ howtoforge.local ‘ y creado un servidor de nombres ‘ ns1.howtoforge.local ‘ y ‘ ns2.howtoforge.local ‘.

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

sudo chown -R named: /var/named/{db.howtoforge.local,db.192.168.5}

Luego verifica los archivos de configuración de zona a través de la utilidad de comando ‘ named-checkconf ‘ a continuación.

sudo named-checkconf
sudo named-checkzone howtoforge.local /var/named/db.howtoforge.local  
sudo named-checkzone 5.168.192.in-addr.arpa /var/named/db.192.168.5

Si tienes configuraciones BIND adecuadas, recibirás la salida como la siguiente captura de pantalla.

setup master bind dns server

Por último, ejecuta el siguiente comando systemctl para reiniciar el servicio BIND ‘named’ y aplicar los cambios. Luego, verifica el estado del servicio BIND para asegurarte de que el servicio esté en ejecución.

sudo systemctl restart named  
sudo systemctl status named

Recibirás una salida similar a la siguiente: el servicio BIND ‘ named ‘ está en ejecución y has terminado la configuración del Maestro BIND.

restart verify master

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

Configurando el servidor DNS Esclavo BIND

Después de configurar el servidor DNS Maestro, comenzarás a configurar el servidor BIND Esclavo en el servidor ‘ns2.howtoforge.local’ con la dirección IP ‘192.168.5.120’.

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

Antes de comenzar, asegúrate de ejecutar los siguientes comandos en el servidor BIND Esclavo.

Ahora abre la configuración de BIND ‘ /etc/named.conf ‘ en el servidor Esclavo a través del comando del editor nano a continuación.

sudo nano /etc/named.conf

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

acl "trusted" {  
        192.168.5.100;    # ns1 - o puedes usar localhost para ns1  
        192.168.5.120;    # ns2  
        192.168.5.0/24;  # redes de confianza  
};  
  
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;  
        };  

};

Los ajustes son similares a los del servidor Maestro BIND, y a continuación se presentan algunas diferencias en las configuraciones.

  • El servicio BIND se ejecutará en la dirección IP ‘ 192.168.5.120 ‘ en el servidor Esclavo.
  • La recursión está habilitada, pero la ‘allow-transfer’ está configurada como ‘ none ‘.

named.conf slave dns bind

Ahora agrega la siguiente línea al final del archivo ‘named.conf’ para definir 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

Agrega las siguientes líneas al archivo.

zone "howtoforge.local" {  
    type slave;  
    file "slaves/db.howtoforge.local";  
    masters { 192.168.5.100; };           # dirección IP ns1 - DNS maestro  
};  
  
zone "5.168.192.in-addr.arpa" {  
    type slave;  
    file "slaves/db.192.168.5";  
    masters { 192.168.5.100; };  # dirección IP ns1 - DNS maestro  
};

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 ‘ howtoforge.local ‘ y su DNS inverso.
  • Ambos tipos de zona son ‘ slave ‘.
  • El archivo de zona para cada uno se tomará del directorio ‘/var/named/slaves ‘, que se transferirá desde el servidor Maestro BIND.

zones settings

A continuación, ejecuta el siguiente comando ‘named-checkconf’ para verificar las configuraciones BIND. Luego, reinicia el servicio BIND ‘named’ en el servidor Esclavo a través del comando systemctl a continuación.

sudo named-checkconf  
sudo systemctl restart named

No deberías tener mensajes de error si tienes una configuración BIND adecuada.

Por último, ejecuta el siguiente comando systemctl para verificar el servicio BIND ‘ named ‘ en el servidor Esclavo para asegurarte de que el servicio esté en ejecución.

sudo systemctl status named

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

check named

En este punto, has terminado la instalación de BIND DNS con la arquitectura Maestro-Esclavo. Ahora estarás listo para comenzar a probar desde la máquina cliente.

Probando desde el cliente

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

sudo apt install dnsutils bind9-utils

Ingresa y cuando se te pida confirmación y presiona ENTER para continuar.

install dnsutils

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

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

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

nameserver 192.168.5.100  
nameserver 192.168.5.120  
nameserver 1.1.1.1  
search howtoforge.local

Guarda y cierra el archivo cuando hayas terminado.

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

Ejecuta el comando dig a continuación para verificar el nombre de dominio “howtoforge.local” y “mail.howtoforge.local”. Y deberías ver que “ howtoforge.local “ se resuelve a la dirección IP del servidor “ 192.168.5.50 “, mientras que el subdominio “ mail.howtoforge.local “ es manejado por la dirección IP del servidor “ 192.168.5.15 “.

dig howtoforge.local +short  
dig howtoforge.local
dig mail.howtoforge.local +short  
dig mail.howtoforge.local

Verificando el nombre de dominio howtoforge.local.

verify domain

verificando el subdominio mail.howtoforge.local.

verify domain name

A continuación, ejecuta el comando dig a continuación para verificar el manejador de correo para el nombre de dominio “ howtoforge.local “. Y deberías obtener la salida de que “ mail.howtoforge.local “ maneja el correo para el dominio principal “ howtoforge.local “.

dig howtoforge.local MX +short  
dig howtoforge.local MX

verify mx records

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

Ejecuta el comando nslookup a continuación para verificar y comprobar el DNS inverso para algunas direcciones IP.

Ahora deberías ver que la dirección IP “ 192.168.5.100 “ se invierte al servidor de nombres “ ns1.howtoforge.local “, la dirección IP “ 192.168.5.120 “ se invierte al servidor de nombres “ ns2.howtoforge.local “, y la dirección IP “ 192.168.5.50 “ se invierte al nombre de dominio principal “ howtoforge.local “, y por último la dirección IP “ 192.168.5.15 “ se invierte al subdominio “ mail.howtoforge.local “.

slookup 192.168.5.100  
slookup 192.168.5.120  
slookup 192.168.5.50  
slookup 192.168.5.15

verify nslookup

En este punto, has terminado la instalación del servidor BIND DNS con la arquitectura Maestro-Esclavo en Rocky Linux. También has aprendido cómo probar el servidor DNS a través de varias utilidades de comando como dig y nslookup.

Conclusión

¡Felicidades! A lo largo de este tutorial, has aprendido la instalación y configuración del servidor BIND DNS 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 verificar y comprobar los registros y configuraciones DNS.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.