Servidor DNS · 14 min read · Sep 09, 2025
Cómo configurar un servidor DNS con BIND en Ubuntu 22.04

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 estado presente desde la década de 1980, y es conocido por su flexibilidad, rendimiento y características. BIND puede ser utilizado tanto como DNS autoritativo como DNS de caché, 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.
Esta guía te enseñará cómo instalar un servidor DNS con BIND en el servidor Ubuntu 22.04. Este tutorial te mostrará cómo configurar la instalación del servidor DNS BIND Master-Slave utilizando dos servidores Ubuntu.
Requisitos previos
Antes de comenzar con esta guía, debes tener los siguientes requisitos:
- Dos servidores Ubuntu 22.04.
- Un usuario no root con privilegios de root/administrador.
Configuración de FQDN (Nombre de Dominio Totalmente Calificado)
Antes de comenzar a instalar los paquetes de BIND, debes asegurarte de que el nombre de host y el FQDN de tus servidores sean correctos. En esta demostración, utilizaremos dos servidores Ubuntu con los siguientes detalles:
Hostname IP Address FQDN Used As
---------------------------------------------------------
ns1 192.168.5.21 ns1.howtoforge.local BIND Master
ns2 192.168.5.22 ns2.howtoforge.local BIND SlaveAhora inicia sesión en cada servidor y ejecuta el siguiente comando para configurar el FQDN (Nombre de Dominio Totalmente Calificado).
Configura el FQDN en el servidor “ ns1 “.
sudo hostnamectl set-hostname ns1.howtoforge.localConfigura el FQDN en el servidor “ ns2 “.
sudo hostnamectl set-hostname ns2.howtoforge.localA continuación, edita el archivo “ /etc/hosts “ utilizando el siguiente comando.
sudo nano /etc/hostsAgrega la siguiente configuración a cada servidor.
192.168.5.21 ns1.howtoforge.local ns1
192.168.5.22 ns2.howtoforge.local ns2Guarda y cierra el archivo cuando hayas terminado.
Por último, verifica el FQDN en cada servidor utilizando el siguiente comando. En el servidor “ ns1 “, obtendrás el FQDN como “ ns1.howtoforge.local “, y en el servidor “ ns2 “, obtendrás la salida “ ns2.howtoforge.local “.
sudo hostname -fInstalación de paquetes BIND
Los paquetes de BIND están disponibles por defecto en el repositorio del servidor Ubuntu. Ahora puedes instalar fácilmente BIND utilizando el comando apt en ambos servidores “ns1” y “ns2”.
Ejecuta el comando apt a continuación para actualizar y refrescar los repositorios de Ubuntu.
sudo apt updateDespués de eso, instala los paquetes de BIND utilizando el siguiente comando. Ingresa Y para confirmar la instalación y presiona ENTER para continuar. Y la instalación comenzará.
sudo apt install bind9 bind9utils bind9-doc dnsutils
Después de que la instalación de BIND haya finalizado, edita la configuración “ /etc/default/named “ utilizando el siguiente comando.
sudo nano /etc/default/namedLa línea “ OPTIONS= “ te permite configurar opciones específicas cuando el servicio BIND está en funcionamiento. En esta demostración, ejecutarás BIND solo con IPv4, por lo que necesitarás hacer que la línea “ OPTIONS “ sea como a continuación.
OPTIONS="-u bind -4"Guarda y cierra el archivo cuando hayas terminado.
Ahora ejecuta el siguiente comando para reiniciar el servicio BIND “ named “. Luego, verifica y comprueba el estado del servicio BIND. Deberías ver que el servicio BIND “ named “ está funcionando en ambos servidores.
sudo systemctl restart named
sudo systemctl status named
Configuración de BIND Master
Después de instalar los paquetes de BIND en ambos servidores “ns1” y “ns2”, estarás configurando el servidor DNS BIND. Configurarás el servidor “ns1” como el Master del servidor DNS BIND. Puedes ejecutar BIND en un solo servidor, pero se recomienda utilizar múltiples servidores para configurar el servidor DNS de alta disponibilidad.
Regresa a la sesión de terminal del servidor “ ns1 “.
Ejecuta el comando a continuación para editar el archivo de configuración “ /etc/bind/named.conf.options “.
sudo nano /etc/bind/named.conf.optionsAgrega la siguiente configuración al archivo en la parte superior de la línea, antes de la línea “ options {….}; “.
Con esta configuración, estarás creando una ACL (Lista de Control de Acceso) con el nombre “ trusted “, que incluye todas las direcciones IP y redes de confianza en tu entorno. Además, asegúrate de agregar la dirección IP del servidor local “ ns1 “ y la dirección IP del servidor DNS secundario “ ns2 “.
acl "trusted" {
192.168.5.21; # ns1 - o puedes usar localhost para ns1
192.168.5.22; # ns2
192.168.5.0/24; # redes de confianza
};Ahora realiza cambios en la sección “ options {..}; “ como a continuación.
En el siguiente ejemplo, estamos deshabilitando el soporte para IPv6 comentando la opción “ listen-on-v6 “, habilitando y permitiendo la recursión desde la ACL “ trusted “, y ejecutando el servicio BIND en la dirección IP específica “ ns1 “ “ 192.168.5.21 “. Además, estamos deshabilitando la transferencia de zona por defecto y definiendo los reenvíos específicos para el servidor DNS BIND a Google Public DNS “ 8.8.8.8 “ y “ 8.8.4.4 “.
options {
directory "/var/cache/bind";
//listen-on-v6 { any; }; # deshabilitar bind en IPv6
recursion yes; # habilita consultas recursivas
allow-recursion { trusted; }; # permite consultas recursivas desde "trusted" - referido a ACL
listen-on { 192.168.5.21; }; # dirección IP de ns1
allow-transfer { none; }; # deshabilitar transferencias de zona por defecto
forwarders {
8.8.8.8;
1.1.1.1;
};
};Guarda y cierra el archivo cuando hayas terminado.
Por último, ejecuta el siguiente comando para verificar y comprobar el archivo de configuración “ /etc/bind/named.conf.options “. Si no hay mensaje de salida, entonces tu configuración es correcta.
sudo named-checkconf /etc/bind/named.conf.optionsConfiguración de Zonas
Después de configurar la configuración básica del maestro de BIND, ahora estarás configurando zonas para tu nombre de dominio. En el siguiente ejemplo, utilizaremos el nombre de dominio “ howtoforge.local “ con el servidor de nombres “ ns1.howtoforge.local “ y “ ns2.howtoforge.local “.
Edita el archivo de configuración “ /etc/bind/named.local “ utilizando el siguiente comando.
sudo nano /etc/bind/named.conf.localEn esta configuración, estarás definiendo dos archivos de zona, zona directa y zona inversa para tu nombre de dominio. La zona directa contendrá la configuración de dónde se resolverán tus nombres de dominio a la dirección IP, mientras que la zona inversa traducirá la dirección IP a qué nombre de dominio.
En el siguiente ejemplo, definiremos la zona directa “ /etc/bind/zones/db.howtoforge.local “ para el dominio “ howtoforge.local “ y la zona inversa “/etc/bind/zones/db.192.168.5.
zone "howtoforge.local" {
type master;
file "/etc/bind/zones/db.howtoforge.local"; # ruta del archivo de zona
allow-transfer { 192.168.5.22; }; # dirección IP de ns2 - DNS secundario
};
zone "5.168.192.in-addr.arpa" {
type master;
file "/etc/bind/zones/db.192.168.5"; # subred 192.168.5.0/24
allow-transfer { 192.168.5.22; }; # dirección IP privada de ns2 - DNS secundario
};Guarda y cierra el archivo cuando hayas terminado.
A continuación, ejecuta el siguiente comando para crear un nuevo directorio “ /etc/bind/zones “ que se utilizará para almacenar archivos de configuración de zona.
sudo mkdir -p /etc/bind/zones/Después de eso, copia la configuración de la zona directa por defecto “/etc/bind/zones/db.howtoforge.local” y edita el archivo utilizando el siguiente comando.
sudo cp /etc/bind/db.local /etc/bind/zones/db.howtoforge.local
sudo nano /etc/bind/zones/db.howtoforge.localCambia el registro SOA por defecto con tu nombre de dominio. Además, necesitarás cambiar el número “ Serial “ dentro de los registros SOA cada vez que realices cambios en el archivo, y este debe ser el mismo número “Serial” que el servidor DNS secundario/esclavo.
Luego, puedes definir registros NS y registros A para tu servidor DNS. En este ejemplo, el servidor de nombres será “ ns1.howtoforge.local “ con la dirección IP del registro A “ 192.168.5.21 “ y “ ns2.howtoforge.local “ con el registro A de la dirección IP del servidor DNS secundario “ 192.168.5.22 “.
Por último, puedes definir otros nombres de dominio. En este ejemplo, definiremos un registro MX (manejador de correo) para el dominio “ howtoforge.local “ que será manejado por el servidor de correo “ mail.howtoforge.local “. También definiremos el nombre de dominio “ howtoforge.local “ que se resolverá al servidor con la dirección IP “ 192.168.5.100 “ y el subdominio para el servidor de correo “ mail.howtoforge.local “ a la dirección IP del servidor “ 192.168.5.120 “.
;
; 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.21
ns2.howtoforge.local. IN A 192.168.5.22
; 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.100
mail.howtoforge.local. IN A 192.168.5.120Guarda y cierra el archivo cuando hayas terminado.

