Empezando con el Servidor DNS BIND

El Servidor de Nombres de Dominio (DNS) es un componente crítico de la infraestructura de internet, y construir tu propio servidor DNS puede ser desafiante. Bueno, eso no ocurre con BIND, donde puedes crear tu servidor DNS BIND en poco tiempo. BIND tiene una excelente reputación entre los administradores por su flexibilidad y soporte de alta disponibilidad.

En este artículo, aprenderás cómo instalar y configurar un servidor DNS BIND seguro y verificar que los subdominios se resuelvan a la dirección IP correcta.

Sigue leyendo y ¡crea tu servidor DNS sin complicaciones!

Requisitos previos

Este tutorial será una demostración práctica. Para seguir, asegúrate de tener lo siguiente.

  • A Linux server – This example uses the Ubuntu 20.04 server.
  • A non-root user with root privileges or root/administrator user.
  • A domain name pointed to the server IP address – This demo uses the atadomain.io domain and server IP address 172.16.1.10.

Instalación de paquetes BIND

El repositorio predeterminado de Ubuntu proporciona paquetes BIND, pero no se instala automáticamente en tu sistema. Puedes instalar BIND como el servidor DNS principal o solo autoritativo. BIND ofrece funciones potentes, como soporte para instalación maestro-esclavo, soporte DNSSEC y listas de control de acceso (ACL) incorporadas.

Para comenzar con BIND DNS, primero debes instalar los paquetes BIND en tu máquina con el gestor de paquetes apt.

1. Abre tu terminal e inicia sesión en tu servidor.

2. A continuación, ejecuta el comando apt update a continuación para actualizar y refrescar el índice de paquetes del repositorio. Este comando asegura que estás instalando la última versión de los paquetes.

sudo apt update
Refreshing Package Index

3. Una vez actualizado, ejecuta el siguiente comando apt install para instalar los paquetes BIND para el servidor Ubuntu.

Los paquetes bind9-utils y bind9-dnsutils proporcionan herramientas adicionales de línea de comandos para BIND. Estos paquetes son útiles para probar y administrar el servidor DNS BIND.

sudo apt install bind9 bind9-utils bind9-dnsutils -y
Installing BIND Packages

4. Por último, ejecuta el comando systemctl a continuación para verificar el servicio BIND.

El paquete BIND viene con el servicio named y se inicia automáticamente y se habilita durante la instalación del paquete BIND.

# Comprueba si el servicio named está habilitado
sudo systemctl is-enabled named

# Comprueba el estado del servicio named
sudo systemctl status named

Ahora deberías ver que el servicio BIND named está habilitado con el estado activo (en ejecución). En este punto, el servicio BIND se ejecutará automáticamente al inicio del sistema.

Checking BIND named service

Configuración del Servidor DNS BIND

Ahora has instalado los paquetes de BIND en el servidor Ubuntu, así que es hora de configurar la instalación de BIND en tu servidor Ubuntu. ¿Cómo? Editando las configuraciones de BIND y del servicio named.

Toda la configuración para BIND está disponible en el directorio /etc/bind/, y las configuraciones para el servicio named en /etc/default/named.

1. Edita la configuración /etc/default/named usando tu editor preferido y agrega la opción -4 en la línea OPTIONS, como se muestra a continuación. Esta opción ejecutará el servicio named solo en IPv4.

OPTIONS="-4 -u bind"

Guarda los cambios que hiciste y cierra el archivo.

Configuring BIND to Run on IPv4 Only

2. A continuación, edita el archivo /etc/bind/named.conf.options y completa la siguiente configuración debajo de la línea directory "/var/cache/bind";.

Esta configuración establece que el servicio BIND se ejecute en el puerto UDP 53 predeterminado en el localhost del servidor y en la dirección IP pública (172.16.1.10). Al mismo tiempo, permite consultas desde cualquier host al servidor DNS BIND utilizando Cloudflare DNS 1.1.1.1 como remitente.

    // listen port and address
    listen-on port 53 { localhost; 172.16.1.10; };

    // for public DNS server - allow from any
    allow-query { any; };

    // define the forwarder for DNS queries
    forwarders { 1.1.1.1; };

    // enable recursion that provides recursive query
    recursion yes;

Al final, comenta la línea listen-on-v6 { any; };, como se muestra a continuación, para deshabilitar que el servicio named se ejecute en IPv6.

Editing the BIND Configuration Options

3. Por último, ejecuta el siguiente comando para verificar la configuración de BIND.

sudo named-checkconf

Si no hay ninguna salida, las configuraciones BIND son correctas sin errores.

Verifying BIND Configurations

Configuración de Zonas DNS

En este punto, has configurado la configuración básica del servidor DNS BIND. Estás listo para crear un servidor DNS con tu dominio y agregar otros subdominios para tus aplicaciones. Deberás definir y crear una nueva configuración de zonas DNS para hacerlo.

