Instituto Polit�cnico Nacional
Instituto Politécnico Nacional
"La Técnica al Servicio de la Patria"
>

Boletín No. 43
1o. de Mayo de 2014

 


CONFIGURACIÓN DE UN SERVIDOR DNS CACHÉ EN LA MINICOMPUTADORA RASPBERRY PI

 

M. en C. Cyntia E. Enríquez Ortiz
M. en C. Raúl Fernández Zavala
IPN-UPIITA
Academia de Telemática

Resumen

Cuando se le indica a un navegador que vaya a una página web particular mediante su URL, este debe investigar la dirección IP que tiene el servidor web donde está almacenada dicha página, por lo que, el navegador necesita realizar una petición a un servidor DNS proporcionado por el Proveedor de Servicio de Internet (ISP, por sus siglas en inglés), esta operación tiene que repetirse cada vez que se consulta dicha página. Para acelerar este proceso, en una red de área local se puede instalar un servidor DNS caché, el cual se encarga almacenar las peticiones DNS de los clientes de la red y sus repuestas, logrando con esto incrementar la velocidad de navegación en Internet ya que disminuye el número de peticiones DNS al servidor proporcionado por el ISP. En este trabajo, se describe brevemente como configurar un servidor DNS caché en una minicomputadora Raspberry Pi.

Servidor DNS

Los servidores DNS son parte fundamental para poder visualizar mediante un navegador cualquier página web. Estos servidores son computadoras que en sus discos duros almacenan enormes bases de datos. Tienen registrada la relación que existe entre cada nombre de dominio y su dirección IP correspondiente. Los nombres de dominio, son los nombres con los cuales los seres humanos identificamos los sitios de Internet para que sean más fáciles de recordar y de escribir, por ejemplo upiita.ipn.mx, Google.com, raspbberrypi.org, etcétera. Las computadoras, por el contrario, identifican los sitios web y se conectan a ellos utilizando direcciones IP. Es en este punto, en donde entran en acción los servidores DNS, los cuales son como enormes y complejos directorios telefónicos, que a petición del cliente traducen o convierten los nombres de dominio solicitados, en las direcciones IP que les corresponden [1].  

Raspbian, el sistema operativo utilizado por la minicomputadora Raspberry Pi, permite la instalación de un servidor DNS llamado DNS bind9 [2], el cual tiene tres modos de funcionamiento: como servidor DNS maestro, como servidor DNS esclavo y como servidor DNS caché [3].

En el modo de servidor DNS maestro, el servidor se comporta como un auténtico servidor DNS para la red área local. Atiende directamente las peticiones de resolución de direcciones pertenecientes a la red y las reenvía a servidores DNS externos.

En el modo de servidor DNS esclavo, el servidor actúa como un servidor espejo de un servidor DNS maestro, permanece sincronizado con el maestro y se utiliza para repartir las peticiones de los usuarios entre varios servidores aunque las modificaciones solo se realizan en el maestro. En redes de área local, es raro que exista la necesidad de tener dos servidores DNS ya que con uno es suficiente.

Por último, en el modo de servidor DNS caché, el servidor se comporta como si fuera un auténtico servidor DNS para la red de área local aunque en realidad no es un servidor DNS propiamente dicho. Este servidor cuando recibe una petición DNS por parte de un cliente de la red, la traslada a un servidor DNS maestro que puede estar dentro o fuera de la red, almacena en una memoria caché la respuesta a dicha petición y también se la comunica a quien hizo la petición, de esta manera, si un segundo cliente vuelve a realizar la misma petición, como el servidor DNS caché tiene la respuesta almacenada en su memoria caché, responderá inmediatamente sin tener que enviar la petición a ningún servidor DNS externo. Por lo tanto, cuando se dispone de un servidor DNS caché en una red de área local se logra incrementar la velocidad de navegación en Internet, ya que, al navegar por diferentes sitios web, constantemente se tienen que realizar peticiones DNS a servidores externos, pero, si el servidor DNS caché almacena la mayoría de las peticiones que se realizan desde la red local, las respuestas a los clientes se darán prácticamente de forma instantánea.

Instalación y configuración del Servidor DNS caché en Rapsbian

Como primer paso se debe instalar el servidor DNS en la Raspberry Pi junto con algunas utilidades que sirven para verificar el funcionamiento del mismo, mediante el gestor de paquetes de Raspbian utilizando el comando $sudo apt-get install bind9 bind9-doc dnsutils.

