Instalación y configuración de un servidor: DNS BIND9

Introducción

Como técnicos informáticos entendedores de la materia, no podemos perder tiempo cada vez que tengamos que editar el archivo hosts de los clientes, cada vez que tengamos que resolver un nombre nuevo del servidor y tampoco podemos aprender las direcciones IP de memoria. Queremos centralizar la gestión de los nombres de una vez.

Esto lo solucionamos instalando un servidor DNS, en nuestro servidor principal para que resuelva todas los nombres de direcciones automáticamente y minimizar el tiempo de carga gracias a la caché que este guarda.

En nuestro caso los clientes serán; Un Debian 10.2 (Con entorno gráfico) y un Windows 7 (Home Premium).

Caso Práctico

Como se venir el director de la universidad está cansado de las molestias ocasionadas por el departamento informático, al entrar en su ordenador para añadir una nueva dirección al archivo «Hosts» cada vez que configuremos un nombre nuevo en el servidor.

Pero si evitamos cambiar el archivos Hosts tendremos que aprendernos las direcciones de memoria. Esto se solucionara de una vez y nos ahorrará trabajo en el futuro, evitando trabajar de más y ser mas eficientes en las búsquedas, ya que estarán guardadas en caché y será más rápido.

Para esto estuvimos investigando diferentes opciones para suplir esta necesidad. Llegamos a la conclusión de utilizar bind9, ya que es el más potente hasta la fecha para gestionar un servicio DNS y mas resultados en Google para posibles errores si ocurrieran.

Trabajaré sobre un entorno VirtualBox preparado y configurado para esta tarea , pero se puede hacer con máquinas reales conectadas y cableadas entre sí.

Explicación Básica de un Servidor DNS

El Domain Name System (Sistema de nombres de dominios) es un servidor encargado de asignar nombres de dominio a direcciones IP en la red de internet y localmente, además también ayuda a localizar los servidores de correo en los dominios. Su función básica es la necesidad de acceder a una máquina mediante su nombre y no su dirección IP, un ejemplo:

Nosotros podemos entrar a Google de dos maneras diferentes, mediante el nombre de dominio http://www.google.com o escribiendo en el navegador 8.8.8.8, directamente recordar números es mucho más difícil que un nombre. Además la dirección numérica podría cambiar en algún momento, pero el nombre es mucho más fiable a la hora de entrar en una web.

Pero el servidor DNS no solo resuelve nombres de dominio, también tiene una lista guardada en cache donde guarda todas las paginas recientes que hemos buscado fuera de nuestra red local, estas quedaran guardadas durante un periodo de tiempo especificado por el administrador de la red.

Esto lo que haces es aumentar las velocidades de búsqueda de un nombre de dominio en internet, si este fue buscando por algún usuario previamente. También nuestro DNS tiene una funciona llamada Reenviador, donde puedes especificarle otro servidor fuera de la red local, que pueda preguntarle si él no tiene la respuesta. Cuando sale la primera vez a internet a preguntar una petición suele tardar un lapso de tiempo largo, pero la segunda vez que se hace la petición suele tardar entre 0,1 segundo o es instantáneo de cara al usuario, ya que queda guardada en la caché.

Instalación del Servicio DNS

Después de explicar cómo funciona un servidor DNS y la importancia que tiene en la red, pasaremos a su instalación y configuración. Seguiremos trabajando en el mismo entorno que las prácticas anteriores, y nos ayudaremos de los servicios ya instalados como DHCP para difundir la dirección de nuestro DNS.

Empezaremos actualizando los repositorios y los paquetes.

apt-get update

Luego instalamos los paquetes actualizados.

apt-get upgrade

La paquetería necesaria para empezar a funcionar se llama bind9, este será el instalador de nuestro servidor DNS.

apt-get install bind9

Verificaremos que el servicio está bien instalado y funcionando.

systemctl status bind9

Las comprobaciones realizadas fueron un éxito pasaremos a la configuración y explicación de los distintos fichero de configuración en el DNS.

Configuración del Servicio DNS

Este servicio puede resultar un poco confuso al principio por la cantidad de ficheros de configuración que tenemos, pero realizare una pequeña introducción.

