Contents

Montar un servidor casero con Raspberry Pi (Parte 4): Configurar servidor DNS caché

En este cuarto episodio del tutorial aprenderemos a instalar y configurar nuestro propio servidor DNS caché en la Raspberry Pi, con el objetivo de mejorar la velocidad de navegación de los dispositivos de nuestra LAN.

Nuestro servidor guardará las consultas DNS realizadas durante un periodo de tiempo, así aquellas consultas repetidas en dicho periodo serán mucho más rápidas ya que no llegarán a salir de nuestra propia LAN.

/wp-content/uploads/2013/04/banner-tutorial-raspi_-dns-e1367257680362.png
Configurar servidor DNS cache Raspberry

Índice de tutoriales:

  1. Objetivos e índice.
  2. Instalar Raspbian en una tarjeta SD.
  3. Primera ejecución de Raspbian.
  4. Configurar servidor DHCP.
  5. Configurar servidor DNS caché.
  6. DNS local con actualizaciones DHCP.
  7. Acceder al servidor desde el exterior.
  8. Instalación y configuración de OpenVPN.
  9. NAS con Raspberry Pi y Samba

Tutoriales relacionados:

Instalar servidor DNS en Raspbian

Para instalar nuestro servidor DNS en la Raspberry Pi tiraremos, como no, de nuestro querido gestor de paquetes, así que:

1
$ sudo apt-get install bind9 bind9-doc dnsutils

Como podemos ver adicionalmente hemos instalado dnsutils, que contiene una herramienta a la que posteriormente le daremos uso.

Configurar servidor DNS caché

Una vez instalado el servicio de DNS procederemos a configurarlo para que realice las funciones que precisamos. Para ello no está de más conocer los distintos archivos de configuración de BIND9:

  • /etc/bind/named.conf: Es el archivo de configuración principal de BIND9, se encarga de cargar tres archivos de configuración y centralizarlos.
  • /etc/bind/named.conf.options: Desde aquí podemos configurar las opciones generales del servicio, el directorio de trabajo, los forwarders, etc. Este es el archivo que tocaremos en esta parte del tutorial.
  • /etc/bind/named.conf.local: En este archivo podemos configurar las zonas locales del servidor DNS, esto es, configurar dominios que en vez de buscarse fuera mediante los forwarders se buscarán en el propio servidor DNS. Este archivo se utilizará en posteriores tutoriales.
  • /etc/bind/named.conf.default.zones: Donde podemos configurar las zonas por defecto del servidor. En futuros tutoriales se tocará este archivo.

La configuración por defecto después de la instalación de bind9 nos proporciona un servidor DNS caché listo para ser utilizado sin más problema, pero eso no es muy divertido que digamos, así que vamos a trastear un poco con los archivos de configuración para ver qué posibilidades tenemos.

Para nuestro servidor DNS caché necesitamos configurar solo el archivo named.conf.options, así que:

1
$ sudo nano /etc/bind/named.conf.options

Por defecto vienen algunas configuraciones así como una serie de advertencias en los comentarios. Deberemos dejar el archivo así:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
options {

directory “/var/cache/bind”; # Directorio donde se almacenará la caché.

auth-nxdomain no; # conform to RFC1035

# Reenviadores
forwarders { # Reenviamos las consultas a:
8.8.8.8; # DNS de Google.
8.8.8.4; # DNS de Google.
192.168.66.100; # IP del router.
};

# Opciones de seguridad
listen-on port 53 { # Escuchamos en el puerto 53 (Puerto por defecto)...
127.0.0.1; # ... por la interfaz de loopback...
192.168.66.101; # ... y por nuestra IP de red.
};

listen-on-v6 { none; }; # No escuchamos tráfico IPv6

allow-query { # Permitimos consultas DNS desde...
127.0.0.1; # ... la interfaz de loopback...
192.168.66.0/24; # ... y nuestra red interna.
};

allow-transfer { none; }; # Prohibimos la transferencia de zonas puesto que este es nuestro único servidor DNS de la LAN

allow-recursion { # Permitimos consultas recursivas desde...
127.0.0.1; # ... la interfaz de loopback...
192.168.1.0/24; # ... y la red interna.
};

};

Con esto tendremos el grueso de la configuración hecho, así que pasamos a comprobar que esta es correcta:

1
$ sudo named-checkconf

Si el comando no arroja ninguna salida indica que no se han encontrado errores, así que podemos continuar.

Después de esto reiniciaremos el servicio DNS con:

1
$ sudo /etc/init.d/bind9 restart

Hecho esto ya tenemos nuestro servidor DNS caché funcionando en nuestra Raspberry Pi.

Configurar los clientes con el nuevo servidor DNS caché

La configuración del servidor está hecha, el siguiente paso es que los clientes (incluido nuestro servidor), hagan las consultas DNS a nuestro servidor DNS caché en la Raspberry Pi.

Para cambiar el DNS de nuestra Raspberry Pi debemos realizar lo mismo que en el segundo tutorial, es decir, dirigirnos a /etc/resolv.conf y configurar el servidor DNS:

1
$ sudo nano /etc/resolv.conf

Borramos el contenido y añadimos:

1
nameserver 127.0.0.1

Con esto hecho nuestra Raspberry Pi está consultando a su propio servidor DNS las direcciones.

Para que los demás clientes de la red resuelvan nombres vía nuestro nuevo servidor DNS caché debemos acudir a lo explicado en el anterior tutorial y cambiar la configuración del archivo /etc/dhcp/dhcpd.conf y modificar el campo domain-name servers así:

1
option domain-name-servers 192.168.66.101;

Posteriormente reiniciamos el servicio dhcp con:

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

Y reiniciamos los clientes dhcp de los ordenadores clientes.

Comprobando el funcionamiento del servidor DNS Caché

Para comprobar que está funcionando podemos valernos de la herramienta dig, contenida en el paquete dnsutils, que nos indicará el tiempo de resolución del nombre. Para ello hacemos una primera consulta:

1
2
timbleck@mint ~ $ dig raspberrypi.org | grep Query
;; Query time: 68 msec

Que nos dará un tiempo en milisegundos elevado. Si volvemos a hacerlo con el mismo dominio:

1
2
timbleck@mint ~ $ dig raspberrypi.org | grep Query
;; Query time: 3 msec

Obtenemos un tiempo de respuesta MUY inferior gracias a que la Raspberry Pi no necesita volver a consultar al DNS de Google la información, ya que esta está contenida en la caché del servidor.

Observaciones finales

Haciendo pruebas bajo la misma línea entre la comparación de velocidad de resolución de nombres apuntando directamente a los DNS de Google y apuntando a la Raspberry Pi nos encontraremos con los siguientes datos:

Los tiempos de respuesta para la primera consulta sobre un dominio apuntando directo al DNS de Google o apuntando a la Raspberry Pi son muy similares, con variaciones de pocos ms entre un sistema y el otro. En cambio en la segunda consulta podemos observar como el tiempo consultando directamente al DNS de Google es el mismo que en la primera ocasión pero en la Raspberry Pi la resolución es casi inmediata.

Así que podemos decir tranquilamente que después de la implementación hemos ganado en velocidad de navegación gracias a nuestra Raspberry Pi.

Advertencia: Si dispones un ordenador con *buntu o derivadas (a partir de la versión 12.04) y la configuración de DNS no se te actualiza (apuntando siempre a 127.0.0.1 o 127.0.1.1) lee esto.