En este tutorial, crearás un nuevo Servidor de Nombres (ns1.atadomain.io) y subdominios (www.atadomain.iomail.atadomain.iovault.atadomain.io).

1. Edita el archivo /etc/bind/named.conf.local con tu editor preferido y agrega la siguiente configuración.

Esta configuración define la zona de avance (/etc/bind/zones/forward.atadomain.io) y la zona inversa (/etc/bind/zones/reverse.atadomain.io) para el nombre de dominio atadomain.io.

zone "atadomain.io" {
    type master;
    file "/etc/bind/zones/forward.atadomain.io";
};

zone "1.16.172.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/reverse.atadomain.io";
};

Guarda los cambios y cierra el archivo.

Defining Forward Zone and Reverse Zone BIND

2. A continuación, ejecuta el siguiente comando para crear un nuevo directorio (/etc/bind/zones) para las configuraciones de zonas DNS.

mkdir -p /etc/bind/zones/

3. Ejecuta cada comando a continuación para copiar la configuración predeterminada de las zonas de avance y reversa al directorio /etc/bind/zones.

# Copia la configuración predeterminada de la zona de avance
sudo cp /etc/bind/db.local /etc/bind/zones/forward.atadomain.io

# Copia la configuración predeterminada de la zona inversa
sudo cp /etc/bind/db.127 /etc/bind/zones/reverse.atadomain.io

# Lista el contenido del directorio /etc/bind/zones/
ls /etc/bind/zones/
Copying Default Zones Configurations

4. Ahora, edita la configuración de la zona de avance (/etc/bind/zones/forward.atadomain.io) con tu editor preferido y completa la configuración a continuación.

La configuración de la zona de avance es donde defines el nombre de tu dominio y la dirección IP del servidor. Esta configuración traducirá el nombre de dominio a la dirección IP correcta del servidor.

La configuración a continuación crea el siguiente servidor de nombres y subdominios:

  • ns1.atadomain.io – El servidor de nombres principal para tu dominio con la dirección IP 172.16.1.10.
  • Registro MX para el dominio atadomain.io que es gestionado por mail.atadomain.io. El registro MX se utiliza para el servidor de correo.
  • Subdominios para aplicaciones: www.atadomain.iomail.atadomain.io, y vault.atadomain.io.
;
; BIND data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     atadomain.io. root.atadomain.io. (
                            2         ; Serial
                        604800         ; Refresh
                        86400         ; Retry
                        2419200         ; Expire
                        604800 )       ; Negative Cache TTL

; Define the default name server to ns1.atadomain.io
@       IN      NS      ns1.atadomain.io.

; Resolve ns1 to server IP address
; A record for the main DNS
ns1     IN      A       172.16.1.10


; Define MX record for mail
atadomain.io. IN   MX   10   mail.atadomain.io.


; Other domains for atadomain.io
; Create subdomain www - mail - vault
www     IN      A       172.16.1.10
mail    IN      A       172.16.1.20
vault   IN      A       172.16.1.50

Guarda los cambios y cierra el archivo.

Configuring Forward Zone BIND

5. Al igual que con la zona de avance, edita el archivo de configuración de la zona inversa (/etc/bind/zones/reverse.atadomain.io) y completa la siguiente configuración.

La zona inversa traduce la dirección IP del servidor al nombre de dominio. La zona inversa o registro PTR es esencial para servicios como el servidor de correo, lo que afecta a la reputación del servidor de correo.

El registro PTR utiliza el último bloque de la dirección IP, como el registro PTR con el número 10 para la dirección IP del servidor 172.16.1.10.

Esta configuración crea la zona inversa o registro PTR para los siguientes dominios:

  • Servidor de nombres ns1.atadomain.io con la zona inversa o registro PTR 172.16.1.10.
  • Registro PTR para el dominio mail.atadomain.io a la dirección IP del servidor 172.16.1.20.
;
; BIND reverse data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     atadomain.io. root.atadomain.io. (
                            1         ; Serial
                        604800         ; Refresh
                        86400         ; Retry
                        2419200         ; Expire
                        604800 )       ; Negative Cache TTL

; Name Server Info for ns1.atadomain.io
@       IN      NS      ns1.atadomain.io.


; Reverse DNS or PTR Record for ns1.atadomain.io
; Using the last number of DNS Server IP address: 172.16.1.10
10      IN      PTR     ns1.atadomain.io.


; Reverse DNS or PTR Record for mail.atadomain.io
; Using the last block IP address: 172.16.1.20
20      IN      PTR     mail.atadomain.io.

Guarda los cambios y cierra el archivo.

Configuring Reverse Zone BIND

6. Ahora, ejecuta los siguientes comandos para verificar las configuraciones de BIND.

# Comprobando la configuración principal para BIND
sudo named-checkconf

# Comprobando la zona forward forward.atadomain.io
sudo named-checkzone atadomain.io /etc/bind/zones/forward.atadomain.io

# Comprobando la zona reverse reverse.atadomain.io
sudo named-checkzone atadomain.io /etc/bind/zones/reverse.atadomain.io

