jueves, 8 de octubre de 2015

INSTALACION DE UN SERVIDOR DNS MAESTRO EN RAPSBERRY

En este tutorial haremos que nuestra Raspberry PI 2 se comporte como un servidor DNS para nuestra red local. Este atenderá a las peticiones de resolución de direcciones pertenientes a nuestra LAN y reenviará el resto de las peticiones a los servidores DNS externos como Google, Telefónica,... (este último punto ya lo configuramos en el anterior tutorial).

Esto es útil para relacionar las ips de cada uno de los dispositivos con un nombre específico, lo cual nos facilitará la tarea a la hora de identificarlos y de conectar con ellos a través de diferentes protocolos (ftp, samba,...).

La mayoría de nuestros dispositivos están configurados en DHCP, por lo que también sería interesante que cada vez que el servidor DHCP conceda una dirección ip a un dispositivo actualice ese cambio en los registros DNS del servidor y con eso poder estar seguro de que el nombre de un equipo se corresponde con su ip si ésta cambia .

Deberá existir una comunicación entre "ISC_DHCP" y "BIND9". Esta comunicación tiene que ser lo más segura para evitar posibles ataques que puedan alterar los registros DNS del servidor.

Por eso, crearemos una clave con el comando "rndc":


$ sudo rndc-confgen –a

Se creará el archivo /etc/bind/rndc.key que será la clave que incluiremos tanto en el servicio DHCP como en el DNS para que se comuniquen entre sí de manera segura.

Una vez hecho esto, configuraremos las zonas DNS.

Vamos a crear la zona directa e inversa, que serán las encargadas de resolver los nombres en direcciones ips y viceversa  respectivamente. Para ello crearemos un dominio, por ejemplo, "castillo.local".

Abriremos el archivo donde declaramos las zonas e indicamos el archivo que contiene la clave compartida de comunicación:

$ sudo nano /etc/bind/named.conf.local

Añadiremos estas líneas:

include "/etc/bind/rndc.key"; # Archivo y ruta  de nuestra clave compartida

zone castillo.local { # Declaración de la zona directa
 type master; # Actuará como servidor maestro
 file "/var/lib/bind/castillo.local"; # Ubicación del archivo de la zona directa
 allow-update { key rndc-key; };  # Permitimos comunicación solo con la clave compartida
};

zone 0.168.192.in-addr.arpa { # Zona de resolución inversa
 type master; # Actuará como servidor maestro
 file "/var/lib/bind/0.168.192"; # Ubicación del archivo de la zona inversa
allow-update { key rndc-key; }; # Permitimos comunicación solo con la clave compartida
};

Para asegurarnos que la configuración es correcta ejecutamos:

$ sudo named-checkconf

Si no nos devuelve ningún error, pasaremos a configurar cada zona de nuestro nuevo dominio.
Para ello editaremos el archivo:

$ sudo nano /var/lib/bind/home.local

Añadiremos las siguientes líneas:


# Apuntamos que el dominio cuelga directamente del dominio “.”, root.
$ORIGIN .
# Definimos el tiempo de vida en segundos de conservación en cache
$TTL 604800

# Declaramos el SOA. Es el primer registro que especifica el servidor DNS primario del #dominio, la cuenta de correo del administrador y el tiempo de refresco de los servidores #secundarios.
castillo.local IN SOA raspberrypi.castillo.local. webmaster.castillo.local. (
 13535276 ; serial
 10500 ; refresh
 3600 ; retry
 604800 ; expire
 38400 ; negative
 )
;

# Definimos el servidor principal para el dominio.
 NS                   raspberrypi.castillo.local.          

# Declaramos el origen en nuestro dominio.
$ORIGIN castillo.local.

# Aquí definiremos los registros fijos, en nuestro caso la Raspberry y un NAS
raspberrypi      A       192.168.0.101  # correspondemos la ip de la raspberry a un nombre
nas               A        192.168.0.102 # correspondemos la ip del nas a un nombre
rpi            CNAME   raspberrypi # creamos un alias para el servidor

Una vez configurada la zona directa comprobamos que todo está correcto:

$ sudo named-checkzone castillo.local /var/lib/bind/castillo.local

Nos devolverá la siguiente salida:






El siguiente paso es configurar la zona inversa. Editamos el archivo:

$ sudo nano /var/lib/bind/0.168.192

Introducimos las siguientes líneas:


# Apuntamos que el dominio cuelga directamente del dominio “.”, root.
$ORIGIN .

# Definimos el tiempo de vida en segundos de conservación en cache
$TTL 604800  

# Declaramos el SOA como hicimos en la zona directa
0.168.192.in-addr.arpa  IN SOA  raspberrypi.castillo.local. webmaster.castillo.local. (
                                20         ; serial
                                10800      ; refresh (3 hours)
                                3600       ; retry (1 hour)
                                604800     ; expire (1 week)
                                38400      ; minimum (10 hours 40 minutes)
                                )

# Definimos el servidor principal para el dominio.
 NS      raspberrypi.castillo.local.

# Declaramos el origen en nuestro dominio.
$ORIGIN 0.168.192.in-addr.arpa.

# Aquí definiremos los punteros fijos, en nuestro caso la Raspberry y un NAS

101                     PTR     raspberrypi. # añadimos el registro PTR de la Raspberry
102                     PTR      nas # añadimos el registro PTR del nas

Una vez más comprobamos que la configuración es satisfactoria:

$ sudo named-checkzone 0.168.192.in-addr.arpa /var/lib/bind/0.168.192

Nos devolverá:






Con esto ya estamos listos para reiniciar el servicio y activar las nuevas zonas añadidas:

$ sudo /etc/init.d/bind9 restart

Podemos comprobar que nuestro servidor DNS está funcionando perfectamente:

$ nslookup











Para finalizar este tutorial configuraremos nuestro servidor DHCP para que cuando asigne una ip a un dispositivo actualice el registro de la zona DNS, por lo que si la ip de un equipo cambia se actualizará en el registro DNS.

Abrimos el archivo  con el que configuramos el servidor DHCP:

$ sudo nano /etc/dhcp/dhcpd.conf

Modificamos y añadimos las siguientes líneas:


ddns-updates on; # Permitimos la actualización dinámica DNS
ddns-update-style interim; # Sistema de actualización dinámica
update-static-leases on; # Permitimos la actualización de las ips reservadas en DHCP
include "/etc/bind/rndc.key"; # Declaramos la clave compartida

ddns-domainname "castillo.local."; # Definimos el dominio
ddns-rev-domainname "in-addr.arpa."; # Declaramos el dominio ddns inverso

Al reiniciar ambos servicios ya tendríamos listo nuestro servidor DNS:

$ sudo /etc/init.d/isc-dhcp-server restart
$ sudo /etc/init.d/bind9 restart

En el próximo tutorial instalaremos el servicio "SAMBA" con el que podremos compartir carpetas y archivos desde cualquier sistema operativo ( Windows, Linux, OSX,..).


No hay comentarios:

Publicar un comentario