named.conf.localArchivo principal donde tendremos que crear las nuevas zonas del DNS y opciones del servidor.
named.conf.optionsLa zona de reenviadores donde agregaremos otros servidores DNS, donde nuestro envíos envía otra petición si él no puede resolverla.
db.localhostEs el archivo principal donde se realizan las peticiones y resolución de direcciones IP por nombres de dominio.
db.127Es el archivo donde se resuelven las direcciones de zona inversa de mi red local. Una aclaración de la zona inversa es la resolución del nombre de dominio usando su dirección IP.

Después de aclarar un poco todos los archivos que vamos a utilizar empezaremos creando la zona principal donde definiremos el nombre de nuestro dominio y su resolución de manera inversa.

nano /etc/bind/named.conf.local

Aquí dentro añadiremos los siguiente parámetros exactamente como se ve sin saltarse ningún punto.

Explicación del código añadido para crear las zonas directas e inversas:

zone “salomundo.com{“Nombre de la zona o dominio”}
type master;Indica que el servidor que usamos en la zona en nuestro caso es maestro. Si utilizáramos esclavo se pondría «slave«.
file “db.salomundo.com”;Hace referencia al fichero donde están todas las resoluciones de nombres, este fichero tendremos que crearlo basándonos en una plantilla ya creada al instalar bind9. Lo crearemos en «/var/cache/bind/db.salomundo.com»;
zone “10.168.192.in-addr.arpa”Esta dirección tiene que tener los 3 primeros dígitos de nuestra red al contrario.
type master;Indica que el servidor que usamos en la zona en nuestro caso es maestro. Si utilizáramos esclavo se pondría «slave«.
file “db.192.168.2”;Es el fichero que contendrá los registros de resoluciones inversas. Lo crearemos en «/var/cache/bind/db.192.168.10»;

Cuando salgamos del fichero hacemos Ctrl + O para guardar la configuración.

Configuración zona de búsqueda directa

Ahora utilizaremos la plantilla para crear la zona de resolución directa y lo copiaremos con el nombre de nuestra zona en «/var/cache/bind/db.salomundo.com«.

cp /etc/bind/db.local /var/cache/bind/db.salomundo.com

Entramos en el nuevo fichero creado y tendremos que crear los CNAMES, CORREO MX, A, AAAA, NS.

nano /var/cache/bind/db.salomundo.com
SOAProporciona información sobre el servidor DNS primario de la zona.
NSEs la asociación de un nombre de dominio y los servidores de nombres que almacena las direcciones del mismo dominio.
MXAsocia un nombre de dominio a una lista de servidores de intercambio de correo para ese dominio.
AEste registro se usa para traducir nombres de servidores en dirección IPv4.
AAAAEste registro se usa en IPv6 para traducir nombres de hosts a direcciones IPv6.
CNAMESSe usa para crear nombres de servidores de alojamiento adicionales, o alias, para los servidores de alojamiento de un dominio.

Es muy importante que a la hora de la configuración se ponga el punto al final de las direcciones y nombres de configuración. Esto significa que el servidor DNS buscará desde el servidor raíz principal es decir el nuestro.

Los recuadros rojos son los que tendremos que agregar manualmente todo lo demás lo dejamos por defecto.

En el SOA tendremos que configurar el nombres de nuestro dominio y añadir el postmaster para el futuro si instalamos un servidor de correos.

En el NS configuraremos la resolución del nombre de nuestra dominio y la maquina donde está alojada.

«Importante» el $ORIGIN es una variable para no tener que poner en cada nombre de registro domingo.»salomundo.com.» con ponerlo arriba ya se añade automáticamente en los registros. Esto nos ahorra tiempo de escritura y nos hace más eficientes.

Añadiremos el registro A: Para resolver el nombre de la máquina domingo.

Añadiremos el registro A: Con la dirección IP de la máquina cliente en reserva en mi caso es «192.168.10.76«.

Añadiremos un registro CNAME: Para que traduzca la pagina web «informatica.salomundo.com» donde esta alojada nuestra moodle.

Guardaremos el fichero con Ctrl + O, y verificaremos con un «systemctl restart Bin9» que no aparece ningún error, aunque esto no es señal de que tengamos bien configurado los ficheros solo avisa de errores generales y muy graves.

systemctl restart bin9

Es muy común que los errores se produzcan al no poner las «;» en el fichero «/etc/bind/named.conf.local«. Verificar muy bien la sintaxis escritas y los pequeños fallos. Ahora configuraremos la zona inversa y realizamos lo mismo.

Configuración zona inversa

Ahora utilizaremos la plantilla para crear la zona de resolución inversa y lo copiaremos con el nombre de nuestra zona en «/var/cache/bind/db.192.168.10«.

