Configuración e instalación de BIND9. DNS y DNS replicado

Empezamos instalando el servidor DNS Bind9, para ello debemos ejecutar:

#apt-get install bind9

Con el instalado ya tendremos todo para poder tener nuestro propio servidor DNS, dentro de las posibles opciones de configuración existen tres:

  • DNS Maestro
  • DNS Esclavo
  • DNS Cache

La diferencia que existe entre las tres es la siguiente, el servidor DNS Maestro es el encargado de responder las peticiones a los clientes, cuando estos solicitan saber la dirección IP de un nombre, el servidor DNS Esclavo, esta sincronizado con el maestro y básicamente contiene los mismos registros y finalmente el servidor DNS cache, se encarga de resolver las peticiones de los clientes y cuando este no pueda lo consulta a un servidor DNS maestro, que puede estar fuera o dentro de la red local.

Cuando se finaliza la instalación del servicio BIND9 se nos creará una carpeta con el nombre bind, dentro de /etc.

Inicialmente trabajaremos sobre el fichero /etc/bind/named.conf.local en él crearemos las diferentes zonas que tengamos en nuestro dominio tanto de resolución normal como inversa.

Inicialmente crearemos una zona, así que para declararla debemos utilizar la siguiente sintaxis:

zone "blackwater.com" { // el nombre del dominio sobre la cual trabajara esta zona
 type master; // se declara este servidor DNS como Maestro
 file "/etc/bind/db.blackwater.com";// Ubicación del archivo que contendrá las resoluciones de nombre a IP
 allow-query { any; }; // Se permite la consulta desde cualquier equipo, se puede permitir lasconsultas a una dirección de red, o un equipo en concreto.
 };
named-conf-local
Imagen 1. Fichero named.conf.local.

Como veis en el fichero superior de ejemplo tengo 2 zonas, la ultima es la inversa, pero ya lo veremos más adelante.

En el fichero anterior apuntabamos a uno llamado db.blackwater.com, en este debemos tener una información parecida a la que encontraremos en el fichero de ejemplo db.empty, por lo que haremos una copia del mismo y la guardaremos con el nombre db.blackwater.com,  así que ejecutamos:

#cd /etc/bind && cp db.empty db.blackwater.com

Una vez copiado el fichero debemos entrar en el mismo y editarlo, lo que haremos será cambiar en la segunda linea, despues de los comentarios, donde pone localhost por nuestro dominio, en mi caso blackwater.com. 

db-blackwater-com
Imagen 2. Fichero ejemplo db.blackwater.com.

La linea @ IN SOA (Start Of Authority) define la autoridad del servidor de la zona a crear, esta linea lleva varios valores, significan lo siguiente:

  • Serial: Valor que varia cada vez que cambia el fichero de zona, con el fin, de que los otros servidores sepan que deben recargar el fichero.
  • Refresh: Tiempo que tiene que pasar hasta que los servidores esclavos puedan solicitar información al servidor DNS maestro
  • Retry: Tiempo que tiene que esperar el servidor esclavo antes de emitir una petición de actualización de datos cuando el servidor maestro no le responde.
  • Expire: Cuando termina este tiempo, y un servidor maestro no ha respondido a la petición de actualización, responde un servidor esclavo presentandose como la autorizada en la zona.
  • Negative Cache TTL: Tiempo que mantendrán los otros servidores la cache de la zona.

La siguiente línea define los registros que contendrá esta zona, para poder declararlos debemos utilizar la siguiente sintaxis para cada caso, tal y como se ve en la imagen 2.

@              IN    NS                  {NombreServidor}.{Dominio}.
 {NombreHost}  IN    A                   {IP}
 {Alias}       IN    CNAME               {NombreHost}.{Dominio}.
 {Dominio}     IN    MX   {Preferencia}  {NombreServidorCorreo}.{dominio}.
  • @ IN NS: Define los servidores DNS de la zona.
  • IN A: Este es el registro que más se verá en este fichero, enlaza un nombre de equipo con una IP.
  • IN CNAME: Un alias para un nombre de equipo, en la imagen superior se ve el ejemplo de BlackUbu, para el cual hay un registro CNAME (alias) con www, es decir cuando desde un host solicitemos la resolución del nombre http://www.blackwater.com,el servidor DNS buscará en los registro y verá que hace referencia a blackubu.blackwater.com y que este a su vez apunta a la dirección ip 192.168.1.156
  • IN MX: Registro utilizado para los servidores de correo de la zona.

Bien, una vez tenemos metidos todos los datos podremos realizar algunas pruebas, así que una de las formas más rápidas es en el fichero /etc/resolv.conf escribir una linea apuntando a la dirección IP loopback.

