Sábado, Noviembre 18, 2017

Creando un sencillo servidor DNS cache

bind9-lignux

Tener un servidor DNS en una red local es muy útil para mejorar la velocidad de respuesta de todos los dispositivos, ademas nos puede ayudar a mejorar la privacidad, ya que la mayoría de peticiones DNS no viajaran fuera de nuestra red. Este tutorial es perfecto para los que tenemos una RPI en casa o cualquier tipo de dispositivo conectado 24h en la red. También puede ser útil para usarse de forma local en un único equipo, ya que a nivel de SO en GNU/Linux no se suele cachear.

En este caso voy a usar bind9, este al recibir una solicitud mirara si esta en su base de datos/cache, en caso contrario solicitara a otro DNS la IP, de esta forma la primera vez que se vaya a resolver el nombre sera algo más lento, pero luego mejoran muchísimo los tiempos.
Para esta guía voy a suponer que se tiene instalado Debian o algún derivado como Raspbian.

Configuración del servidor:

Antes de empezar siempre nos debemos asegurar tener todo el sistema actualizado:

# apt update && apt upgrade

Instalamos bind9:

# apt install bind9

Realizamos una copia de seguridad del fichero de configuración:

# cp /etc/bind/named.conf.options /etc/bind/named.conf.options.back

 Por suerte bind9 ya viene configurado para funcionar como servidor cache y únicamente debemos de agregar las IPs de los servidores que tomara los datos, por lo tanto descomentamos la sección de forwarders y agregamos unas cuantas IPs:

forwarders {
8.8.8.8;
208.67.222.222;
8.8.4.4;
208.67.220.220;
};

Eso seria un ejemplo, podemos agregar los que queramos, los más recomendables son los más rápidos en la zona de cada uno, en mi caso son los de google y OpenDNS, pero aquí tenéis algunos interesantes que respetan la privacidad:

https://dns.watch/

84.200.69.80
84.200.70.40

www.piratpartiet.no/dns/

87.238.35.136
185.56.187.149

www.opennicproject.org/

5.9.49.12
87.98.175.85
193.183.98.15
45.135.183.146

Ahora levantamos el servicio:

Testando desde otro host:

Con esto ya deberíamos de poder hacer unas pruebas para ver si funciona correctamente, para eso vamos a usar dig:

$ dig @ip.de.nuestro.dns www.url.com

Se debe sustituir la IP por la correspondiente, en mi caso quedaría así:

$ dig @192.168.1.5 www.lignux.com | tail -n 5

Solo imprimirá las últimas 5 lineas que son las interesantes:

;; Query time: 54 msec
;; SERVER: 192.168.1.5#53(192.168.1.5)
;; WHEN: Fri Oct 20 18:22:07 CEST 2017
;; MSG SIZE rcvd: 218

La primera linea nos mostrara el tiempo que ha tardado, pero si lo volvemos a ejecutar vemos como baja drásticamente:

;; Query time: 1 msec
;; SERVER: 192.168.1.5#53(192.168.1.5)
;; WHEN: Fri Oct 20 18:23:39 CEST 2017
;; MSG SIZE rcvd: 218

Si todo ha ido bien agregamos bind9 al arranque:

# systemctl enable bind9

Configurando el router:

Ahora debemos hacer que nuestros equipos usen por defecto este DNS y no el que nos proporciona nuestro ISP, cada router es un mundo y probablemente debamos de buscar información del modelo especifico de cada uno, pero igualmente voy a dar unas indicaciones básicas.

Para empezar debemos de configurar el servidor con una IP fija, esto se puede hacer desde el propio host o aun mejor desde el DHCP:

router2-1

Y también cambiamos los valores del los servidores DNS que proporciona por defecto:

router3-1

Con esto deberíamos de obtener una IP estática por el DHCP, pero no es instantáneo, deberíamos de poder obtener la IP nueva forzando una petición nueva:

# dhclient -r eth0 && dhclient eth0

Como extra voy a señalar como forzar el uso de los DNS que queramos haciendo caso omiso a los datos proporcionados por el DHCP:

# echo nameserver 192.168.1.254 > /etc/resolv.conf

Y esto agregara manualmente nuestro servidor como único DNS (podemos poner varios, uno por linea), si queremos que el cambio sea persistente debemos de modificar el fichero: “/etc/resolv.conf.head” en el cual agregamos de la misma forma las IPs que nos interesen.

Si todo ha ido bien a partir de ahora todos nuestros dispositivos al intentar acceder a un dominio primero preguntara a nuestro servidor local mejorando considerablemente la velocidad de navegación do todos los dispositivos en la casa, pero ademas si abrimos los puertos podemos realizar solicitudes desde fuera.

 

Fuente: lignux

¿Quién está en línea?

Hay 40 invitados y ningún miembro en línea

Contador de Visitas

9047739
Hoy Hoy 1122
Ayer Ayer 1413
Esta semana Esta semana 8287
Este mes Este mes 26230
Total de Visitas Total de Visitas 9047739

Día con más
visitantes

11-11-2017 : 2493

Gracias por su visita