Cómo instalar el servidor DNS Bind en Ubuntu 24.04 LTS

En esta ocasión vamos a ver cómo instalar y configurar el servidor DNS Bind en Ubuntu 24.04 LTS Noble Numbat paso a paso, de modo que podremos resolver nombres en red local, tanto pertenecientes a dominios locales como nombres de Internet.

Antes de instalar DNS Bind en Ubuntu 24.04 LTS Noble Numbat

Si quieres completar los pasos de esta guía de instalación y configuración del servidor DNS Bind en Ubuntu 24.04 LT Noble Numbat será necesario contar con los siguientes requisitos mínimos:

  • Una máquina Ubuntu 24.04 LTS Noble Numbat actualizada, que actuará como servidor DNS.
  • Opcionalmente, una segunda máquina Ubuntu 24.04 LTS para utilizarla como cliente DNS.
  • Acceso a línea de comandos con un usuario con privilegios de sudo.
  • Conexión a Internet.

En el ejemplo de este tutorial configuraremos un servidor DNS Bind sobre una máquina Ubuntu 24.04 LTS que resolverá los nombres de las máquinas de una red local que utilizará el dominio red.lan, aunque también servirá para resolver nombres de Internet.

La red privada sobre la que trabajamos es la 192.168.1.0/24 y la dirección IP del servidor Ubuntu 24.04 LTS que correrá el servicio DNS Bind es la 192.168.1.188.

En este tutorial no abarcamos cómo configurar los clientes en la red para que usen el nuevo servidor DNS. A grandes rasgos, si la configuración de los adaptadores de red es automática el servidor DHCP de la red debería configurarse para enviar dicho servidor DNS; si la configuración es manual, habrá que especificar el servidor DNS manualmente en la configuración de cada adaptador.

Cómo instalar DNS Bind en Ubuntu 24.04 LTS

Vamos a instalar el servicio DNS Bind en Ubuntu 24.04 LTS Noble Numbat mediante los paquetes procedentes de los repositorios de la distribución, por lo que actualizamos la información de los mismos:

~$ sudo apt update

E instalamos los paquetes necesarios:

~$ sudo apt install -y bind9

Tras la descarga e instalación de este paquete y todas sus dependencias se crea un nuevo servicio en el sistema, el servicio named, que queda en ejecución y activada para su inicio automático. Podemos comprobar el estado de este servicio en cualquier momento con el siguiente comando:

~$ systemctl status named

como instalar el servidor dns bind en ubuntu 24.04 lts noble numbat

Configurar el firewall para Bind en Ubuntu 24.04 LTS

Si tienes activado el firewall UFW en Ubuntu 24.04 LTS Noble Numbat será necesario añadir una regla para permitir la conexión al servicio desde red:

~$ sudo ufw allow bind9

Cómo configurar el servidor DNS Bind en Ubuntu 24.04 LTS

Vamos a configurar el servicio DNS Bind en Ubuntu 24.04 LTS Noble Numbat a través de sus archivos de configuración que se organizan bajo la ruta /etc/bind/.

Resolución de nombres de Internet

Con la configuración por defecto el servidor DNS Bind ya puede resolver nombres de Internet. Si queremos que esta resolución se haga a través de otros servidores a los que conecte el nuestro (lo que se denomina forwarding), editamos el archivo named.conf.options:

~$ sudo nano /etc/bind/named.conf.options

Buscamos la sección forwarders:

...
        // forwarders {
        //      0.0.0.0;
        // };
...

Activamos dicha sección e introducimos los servidores DNS que nos interesen; por ejemplo el de Cloudflare:

...
        forwarders {
                1.1.1.1;
        };
...

O los de Google:

...
        forwarders {
                8.8.8.8;
                8.8.4.4;
        };
...

Guardamos los cambios y comprobamos que la sintaxis del archivo es correcta con el comando named-checkconf:

~$ named-checkconf

Si todo es correcto podemos recargar la configuración del servicio:

~$ sudo systemctl reload named

Hayas o no activado esa opción, ya se puede probar la resolución de nombres de Internet con la herramienta nslookup, tanto desde el propio servidor Ubuntu 24.04 ó, mejor aún, desde otra máquina de la red local.