A continuación, copia el archivo de configuración de zona inversa por defecto a “ /etc/bind/zones/db.192.168.5 “ y edita el nuevo archivo utilizando el siguiente comando.
sudo cp /etc/bind/db.127 /etc/bind/zones/db.192.168.5
sudo nano /etc/bind/zones/db.192.168.5Cambia el registro SOA por defecto utilizando tu nombre de dominio. Además, no olvides cambiar el número “ Serial “ dentro del registro SOA.
Define registros NS para tus servidores DNS. Estos son los mismos servidores de nombres que utilizaste en la zona directa.
Por último, define los registros PTR para tus nombres de dominio. El número en los registros PTR es el último número de la dirección IP. En este ejemplo, el servidor de nombres “ ns1.howtoforge.local “ se resuelve a la dirección IP “ 192.168.5.21 “, así que ahora el registro PTR será “ 21 “ y así sucesivamente para otros nombres de dominio.
;
; 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
21 IN PTR ns1.howtoforge.local. ; 192.168.5.21
22 IN PTR ns2.howtoforge.local. ; 192.168.5.22
100 IN PTR howtoforge.local. ; 192.168.5.100
120 IN PTR mail.howtoforge.local. ; 192.168.5.120Guarda y cierra el archivo cuando hayas terminado.

