Instalación y configuración de un servidor DNS en Ubuntu Server 16.04

Esto se trata de una guía práctica, en este caso sobre la implantación de un servidor DNS, por lo que no se explicará toda la teoría que hay detrás del servicio DNS y pasaremos directamente a como se instala y configura el servicio. No obstante, antes de ponernos manos a la obra vamos a ver un par de conceptos necesarios para saber que estamos montando y por qué de esa manera.

Una consulta es una solicitud de resolución de nombres que se envía a un servidor DNS. Hay dos tipos de consultas:

a) Recursivas.

b) Iterativas o no recursivas.

Si un servidor DNS es autoritativo en el espacio de nombres de la consulta: comprobará la caché, comprobará las zonas existentes (base de datos) y devolverá la dirección IP solicitada.

Si un servidor DNS no es autoritativo en el espacio de nombres de la consulta, realizará una de las siguientes acciones:

a) Utilizar sugerencias raíz para encontrar una respuesta a la consulta.

b) Reenviar la consulta que no puede resolverse a un servidor especifico denominado Forwarder (Reenviador).

Teniendo estos conceptos en cuenta, vamos a implementar un Servidor DNS de tipo master con zonas directa e inversa para la resolución de nombres en nuestra red local, de la cual será autoritativo, y haremos uso de forwarders para las consultas externas.

1.- Actualizamos los repositorios de nuestro sistema, Ubuntu Server 16.04.

2.- Procedemos a instalar, con permisos de superusuario, el paquete necesario mediante apt. Dicho paquete es bind9.

3.- El primer fichero que vamos a editar será /etc/bind/named.conf.local. En él definiremos las zonas, directa e inversa, para el dominio ficticio midominio.local haciendo uso de la clausula zone. Cada bloque de zona incluirá de que tipo será la zona y el fichero en el que estarán definidas, para cada zona, las características, propiedades y entidades del dominio.

4.- Una vez definidas las zonas, vamos a comprobar que la configuración sea correcta y no hayamos cometido errores en la sintaxis del fichero. Usaremos el comando named-checkconf. Si tras lanzar el comando no nos devuelve nada, significará que no se han encontrado errores.

5.- Ahora vamos a crear los ficheros de zona que hemos indicado anteriormente en la configuración. Para su creación vamos a tomar como plantillas ficheros de zonas que se crean al instalar el paquete bind9 y los editaremos. Para la zona directa crearemos el fichero /etc/bind/db.midominio.local.

6.- Una vez creado el fichero lo editaremos y cambiaremos/añadiremos el nombre del dominio y las entidades  por las nuestras.

7.- Como hemos hecho anteriormente para el fichero de zona directa, haremos lo mismo para crear el fichero de zona inversa.

8.- Una vez creado el fichero lo editaremos y cambiaremos/añadiremos el nombre del dominio y las entidades  por las nuestras.

9.- Lo siguiente que haremos será comprobar que la configuración de los ficheros de zonas la hemos realizado correctamente y no hayamos cometido errores en la sintaxis del fichero. El comando que vamos a usar para comprobar los ficheros de zonas es named-checkzone seguido del nombre del dominio y del fichero en cuestión. Sabremos que todo está correctamento configurado si obtenemos un OK como respuesta.

10.- El siguiente paso será editar el fichero /etc/bind/named.conf.options donde crearemos una lista de acceso para restringir quien puede realizar las consultas a nuestro servidor DNS e indicaremos un par de servidores forwarders donde delegará nuestro servidor DNS local cuando no pueda resolver alguna consulta.

11.- Después de esto ya tendremos configurado nuestro servidor DNS como queremos. Solo queda reiniciar el servicio bind9 y comprobar que esté corriendo correctamente.

12.- Por último, editaremos la configuración de red de nuestro Ubuntu Server para indicar que él mismo es el servidor DNS que tendrá que consultar para la resolución de nombres.

13.- Una vez editada la configuración de red, tumbamos y levantamos el adaptador de red para que los cambios surtan efecto.

14.- Podemos comprobar que los cambios en la configuración de red han surtido efecto visualizando el fichero /etc/resolv.conf, donde deberá aparecer la IP de localhost como servidor DNS y el nombre del dominio ficticio que hemos creado, en nuestro caso midominio.local.

Una vez llegados a este punto, ya tendremos nuestro servidor DNS local instalado, configurado y funcionando correctamente. Vamos a realizar un par de pruebas con nslookup para comprobar si el servidor DNS está resuelve correctamente los nombres y las IPs.

Como podemos ver en la imagen, cuando preguntamos por el nombre de dominio de un equipo perteneciente a la red local, donde nuestro servidor DNS es de tipo master y por lo tanto autoritativo, nos da una respuesta autoritativa con la IP que le corresponde a cada equipo y cuando preguntamos por google.es, el servidor DNS nos da una respuesta no autoritativa ya que nuestro servidor DNS usa los forwarders para realizar la resolución de nombres y por lo tanto no es autoritativo para esa zona.

¿Por qué usar forwarders en lugar de Root hints?

Como hemos visto hemos configurado nuestro servidor DNS para que haga uso de forwarders en lugar de root hints. Existen dos razones principales para configurarlo de esa forma:

  • Unos forwarders configurados correctamente, a menudo proporcionan respuestas más rápidas que las sugerencias de raíz, aunque la diferencia es por lo general sólo una cuestión de milisegundos.
  • Evitar una mayor congestión en el tráfico de la red.

Vamos a ver mediante un par de capturas realizadas con el analizador de tráfico de red Wireshark la diferencia del número paquetes enviados y recibidos para una misma consulta, utilizando forwarders y root hints.

Tráfico generado por una consulta DNS fuera del ámbito local utilizando forwarders (reenviadores).
Tráfico generado por una consulta DNS fuera del ámbito local utilizando root hints (sugerencias de raiz).

Como podemos observar en las imágenes, la diferencia es bastante notoria para una misma consulta DNS, siendo la más beneficiosa el uso de forwarders ya que conseguiríamos una menor congestión en la red que si usáramos root hints.

Un comentario sobre “Instalación y configuración de un servidor DNS en Ubuntu Server 16.04

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *