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 Slave

Ahora 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.local

Configura el FQDN en el servidor “ ns2 “.

sudo hostnamectl set-hostname ns2.howtoforge.local

A continuación, edita el archivo “ /etc/hosts “ utilizando el siguiente comando.

sudo nano /etc/hosts

Agrega la siguiente configuración a cada servidor.

192.168.5.21 ns1.howtoforge.local ns1  
192.168.5.22 ns2.howtoforge.local ns2

Guarda 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 -f

Instalació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 update

Despué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

install bind

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/named

La 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

setup bind

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

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

Configuració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.local

En 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.local

Cambia 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.120

Guarda y cierra el archivo cuando hayas terminado.

setup forward zone

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

Cambia 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.120

Guarda y cierra el archivo cuando hayas terminado.

setup reverse zone

Ahora ejecuta el siguiente comando para verificar las configuraciones de BIND y asegúrate de no recibir ningún mensaje de error.

sudo named-checkconf

Luego, 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

check zone files

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 named

Configuració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.options

En 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.local

Agrega 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

setup secondary dns

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

check named status secondary dns

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

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

Guarda 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-utils

Despué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

check dns records dig

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

check dns record using dig

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

check mx records

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

check reverse dns

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.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

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