resolv.conf.PNG
Imagen 3. Resolv.conf.

Antes de probarlo sería recomendable reinicar el servicio bind9, ejecutando:

#service bind9 restart

Acto seguido comprobariamos el estado del servicio con:

#service bind9 status

Ejecutar el comando anterior no viene nada mal, ya que muchas veces podriamos llegar a tener un error de sintaxis, y simplemente por un punto y coma (;) las zonas no serían cargadas, así que si tuviesemos algun error sintáctico este comando nos lo diría. Si no obtuviesemos información relevante de la ejecución de dicho comadno siempre podemos recurrir a /var/log/syslog

Para probar el funcionamiento de nuestro servidor DNS podremos ejecutar los comandos que se veran en la siguiente imagen:

comprobación.PNG
Imagen 4. Comprobación del servidor DNS.

DNS INVERSO

Con el DNS Inverso lo que conseguiremos es realizar una consulta al servidor DNS pero que con tener la IP nos diga el nombre, algo que podremos realizar creando una zona inversa y declarando un registro PTR, para crear la zona debemos editar nuestro fichero named.conf.local y utilizar la siguiente sintaxis:

zone "1.168.192.in-addr.arpa" {//Declaramos la zona inversa, ya que estoy 
en una red   /24 tengo que declarar la parte de red de forma inversa
y agregando .in-addr.arpa
 type master; // se declara este servidor DNS como Maestro
 file "/etc/bind/db.1.168.192"; // Ubicación del archivo que contendrá 
 lasresoluciones de nombre a IP
 allow-query { any; }; // Se permite la consulta desde cualquier equipo, 
 se puede permitir las consultas a una dirección de red, 
 o un equipo en concreto.
 };

Con el fichero db.1.168.192 haremos lo mismo que con el db.blackwater.com, copiaremos el db.empty y lo escribiremos con el susodicho nombre.

# cp db.empty db.1.168.192

Editaremos el fichero y de igual forma que el anterior, pero en este caso agregaremos los registros PTR, con la siguiente sintaxis:

{IP}  IN   PTR    {NombreHost}.{dominio}. // La IP no debe  ser la 
dirección entera, más bien deberiamos decir último octeto 
para este caso (/24), o parte de host de la dirección IP.
db11168192
Imagen 5. Fichero db.1.168.192.

A continuación reiniciaremos el servicio bind9, comprobamos si existe algun error y si se han cargado correctamente las zonas, y entonces realizamos las pruebas.

comprobacionptr.PNG
Imagen 6. Comprobación del funcionamiento del DNS Inverso.

DNS REPLICADO

Para esto necesitaremos instalar bind9 en otro servidor, lo haremos de la misma forma que lo hemos hecho antes y una vez lo tengamos instalado debemos hacer un par de cosas, primero debemos editar el fichero named.conf.local en el Servidor Maestro, realizando los siguientes cambios en ambas zonas:

named-conf-local-master
Imagen 7. Edición del fichero named.conf.local en el servidor maestro.

La linea añadida es donde se ve el cursor: allow-transfer { 192.168.1.157; }; con esto declaramos a quien permitimos la transferencia de los datos. Otro cambio a realizar es añadir una linea más en los ficheros db.1.168.192 y db.blackwater.com.

@       IN          NS        BlackUbu2.blackwater.com

De esta forma estariamos declarando el nuevo servidor DNS esclavo. En las siguientes imagenes, lo que esta en rojo es lo que ha sido editado.

 

El pase de diapositivas requiere JavaScript.

Los siguientes cambios a realizar deben ser ejecutados en el servidor esclavo y deben realizarse en el fichero named.conf.local :

named-conf-local-slave
Imagen 10. Fichero named.conf.local en el servidor esclavo.

Como podeis detallar en la imagen superior las nuevas lineas añadidas en este fichero son type slave, declarando que este es un servidor esclavo, y masters {IP} con la dirección IP del servidor maestro.

Una vez hecho esto reiniciamos el serivicio en ambos servidores y entonces deberiamos tener generados los dos ficheros en el servidor esclavo (db.blackwater.com y db.1.168.192, en mi caso)

DNS FORWARDERS

Cuando nuestro servidor tiene una consulta que no puede responder, como en el caso del servidor DNS cache, este puede consultar a un servidor DNS maestro externo a la red local, para ello debemos establecer la dirección IP de este servidor en el fichero named.conf.options, quedando el fichero de la siguiente forma:

named-conf-options
Imagen 11. Fichero named.conf.options.

Si realizamos una petición de resolución de nombre a un host que no tenemos en nuestra zona, como sería el caso de http://www.google.es, veremos como es resuelta correctamente:

forwarders
Imagen 12. Forwarders

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s