Cuando tu configuración sea correcta, verás una salida similar a continuación.

Checking and Verifying BIND configurations

7. Por último, ejecuta el comando systemctl a continuación para reiniciar y verificar el servicio named. Haciendo esto se aplican los nuevos cambios al servicio named.

# Reiniciar el servicio named
sudo systemctl restart named

# Verificar el servicio named
sudo systemctl status named

A continuación, puedes ver que el estado del servicio named está activo (en ejecución).

Restarting Named Service and Verifying Named Service Status

Abriendo el Puerto DNS con el Firewall UFW

En este punto, has completado la instalación del Servidor DNS BIND. Pero aún debes asegurar tu Servidor DNS. Configurarás el firewall UFW y abrirás el puerto DNS para cualquier consulta al servidor. Haciendo esto permite que los clientes realicen una consulta al servidor DNS BIND.

Por razones de seguridad, se recomienda ejecutar y habilitar el firewall UFW en tu servidor Ubuntu.

1. Ejecuta el comando ufw a continuación para verificar las aplicaciones disponibles en el firewall UFW.

sudo ufw app list

Deberías ver el Bind9 en la lista de aplicaciones de la aplicación UFW a continuación.

Listing Available Applications on the UFW Firewall

2. Ahora ejecuta el siguiente comando para permitir el Bind9 en el firewall UFW.

sudo ufw allow Bind9
Adding UW Rule

3. Por último, ejecuta el siguiente comando para verificar las reglas habilitadas en el firewall UFW.

sudo ufw status

Deberías ver la aplicación Bind9 en la lista como en la captura de pantalla a continuación.

Verifying List of Rules

Verificación de la Instalación del Servidor DNS BIND

Ahora has completado la instalación de BIND DNS y configurado el firewall UFW. Pero, ¿cómo verificas la instalación de tu servidor DNS? El comando dig hará el truco.

Dig es una utilidad de línea de comandos para solucionar problemas de instalación del servidor DNS. dig realiza una búsqueda de DNS para el nombre de dominio dado y muestra respuestas detalladas para el objetivo del nombre de dominio. En el sistema Ubuntu, dig es parte del paquete bind9-dnsutil.

Para verificar la instalación de tu servidor DNS BIND:

1. Ejecuta cada comando dig a continuación para verificar los subdominios www.atadomain.iomail.atadomain.io y vault.atadomain.io.

Si la instalación de su servidor DNS es exitosa, cada subdominio se resolverá a la dirección IP correcta según la configuración de forward.atadomain.io.

# Verificación de los nombres de dominio
dig @172.16.1.10 www.atadomain.io
dig @172.16.1.10 mail.atadomain.io
dig @172.16.1.10 vault.atadomain.io

A continuación se muestra la salida del subdominio www.atadomain.io resuelto a la dirección IP del servidor 172.16.1.10.

Checking sub-domain www.atadomain.io

A continuación se muestra el subdominio mail.atadomain.io resuelto a la dirección IP del servidor 172.16.1.20.

Checking sub-domain mail.atadomain.io

Y a continuación se muestra el subdominio vault.atadomain.io resuelto a la dirección IP del servidor 172.16.1.50.

Checking sub-domain vault.atadomain.io

2. A continuación, ejecute el comando dig a continuación para verificar el registro MX para el dominio atadomain.io.

dig @172.16.1.10 atadomain.io MX

Debería ver que el dominio atadomain.io tiene el registro MX mail.atadomain.io.

Checking MX record for atadomain.io

3. Por último, ejecute los siguientes comandos para verificar el registro PTR o la zona inversa para las direcciones IP del servidor 172.16.1.10 y 172.16.1.20.

Si la instalación de BIND es exitosa, cada dirección IP se resolverá al nombre de dominio definido en la configuración reverse.atadomain.io.

# Verificación del registro PTR o DNS inversa
dig @172.16.1.10 -x 172.16.1.10
dig @172.16.1.10 -x 172.16.1.20

Puede ver a continuación que la dirección IP del servidor 172.16.1.10 se resuelve al nombre de dominio ns1.atadomain.io.

Checking PTR record for IP address 172.16.1.10

Como puede ver a continuación, la dirección IP del servidor 172.16.1.20 se resuelve al nombre de dominio mail.atadomain.io.

Checking PTR record for IP address 172.16.1.20

Conclusión

A lo largo de este tutorial, has aprendido cómo crear y configurar un servidor DNS BIND seguro en tu servidor Ubuntu. También has creado la zona forward y reverse para agregar tu dominio y has verificado los servidores DNS mediante la ejecución de comandos dig.

Ahora, ¿cómo puedes implementar un servidor DNS BIND en tu entorno? ¿Quizás implementar BIND como un servidor autoritario? ¿O configurar alta disponibilidad con una instalación maestro-esclavo de BIND?

Source:
https://adamtheautomator.com/bind-dns-server/