Una vez instalado, se debe configurar el servidor para que actúe en modo de funcionamiento de servidor DNS caché, para lo cual primero se deben identificar los archivos de configuración de bind9, que son los siguientes [4]:

  • /etc/bind/named.conf, es el archivo principal de configuración y se encarga de cargar los tres archivos de configuración y centralizarlos.
  • /etc/bind/named.conf.options, desde aquí se pueden configurar las opciones generales del servicio, el directorio de trabajo, el modo de funcionamiento, entre otros.
  • /etc/bind/named.conf.local, en este archivo se pueden configurar las zonas locales del servidor DNS, es decir, los dominios que en vez de buscarse en servidores externos se buscan en el propio servidor DNS.
  • /etc/bind/named.conf.default.zones, en este archivo se pueden configurar las zonas por defecto del servidor.

Para configurar el modo de funcionamiento del servidor DNS caché se necesita editar solamente el archivo named.conf.options. Por defecto, vienen algunas configuraciones, así como una serie de advertencias en los comentarios. Para que el servidor funcione como DNS caché, el archivo debe quedar tal como se muestra en la figura 1, los campos marcados en rojo deben cambiarse por las direcciones IP correspondientes a la red de área local donde se encontrará ubicado el servidor DNS caché.

Figura 1. Archivo /etc/bind/named.conf.options

Para verificar que la configuración se ha realizado correctamente, se puede utilizar el comando $sudo named-checkconf, si este comando no arroja ninguna salida, indica que no se han encontrado errores y se puede continuar con la configuración. Posteriormente, se debe reiniciar el servicio DNS con el comando $sudo /etc/init.d/bind9 restart, una vez realizada esta acción, ya se tiene el servidor DNS caché funcionando en la Raspberry Pi.

Configuración de los Clientes para accesar al Servidor DNS caché

Una vez finalizada la configuración del servidor, el siguiente paso es que los clientes (incluido servidor), hagan las consultas DNS al DNS caché instalado en la Raspberry Pi. Para cambiar el DNS de la Raspberry Pi se debe abrir el archivo /etc/resolv.conf y configurar el servidor DNS, cambiando la dirección asociada a la línea name server por la dirección 127.0.0.1, tal como se muestra en la figura 2. Con esto, la Raspberry Pi estará consultando en su propio servidor DNS las direcciones IP asociadas a los nombres.

Figura 2. Modificación al archivo /etc/resolv.conf

Para que los demás clientes de la red resuelvan los nombres a través del servidor DNS caché, se debe cambiar la configuración del servidor DHCP de la red, editando el archivo /etc/dhcp/dhcpd.conf y modificando el campo option domain-name-servers para asignar la dirección de la Raspberry Pi, como puede observarse en la figura 3.

Figura 3. Modificación al archivo /etc/dhcpd.conf

Finalmente se reinicia el servicio dhcp con el comando $sudo /etc/init.d/isc-dhcp-server restart y se reinician los cliente dhcp de las computadoras clientes.

Verificación del funcionamiento del servidor DNS Caché

Para comprobar que el servidor DNS caché realmente incrementa la velocidad de navegación, se puede utilizar la herramienta dig, contenida en el paquete dnsutils, la cual indica el tiempo que toma una resolución de nombre. En la figura 4, se muestra el resultado de una primera consulta, la cual da el tiempo en milisegundos que se tardó el servidor DNS en resolver el nombre.

Figura 4. Tiempo estimado para la primera consulta a un dominio.

Al realizar una segunda consulta al mismo dominio, el resultado es el mostrado en la figura 5.

Figura 5. Tiempo estimado para la segunda consulta a un dominio.

Como se puede observar, el tiempo de respuesta es muy inferior gracias a que la Raspberry Pi no necesita volver a consultar con el DNS externo la información, ya que está contenida en la caché del servidor.

Conclusiones

La Raspberry Pi es una buena opción para contar con un servidor DNS caché en una red de área local y poder incrementar la velocidad de navegación, debido a su bajo precio y flexibilidad. Los tiempos respuesta para unaprimera consulta sobre un dominio consultando directamente al servidor DNS externo o consultando a la Raspberry Pi son muy similares, con variaciones de pocos milisegundos entre uno y otro. Sin embargo, en una consulta posterior al mismo dominio se puede observar que el tiempo disminuye considerablemente ya que se consulta directamente al servidor DNS caché de la Raspberry Pi y la resolución es casi inmediata.

Bibliografía

  1. Forouzan Behrouz, “TCP/IP Protocols Suite”, Mc. Graw Hill, 2010.

  2. Upton Eben, Halfacree Gareth, “Meet the Raspberry Pi”, Wiley, 2012.

  3. Carazo Gil Francisco J., “Ubuntu Linux. Instalación y Configuración Básica en Equipos y Servidores”, RA-MA, 2009.

  4. Andrew Hudson, Paul Hudson, “La Biblia De Ubuntu”, Anaya Multimedia, 2008.