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

En esta ocasión vamos a ver cómo instalar y configurar el servidor DNS Bind en Ubuntu 22.04 LTS Jammy Jellyfish 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 22.04 LTS Jammy Jellyfish

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

  • Una máquina Ubuntu 22.04 LTS Jammy Jellyfish actualizada, que actuará como servidor DNS.
  • Opcionalmente, una segunda máquina Ubuntu 22.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 22.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 22.04 LTS que correrá el servicio DNS Bind es la 192.168.1.143.

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 22.04 LTS

Vamos a instalar el servicio DNS Bind en Ubuntu 22.04 LTS Jammy Jellyfish 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 22.04 lts jammy jellyfish

Configurar el firewall para Bind en Ubuntu 22.04 LTS

Si tienes activado el firewall UFW en Ubuntu 22.04 LTS Jammy Jellyfish 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 22.04 LTS

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

Resolución de nombres de Internet

Si queremos que los clientes de red puedan resolver nombres de Internet con el servidor DNS Bind que acabamos de instalar, editaremos 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 públicos que consideremos, 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

Ahora desde el propio servidor o, mejor aún, desde otra máquina en red podemos probar la resolución de nombres de Internet con la herramienta nslookup.

Si lo hacemos desde el propio servidor:

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

Non-authoritative answer:
Name:   google.com
Address: 142.250.184.14
Name:   google.com
Address: 2a00:1450:4003:806::200e

Y desde una máquina en red, la misma petición pero indicando la dirección IP del servidor DNS que estamos configurando:

~$ nslookup google.com 192.168.1.143
Server:         192.168.1.143
Address:        192.168.1.143#53

Non-authoritative answer:
Name:   google.com
Address: 142.250.200.142
Name:   google.com
Address: 2a00:1450:4003:806::200e

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.143
router  IN      A 192.168.1.1
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 22.04 LTS que no es el servidor, con el comando nslookup:

~$ nslookup puesto1.red.lan 192.168.1.143
Server:         192.168.1.143
Address:        192.168.1.143#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 22.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

143     IN      PTR ns.red.lan.
1       IN      PTR router.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.143
1.1.168.192.in-addr.arpa        name = router.red.lan.

¡Todo listo!

Conclusión

Ahora que sabes cómo instalar y configurar el servicio DNS Bind en Ubuntu 22.04 LTS Jammy Jellyfish 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

5/5 - (1 voto)

Deja un comentario

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies.

ACEPTAR
Aviso de cookies