Si lo hacemos desde el propio servidor:

~$ nslookup gogle.com localhost
Server:         localhost
Address:        127.0.0.1#53

Non-authoritative answer:
Name:   gogle.com
Address: 142.250.200.68
Name:   gogle.com
Address: 2a00:1450:4003:80d::2004

Y desde una máquina en red, con el mismo misma petición comando pero añadiendo además la dirección IP del servidor DNS que estamos configurando:

~$ nslookup gogle.com 192.168.1.188
Server:         192.168.1.188
Address:        192.168.1.188#53

Non-authoritative answer:
Name:   gogle.com
Address: 142.250.200.68
Name:   gogle.com
Address: 2a00:1450:4003:80d::2004

Resolución de nombres de la red interna

Para que nuestro servidor DNS Bind pueda resolver nombres de un dominio interno en una red local crearemos un archivo de configuración para dicho dominio.

Vamos a crear un archivo de base datos para el dominio local red.lan:

~$ sudo nano /etc/bind/db.red.lan

El esquema mínimo suele ser el siguiente:

$TTL 1D

@ IN SOA ns.red.lan. instalador.red.lan. (
        1 ; serial
        604800 ; refresh
        86400 ; retry
        2419200 ; expiration
        604800 ; TTL negative cache
)

; Registros NS (Servidores de nombres)

@ IN NS ns.red.lan.

; Registros A

ns      IN      A 192.168.1.188
router  IN      A 192.168.1.1
nas     IN      A 192.168.2.2
pi      IN      A 192.168.1.130
puesto1 IN      A 192.168.1.151
puesto2 IN      A 192.168.1.152

En el registro SOA (start of authority) se indican el nombre del servidor DNS principal del dominio (en este ejemplo ns.red.lan) y la dirección de correo electrónico del administrador del servicio, donde la @ se sustituye por un punto (es decir, instalador.red.lan equivale a instalador@red.lan).

En este mismo registro, el parámetro que incorpora el comentario serial es el número de versión del archivo. Siempre que vayamos a introducir cambios debemos incrementar manualmente dicho número.

En el registro NS introducimos el servidor DNS del dominio. Si hubiera más servidores (secundarios, terciarios, etc.) deberíamos añadir más registros con los nombres de dichos servidores.

Finalmente, los registros A son los que asocian un nombre con su dirección IP. En lugar de poner el FQDN o nombre completo de cada máquina, podemos poner sólo la parte de la máquina.

Por ejemplo, para ns.red.lan indicamos ns, para puesto1.red.lan indicamos puesto1, etc.

Cuando terminemos de introducir la base de datos del dominio, guardamos y cerramos el archivo.

Comprobamos la sintaxis de este archivo con el comando named-checkzone, que recibe como parámetros el dominio que queremos comprobar y su archivo de base de datos:

~$ named-checkzone red.lan /etc/bind/db.red.lan
zone red.lan/IN: loaded serial 1
OK

En caso de error habrá que solucionar el problema para poder continuar.

Para que el archivo de zona sea incluido en la configuración de Bind, debemos editar el archivo named.conf.local:

~$ sudo nano /etc/bind/named.conf.local

Y añadimos al final un bloque zone para el dominio en el que se incluya la base de datos o archivo de zona:

...
zone "red.lan" IN {
        type master;
        file "/etc/bind/db.red.lan";
};

Guardamos y cerramos este archivo y recargamos la configuración del servicio DNS:

~$ sudo systemctl reload named

Podemos probar la resolución de nombres de la red local, por ejemplo desde una máquina Ubuntu 24.04 LTS que no es el servidor, con el comando nslookup:

~$ nslookup puesto1.red.lan 192.168.1.188
Server:         192.168.1.188
Address:        192.168.1.188#53

Name:   puesto1.red.lan
Address: 192.168.1.151

Y deberíamos obtener la respuesta esperada.

Resolución inversa

Ahora realizaremos la configuración para que el servidor DNS Bind del servidor Ubuntu 24.04 LTS devuelva el nombre de máquina asociado a una dirección IP.

Para ello creamos el archivo de base de datos de la zona inversa de la red local (en este ejemplo para la red 192.168.1.0/24):

