Instalar y configurar bind9 (DNS)

⌛ Lectura estimada: 6 minutos

Buenas! Hoy vengo a hablaros sobre el DNS (Domain Name Server). En este post vamos a explicar cual es su finalidad y vamos a configurar el servicio bind9 en la plataforma linux (debian 8.2, jessie).

Función Servidor DNS

El sistema de nombres de dominio (DNS) es un sistema para asignar nombres a equipos y servicios de red que se organiza en una jerarquía de dominios. Las redes TCP/IP, como Internet, usan DNS para buscar equipos y servicios mediante nombres descriptivos. Por ejemplo cuando buscamos google.com, en realidad el ordenador lo traduce por la ip 8.8.8.8.

Que hace un Servidor DNS?

Un servidor DNS proporciona resolución de nombres para redes basadas en TCP/IP. Es decir, hace posible que los usuarios de equipos cliente utilicen nombres en lugar de direcciones IP numéricas para identificar hosts remotos. (ejemplo de google). Un equipo cliente envía el nombre de un host remoto a un servidor DNS, que responde con la dirección IP correspondiente.

Instalación y configuración bind9

Con esto ya nos podemos hacer la idea de que es un servidor DNS.
Esta practica la haré en virtualbox con la iso de debian 8.2 jessie), aunque podemos elegir cualquier versión. También recalcar que lo haré en una red interna, por lo cual mi ip será de clase B la 172.20.15.1.
Configuración red virtualbox (habilitaremos dos adaptadores, uno en adaptador puente y el otro en red interna:
Adaptador 1
Adaptador 2
Una vez configurado estos parámetros iniciaremos nuestra máquina y instalaremos bind9 con:
$ sudo apt-get install bind9
 
Una vez instalado nos dirigiremos a la carpeta /etc/bind
 
$ cd /etc/bind
 
Bien, ahora vamos a crear nuestra primera zona de dominio en named.conf.local por lo cual lo vamos a editar con:
$ sudo nano named.conf.local
 
Como vemos en la imagen estamos estableciendo el nombre de nuestro dominio, le estamos diciendo que es de tipo master, que la configuración se guardará en db.ns1 y que permitimos la transferencia con otra ip fuera de nuestro dominio. (mas adelante veremos su utilidad). // si no queremos hacer transferencia de zona nos podemos ahorrar el allow-transfer {192.168.1.103; };
 
 
Editar y crear el archivo db.ns1
 
$ cp db.local db.ns1
$ sudo nano db.ns1
Este archivo lo tenemos que dejar de la siguiente forma:
Si queremos declarar más registros de tipo a los añadimos mas a bajo:
Guardamos la configuración con Ctrl+o y ctrl+x para cerrar.
Reiniciamos el servicio bind9:
$ sudo systemctl restart bind9
Bien, ahora si hacemos una consulta a por ejemplo servidordatos o comptabilitat nos debería devolver su ip.
Ahora vamos a configurar el servidor dns para que resuelva dominios a la inversa, por su ip.
Editamos otra vez el named.conf.local y ponemos lo siguiente:
// si no queremos hacer transferencia de zona nos podemos ahorrar el allow-transfer {192.168.1.103; };
Una vez hecho esto vamos a crear y modificar el archivo db.172
 
$ sudo cp db.127 db.172
$ sudo nano db.172
 
Nos aparecerá algo similar a esto:
En localhost hemos de poner el ns1.allinformatrix.com y donde pone 1.0.0 dejarlo solo con el último número de la ip. (Ej: 80, 90, 70…) Veamos:
Una vez echo esto guardamos la configuración con Ctrl+o y ctrl+x para cerrar.
Reiniciamos el servicio bind9 y probamos si funciona:
$ sudo systemctl restart bind9
$ nslookup 172.20.15.1

Para no tener que poner todo el dominio con el nslookup, y solo poner la abreviatura de la máquina, por ejemplo nslookup servidordatos en vez de nslookup servidordatos.allinformatrix.com editaremos el archivo de configuración /etc/dhcp/dhclient.conf y descomentaremos y editaremos lo siguiente:
$ sudo nano /etc/dhcp/dhclient.conf
 
 
Reiniciamos bind9 y la red.
$ sudo systemctl restart bind9
$ sudo systemctl restart networking
 
Comprobamos que funciona haciendo un nslookup servidordatos o dir +noall +answer +search comptabilitat. En ambas nos devuelve la ip correctamente.
                            

Como hacemos la transferencia de zona?

Si queremos hacer la transferencia de zona, por ejemplo para que se vean las maquinas del dominio allinformatrix con ip (172.20.15.1) con las de informatrix ip (172.60.15.1), primero de todo tendremos hacer los pasos anteriores, tener instalado bind9, declarar la zona etc.. Una vez echo esto vamos descomentar un pequeño parámetro en /etc/dhcp/dhclient.conf (en todas las máquinas en las que hayamos instalado bind9)
Solo dejamos decomentadas las siguientes lineas con los valores:supersede domain-name “allinformatrix.com”; (en el dominio informatrix, sera informatrix.com)
prepend domain-name-servers 127.0.0.1;
request subnet-mask, broadcast-address, time-offset, routers;

1. Configuración del maestro:

En allow-transfer NO hemos de poner la ip 172.60.15.1 sino la puerta de enlace (la que esta en adaptador puente de la otra maquina)
2. Configuración del esclavo:
 
En la otra máquina tendremos que poner que es de tipo esclavo (type slave), la ruta donde se encuentra el archivo /etc/bind/db.ns1 y poner masters (que es donde pondremos la ip del maestro, también la que esta en adaptador puente).
3. Configuración del maestro a la inversa:
 
Basta con poner allow-transfer {192.168.X.X} (ip del esclavo)
4. Configuración del esclavo a la inversa:
 
Establecemos otra vez que es de tipo esclavo, ponemos la ruta, y en masters ponemos la ip del maestro.
Una vez guardado y reiniciado bind9 ya nos dejará hacer la transferencia de zona.
5. Configuración route 
 
Nos falta un último paso y es que se vean las dos redes, lo haremos mediante el comando route:
En maestro: (allinformatrix.com)
$ route add -net 172.60.15.0 netmask 255.255.255.0 gw 192.168.1.103
En esclavo: (informatrix.com)
$ route add -net 172.20.15.0 netmask 255.255.255.0 gw 192.168.1.102
 
Ahora probamos que funciona haciendo un nslookup a una máquina del otro dominio:
En este caso no podremos poner solo nslookup comptabilitat, ya que estamos accediendo a otro dominio.
*Si queremos que se vean las dos máquinas repetiremos el proceso en ambas.
Saludos y hasta el próximo tutorial!

Deja un comentario

Su dirección de correo electrónico no será publicada. Campos necesarios *