cp /etc/bind/db.local /var/cache/bind/db.192.168.10

Entramos en el fichero de configuración inversa y configuraremos lo mismo que en la zona directa, pero a la hora de llegar al $ORIGIN deberemos hacerlo de una manera distinta.

nano /var/cache/bind/db.192.168.10
PTRTambién conocido como «registro inverso«, funciona a la inversa del registro A, traduciendo IPs en nombres de dominio.

Cuando configuremos la zona inversa deberemos poner la variable, empezando por los 3 primeros dígitos de nuestra red local y añadiéndole «in-addr.arpa.», que significa resolución inversa. Deberemos poner solo los registros A y además a la inversa empezando por el final de la IP, pero como tenemos el alias que nos autocompleta solo tendremos que escribir el último dígito de la ip.

Por ejemplo: Si la ip del cliente es 192.168.10.76, yo tengo configurado mi alias para que me resuelva hasta el 3 dígito. Además el nombre del host tendrá que escribirse completo.

Añadiremos el registro PTR: 192.168.10.1 que hace referencia inversamente a domingo.salomundo.com.

Añadiremos el registro PTR: 192.168.10.76 que hace referencia inversamente a cliente.salomundo.com.

Guardaremos el fichero con Ctrl + O, y verificaremos con un «systemctl restart Bin9» que no aparece ningún error, aunque esto no es señal de que tengamos bien configurado los ficheros solo avisa de errores generales y muy graves.

systemctl restart bin9

Configuración de la zona reenviadores

Entramos en el siguiente fichero:

nano /etc/bind/named.conf.options

Modificando este fichero conseguiremos que nuestro servidor DNS también resuelva IPs
de Internet. Los reenviadores que elegiremos serán los de google 8.8.8.8 (Google) y
192.168.102.2 (Papion), nos quedará el fichero:

dnssec-validation y lo ponemos a «no«. Esto desactivará la validación de
respuestas, lo que haces es:

•Autentificar el origen de los datos de un servidor DNS.
• Mantener la integridad de los datos entre servidores DNS.
• Denegación de existencia autenticadas.

Esto lo que haces es permitir todas las respuestas de los servidores que pongamos de reenviadores. Estén autenticadas o no.

systemctl restart bin9

Configuración del DHCP

Para terminar la configuración del servidor y empezar a hacer pruebas desde los servidores tendremos que poner como «dns primary» la dirección de nuestro propio servidor DNS en la configuración del dhcp. Entramos en:

nano /etc/dhcp/dhcpd.conf

Ademas podemos comprobar que la reserva está realizada para el cliente debian.

systemctl restart isc-dhcp-server.service

Comprobación de los nombres DNS en Debian

Vamos a comprobar que el servidor DNS funciona correctamente y resuelve bien las direcciones.

Esta es la configuracion en mi máquina debian:

Además las resoluciones en el fichero hosts están comentadas es decir no están funcionando.

  • Dirección ip de informatica.dominio.com.
  • Nombre de la dirección ip del servidor (resolución inversa).

Aquí vamos a ver lo que estuvimos hablando antes de la caché del servidor DNS, cuando busquemos por primera vez la url de «josedomingo» tardará más tiempo de la cuenta ya que es la primera vez que la buscamos y además tiene que salir a fuera (internet) para encontrar la resolución del nombre.

Si volvemos a buscar veremos cuanto tiempo tardará esta vez:

  • Dirección ip del usuario con la reserva directa e inversa.

Buscando la dirección directa:

Buscando la dirección inversa:

Comprobación de los nombres DNS en Windows

Vamos a comprobar que el servidor DNS funciona correctamente y resuelve bien las direcciones.

Esta es la configuracion en mi maquina Windows.

  • Dirección ip de informatica.dominio.com.
  • Nombre de la dirección ip del servidor (resolución inversa).
  • Dirección ip del usuario con la reserva directa e inversa.

Buscando la dirección directa:

Buscando la dirección inversa:

Como podemos ver con las capturas anteriores nos resuelven todas la direcciones directas y inversas.

Este sería el final del post. Si tenéis algún problema con errores de ficheros, verificar las faltas de ortografía y erratas que suele ser el mayor problema a la hora de configurar ficheros en debian.

Muchas gracias por ver este post, si tienes alguna duda deja tu comentario abajo. 😋

Deja un comentario