Ahora ejecuta el siguiente comando para verificar las configuraciones de BIND y asegúrate de no recibir ningún mensaje de error.
sudo named-checkconfLuego, ejecuta el siguiente comando para verificar y comprobar cada archivo de zona que acabas de crear, el archivo de configuración de la zona directa y la zona inversa. Si tus archivos de zona no tienen errores, deberías ver el mensaje de salida como “ OK “. Si no hay errores, el comando te mostrará qué línea del archivo causó un error.
sudo named-checkzone howtoforge.local /etc/bind/zones/db.howtoforge.local
sudo named-checkzone 5.168.192.in-addr.arpa /etc/bind/zones/db.192.168.5
Para finalizar la configuración del Master BIND, ejecuta el siguiente comando para reiniciar el servicio BIND y aplicar los nuevos cambios a las configuraciones que has realizado.
sudo systemctl restart namedConfiguración de BIND Slave
Ahora has terminado la configuración del Servidor DNS Master BIND. Es hora de configurar el servidor “ns2” como el secundario o esclavo del servidor DNS BIND.
El servidor Master almacena archivos de zona que contienen la configuración DNS de tu dominio y maneja consultas recursivas o iterativas. El servidor DNS secundario/esclavo almacena registros DNS temporalmente durante un período de tiempo, y estos registros DNS se transfieren automáticamente desde el servidor Master BIND.
Ahora mueve a la sesión de terminal de “ ns2 “ y comienza a configurar el servidor “ ns2 “ como un Secundario/Esclavo del servidor DNS BIND.
Ejecuta el siguiente comando para editar el archivo de configuración “ /etc/bind/named.conf.options “
sudo nano /etc/bind/named.conf.optionsEn la parte superior de la línea, agrega la siguiente configuración. Esto creará la misma ACL (Lista de Control de Acceso) que en el servidor Master.
acl "trusted" {
192.168.5.21; # ns1
192.168.5.22; # ns2 - o puedes usar localhost para ns2
192.168.5.0/24; # redes de confianza
};Dentro de la línea “ options {…}; “, puedes cambiar la configuración como a continuación. Esta configuración sigue siendo la misma que en el servidor DNS Master BIND, y la única diferencia aquí es la opción “listen-on “ que se especifica a la dirección IP del servidor “ ns2 “.
options {
directory "/var/cache/bind";
//listen-on-v6 { any; }; # deshabilitar bind en IPv6
recursion yes; # habilita consultas recursivas
allow-recursion { trusted; }; # permite consultas recursivas desde "trusted" - referido a ACL
listen-on { 192.168.5.22; }; # dirección IP de ns2
allow-transfer { none; }; # deshabilitar transferencias de zona por defecto
forwarders {
8.8.8.8;
1.1.1.1;
};
};Guarda y cierra el archivo cuando hayas terminado.
A continuación, edita el archivo de configuración “ /etc/bind/named.conf.local “ utilizando el siguiente comando para configurar el servidor “ ns2 “ como el Servidor DNS secundario/esclavo.
sudo nano /etc/bind/named.conf.localAgrega la siguiente configuración al archivo. Como puedes ver, estamos definiendo las zonas directa e inversa, pero con el “ type slave “ y definiendo el servidor Master DNS “ 192.168.5.21 “. No necesitas crear el archivo de zona porque los registros y datos DNS se transferirán automáticamente desde el servidor Master DNS y se almacenarán temporalmente durante un período de tiempo en el servidor DNS secundario/esclavo.
zone "howtoforge.local" {
type slave;
file "/etc/bind/zones/db.howtoforge.local";
masters { 192.168.5.21; }; # dirección IP de ns1 - DNS master
};
zone "5.168.192.in-addr.arpa" {
type slave;
file "/etc/bind/zones/db.192.168.5";
masters { 192.168.5.21; }; # dirección IP de ns1 - DNS master
};Guarda y cierra el archivo cuando hayas terminado.
Ahora ejecuta el siguiente comando para verificar y comprobar la configuración de BIND y asegúrate de que todas las configuraciones sean correctas. Luego, puedes reiniciar el servicio BIND “named” en el servidor “ ns2 “ para aplicar los nuevos cambios. Y ahora has terminado la configuración en el servidor “ ns2 “ como un secundario/esclavo del Servidor DNS BIND.
sudo named-checkconf
sudo systemctl restart named
Por último, ejecuta el siguiente comando para verificar y comprobar el servicio BIND “ named “ en el servidor “ ns2 “. Y asegúrate de que el servicio “ named “ esté en funcionamiento.
sudo systemctl status named
Verificando el servidor DNS desde la máquina cliente
En la máquina cliente, hay múltiples formas de configurar el resolutor DNS. Puedes configurar el resolutor DNS desde el NetworkManager o desde la configuración de netplan. Pero, la forma más fácil es configurar el resolutor DNS manualmente a través del archivo “/etc/resolv.conf”. Esto te permite configurar un resolutor DNS estático para las máquinas cliente.
Ejecuta el siguiente comando para eliminar el archivo de enlace por defecto “ /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 Master DNS BIND, el servidor DNS BIND secundario y el resolutor DNS público de Google. Cuando la máquina cliente solicita información sobre el nombre de dominio, la información se tomará del resolutor DNS, de arriba hacia abajo.
nameserver 192.168.5.21
nameserver 192.168.5.22
nameserver 8.8.8.8
search howtoforge.localGuarda y cierra el archivo cuando hayas terminado.
A continuación, ejecuta el comando a continuación para instalar algunas utilidades DNS en tu máquina cliente. En este ejemplo, la máquina cliente es un sistema Ubuntu, así que estamos instalando la utilidad DNS utilizando el comando apt como a continuación.
sudo apt install dnsutils bind9-utilsDespués de haber instalado la utilidad DNS en tu sistema, puedes comenzar a verificar todos los registros 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.100 “, mientras que el subdominio “ mail.howtoforge.local “ es manejado por la dirección IP del servidor “ 192.168.5.120 “.
dig howtoforge.local +short
dig howtoforge.local
dig mail.howtoforge.local +short
dig mail.howtoforge.local
A continuación, ejecuta el comando dig como a continuación para verificar el manejador de correo para el nombre de dominio “howtoforge.local”. Y deberías obtener la salida que “ mail.howtoforge.local “ maneja el correo para el dominio principal “ howtoforge.local “.
dig howtoforge.local MX +short
dig howtoforge.local MX
Ahora también puedes verificar la configuración de la 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.21 “ se invierte al servidor de nombres “ ns1.howtoforge.local “, la dirección IP “ 192.168.5.22 “ se invierte al servidor de nombres “ ns2.howtoforge.local “, y la dirección IP “ 192.168.5.100 “ se invierte al nombre de dominio principal “ howtoforge.local “, y por último, la dirección IP “ 192.168.5.120 “ se invierte al subdominio “ mail.howtoforge.local “.
slookup 192.168.5.21
slookup 192.168.5.22
slookup 192.168.5.100
slookup 192.168.5.120
Conclusión
¡Felicidades! A lo largo de este tutorial has aprendido la instalación y configuración del Servidor DNS BIND en servidores Ubuntu 22.04. Has configurado con éxito el Servidor DNS BIND Master-Slave utilizando dos servidores Ubuntu diferentes. Además, has aprendido los comandos básicos de Dig y Nslookup para verificar y comprobar registros y configuraciones DNS.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.