Configuración de un servidor DNS en sistemas Debian

jueves, octubre 01, 2015 0 Comments



BIND (Berkeley Internet Name Domain, anteriormente: Berkeley Internet Name Daemon) es el servidor de DNS más comúnmente usado en Internet,1 2 especialmente en sistemas Unix, en los cuales es un Estándar de facto. Es patrocinado por la Internet Systems Consortium. BIND fue creado originalmente por cuatro estudiantes de grado en la University of California, Berkeley y liberado por primera vez en el 4.3BSD. Paul Vixie comenzó a mantenerlo en 1988 mientras trabajaba para la DEC.

Una nueva versión de BIND (BIND 9) fue escrita desde cero en parte para superar las dificultades arquitectónicas presentes anteriormente para auditar el código en las primeras versiones de BIND, y también para incorporar DNSSEC (DNS Security Extensions). BIND 9 incluye entre otras características importantes: TSIG, notificación DNS, nsupdate, IPv6, rndc flush, vistas, procesamiento en paralelo, y una arquitectura mejorada en cuanto a portabilidad. Es comúnmente usado en sistemas GNU/Linux.

El objetivo de este artículo es agilizar la resolución de DNS y configurar los reenviadores. Es útil para estaciones de trabajo que no dispongan de un servidor de DNS en la red local para mejorar los tiempos de respuesta en el caso de solicitar más de una vez la misma traducción y de paso ayudarnos a conocer el funcionamiento de un DNS server. El artículo no entra en la configuración de zonas, primarios, transferencias, etc.... ya que ese tipo de escenarios no son propios de una red doméstica.

Instalamos el paquete Bind9:
apt-get install bind9
Dependiendo de nuestra configuración pueden ser necesareos más pasos, si usamos un gestor con GUI gráfica como network-manager basta con modificar el apartado del dns por:

127.0.0.1
En caso de no disponer de una GUI gráfica para la administración de redes, debemos de realizar las siguientes acciones:

apt-get --purge remove resolvconf
editar el fichero /etc/resolv.conf :

nameserver 127.0.0.1
Configuramos reenviadores:

Ahora sólo nos queda configurar los reenviadores, que deberían de ser los DNS de nuestro ISP u otros que nos ofrezcan una buena latencia, como los que ofrece OpenDNS o Google. Para ello editamos el fichero:
nano -w /etc/bind/named.conf.options
y descomentamos las lineas donde vamos a añadir los reenviadores, en este caso he usado como ejemplo las de google:
options {
        directory "/var/cache/bind";

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.

        forwarders {
                8.8.8.8;
                8.8.4.4;
        };

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
};
Ahora sólo nos falta reiniciar el servicio para que se aplique la nueva configuración:

/etc/init.d/bind9 restart

Probando:

Ahora vamos a probar que todo funciona correctamente y las latencias de resolución. Nos ayudaremos el comando dig:
dig kernel.org
Y nos mostrará al final algo como esto:
;; Query time: 789 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Oct 01 19:39:23 CEST 2015
;; MSG SIZE  rcvd: 489
Si repetimos la consulta vemos que el tiempo de resolución baja notablemente, esto es debido a que la resolución ya se encuentra en la cache.
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Oct 01 19:40:54 CEST 2015
;; MSG SIZE  rcvd: 489
Tened en cuenta que la cache se encuetra en memoria y no en el disco, si reiniciamos el servicio o apagamos el equipo esta se pierde y se comienza desde 0.
Existen alternativas como DNSMASQ, que no necesita configuración y su funcionamiento es mucho más sencillos.

0 comentarios: