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 SlaveEn el servidor maestro, ejecuta la siguiente utilidad de comando hostnamectl para configurar el fqdn a ‘ ns1.howtoforge.local ‘.
sudo hostnamectl set-hostname ns1.howtoforge.localA 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.localLuego, abre el archivo ‘/etc/hosts’ en ambos servidores Maestro y Esclavo utilizando el siguiente comando del editor nano.
sudo nano /etc/hostsAgrega la siguiente línea al archivo.
192.168.5.100 ns1.howtoforge.local ns1
192.168.5.120 ns2.howtoforge.local ns2Guarda 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 -fA continuación se muestra la salida del servidor Maestro.

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

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
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/namedAgrega 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
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 namedRecibirás una salida similar a la siguiente: el servicio BIND ‘named’ está habilitado y actualmente está en ejecución.

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 --reloadSi 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-servicesSalida:

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

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.confPor último, ejecuta la siguiente utilidad de comando systemctl para reiniciar el servicio BIND ‘named’ y aplicar los cambios.
sudo systemctl restart namedAhora 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.confAgrega 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.localAgrega 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 ‘.

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.localAgrega 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.15Guarda 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á.

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.5Agrega 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.15Guarda 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.

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-checkconfsudo named-checkzone howtoforge.local /var/named/db.howtoforge.local
sudo named-checkzone 5.168.192.in-addr.arpa /var/named/db.192.168.5Si tienes configuraciones BIND adecuadas, recibirás la salida como la siguiente captura de pantalla.

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 namedRecibirás una salida similar a la siguiente: el servicio BIND ‘ named ‘ está en ejecución y has terminado la configuración del Maestro BIND.

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.confCambia 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 ‘.

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

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 namedNo 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 namedAhora recibirás una salida similar a la siguiente: el servicio BIND ‘named’ está en ejecución en el servidor BIND Esclavo.

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-utilsIngresa y cuando se te pida confirmación y presiona ENTER para continuar.

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.confAgrega 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.localGuarda 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.localdig mail.howtoforge.local +short
dig mail.howtoforge.localVerificando el nombre de dominio howtoforge.local.

verificando el subdominio mail.howtoforge.local.

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
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
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.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.