~$ sudo nano /etc/bind/db.1.168.192

El contenido de este archivo sería similar al siguiente:

$TTL 1D

@ IN SOA red.lan. root.red.lan. (
        0 ; serial
        604800 ; refresh
        86400 ; retry
        2419200 ; expires
        604800 ; TTL negative cache
)

@ IN NS ns.red.lan.

; Registros PTR

188     IN      PTR ns.red.lan.
1       IN      PTR router.red.lan.
2       IN      PTR nas.red.lan.
130     IN      PTR pi.red.lan.
151     IN      PTR puesto1.red.lan.
152     IN      PTR puesto2.red.lan.

Podemos ver que los registros SOA y NS son similares a los del archivo de resolución directa de la zona. Lo que varía es que para resolución inversa usamos registros PTR en los que especificamos la parte numérica de la dirección IP que varía y el nombre completo o FQDN de la máquina.

Guardamos los cambios y comprobamos si la sintaxis es correcta:

~$ named-checkzone 1.168.192 /etc/bind/db.1.168.192
zone 1.168.192/IN: loaded serial 0
OK

Si todo está bien editaremos el archivo named.conf.local:

~$ sudo nano /etc/bind/named.conf.local

Y añadimos al final un bloque zone para incluir el archivo de base de datos de resolución inversa que acabamos de crear:

...
zone "1.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.1.168.192";
};

Guardamos este archivo y comprobamos que la sintaxis esté correcta:

~$ named-checkconf

Ya podemos recargar la configuración del servicio DNS Bind:

~$ sudo systemctl reload named

Ahora probamos la resolución inversa desde un cliente para cualquiera de las direcciones IP que hemos registrado:

~$ nslookup 192.168.1.1 192.168.1.188
1.1.168.192.in-addr.arpa        name = router.red.lan.

¡Todo listo!

Por último, cuando ya tenemos funcionando correctamente el servicio DNS Bind en Ubuntu 24.04 LTS es el momento de hacer que el sistema lo use por defecto. Para ello editamos el siguiente archivo:

~$ sudo nano /etc/systemd/resolved.conf

Dentro de la sección [Resolve] observamos dos directivas desactivadas:

...
[Resolve]
...
#DNS=
...
#Domains=
...

Las activamos y les damos los siguientes valores:

...
DNS=127.0.0.1
...
Domains=~.
...

Guardamos y cerramos el archivo, y reiniciamos el servicio systemd-resolved:

~$ sudo systemctl restart systemd-resolved

A partir de este momento el sistema usa Bind por defecto para resolver tanto los nombres de Internet:

~$ nslookup ubuntu.com
Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
Name:   ubuntu.com
Address: 185.125.190.20
...

Como el dominio local (directo e inverso) que hemos configurado:

~$ nslookup router.red.lan
Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
Name:   router.red.lan
Address: 192.168.1.1

~$ nslookup 192.168.1.1
1.1.168.192.in-addr.arpa        name = router.red.lan.

Authoritative answers can be found from:

Quedaría configurar el servidor DHCP de la red para que envíe el nuevo servidor DNS a los clientes que se configuran automáticamente y/o configurar las máquinas clientes que tienen direcciones IP estáticas.

Conclusión

Ahora que sabes cómo instalar y configurar el servicio DNS Bind en Ubuntu 24.04 LTS Noble Numbat ya puedes proporcionar servicio de resolución de nombres para tu red local. Funciona perfectamente tanto para nombres de Internet como para los nombres locales de tu red privada.

Si te ha surgido algún problema, duda, sugerencia, quieres notificar algún error, hacer una sugerencia, etc. puedes dejar un comentario. Los comentarios están moderados, para intentar luchar contra el SPAM, pero se revisan prácticamente a diario.

¡Apoya comoinstalar.me!

¿Ya tienes resolución de nombres con tu propio servidor gracias a nuestra pequeña guía? Si es así y quieres agradecérnoslo cualquier contribución mínima siempre es bien acogida.

Puedes ayudarnos dejando una propina de tan solo 1 $ con PayPal:

O, si te sientes especialmente agradecido, puedes invitarnos a un café:

¡Gracias!

Valora esta entrada

¿Qué te ha parecido esta entrada?

Deja un comentario