Caching Nameserver: Cache DNS con Bind una forma de acelerar tus operaciones

Caching Nameserver

Todos las direcciones de internet pese a tener nombre legibles, conocidos como FDQN (Fully Qualified Domain Name), estos deben ser traducidos a una dirección IP. Esta conversión se realiza gracias a los DNS (Domain Name System), uno de los grandes incomprendidos en el ecosistema IT, y tener un DNS Cache (caching nameserver) acelera nuestra navegación y nuestros servicios.

Usar un caché de DNS, que guarde de forma local los resultados de las búsquedas para una utilización futura, evitando la repetición de las consultas, aumentará drásticamente la velocidad de respuesta.

Instalación Bind

Incluimos dos variantes mas comunes del ecosistema Linux, basado uno en el gestor de paquetes .deb y el otro en el gestor de paquetes .rpm. Pueden existir variaciones, según la distribución, y se recomienda leer la documentación de su propia distribución.

Si ya esta instalado, podemos saltar a la siguiente sección

Debian/Ubuntu

sudo aptitude install bind9

CentOs/RHEL/Fedora

yum install bind bind-utils -y

Configuración bind9 con cache DNS (caching nameserver)

Aquí tenemos distintas opciones, dependiendo de cual es el uso de nuestro DNS. No es lo mismo un Caching Nameserver para una red local, que para un servidor en internet compartido o privado. Así pues comentamos las posibles opciones que deberemos incluir en el fichero de configuración, cuyo nombre también variará según la distribución que usemos.

Usamos forwarders, como los DNS públicos de Google o OpenDNS, pese a que podemos configurarlo sin ellos, por su resolución más rápida además de que cuentan con mecanismos adicionales de seguridad, que hacen confiables sus consultas. Sin embargo podríamos deshabilitarlos, y usar los Root en su lugar.

Deberemos modificar el fichero de configuración de nuestro bind, que según la distribución puede ser por ejemplo (consulte con su distribución):

  • /etc/named/named.conf
  • /etc/bind/named.conf.options

Caching Nameserver en area local

options {
        ...

        forwarders {
             // Google Public DNS
             8.8.8.8;
             8.8.4.4;
             // OpenDNS servers
             208.67.222.222;
             208.67.220.220;
             // ADSL router. Ponemos la IP de nuestro ruter o gateway de red, si es que este tiene habilitado el servicio DNS. 
             // En su defecto ponemos los de nuestro proveedor, aunque en este caso, casi mejor deshabilitar los forwarders      
             192.168.1.1;
        };

        // Security options
        listen-on port 53 { 127.0.0.1; 192.168.1.100; };  // 192.168.1.100 ip del equipo
        allow-query { 127.0.0.1; 192.168.1.0/24; };  // 192.168.1.0/24 nuestra red local
        allow-recursion { 127.0.0.1; 192.168.1.0/24; };
        allow-transfer { none; };

        auth-nxdomain no;    # conform to RFC1035
        // listen-on-v6 { any; };
};

Caching Nameserver servidor compartido (Cpanel, Plesk, …)

options {
        ...

        recursion no;  // No permitimos la recursion
        allow-transfer    { "none"; };
 
        forwarders {
             // Google Public DNS
             8.8.8.8;
             8.8.4.4;
             // OpenDNS servers
             208.67.222.222;
             208.67.220.220;
             // ADSL router. Ponemos la IP de nuestro router o gateway de red, si es que este tiene habilitado el servicio DNS. 
             // En su defecto ponemos los de nuestro proveedor, aunque en este caso, casi mejor deshabilitar los forwarders      
             192.168.1.1;
        };

        auth-nxdomain no;    # conform to RFC1035
        // listen-on-v6 { any; };
};

Verificar que los cambios en el fichero de configuración son correctos

Antes de hacer un restart verificaremos si los cambios son correctos, para evitar problemas al reniciar el servidor DNS.

root@server:~# named-checkconf

Modificar nuestro archivo de resolución

Actualizar el archivo /etc/resolv.conf para que la resolución de nombres se haga a través de nuestro cache de DNS:

nameserver 127.0.0.1

Reiniciar el servicio de DNS

root@server:~# systemctl restart named # CentOS/Cpanel/RHEL
root@server:~# systemctl restart bind9 # Debian/Ubunut otros sabores

Verificar el cacheo de DNS

Podemos usar nslookup o dig, la herramienta con la cual nos encontremos más a gusto. Con dig, podremos ver que la primera respuesta, es la habitual, pero la siguiente, si esta en cache es inmediata, de 0 a 5 milisegundos

dig castris.com

; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.1 <<>> castris.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62768
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 16

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;castris.com.			IN	A

;; ANSWER SECTION:
castris.com.		3595	IN	A	5.135.93.88

;; AUTHORITY SECTION:
com.			155020	IN	NS	l.gtld-servers.net.
com.			155020	IN	NS	k.gtld-servers.net.
com.			155020	IN	NS	b.gtld-servers.net.
com.			155020	IN	NS	f.gtld-servers.net.
com.			155020	IN	NS	e.gtld-servers.net.
com.			155020	IN	NS	h.gtld-servers.net.
com.			155020	IN	NS	a.gtld-servers.net.
com.			155020	IN	NS	d.gtld-servers.net.
com.			155020	IN	NS	m.gtld-servers.net.
com.			155020	IN	NS	i.gtld-servers.net.
com.			155020	IN	NS	c.gtld-servers.net.
com.			155020	IN	NS	j.gtld-servers.net.
com.			155020	IN	NS	g.gtld-servers.net.

;; ADDITIONAL SECTION:
a.gtld-servers.net.	152550	IN	A	192.5.6.30
a.gtld-servers.net.	152550	IN	AAAA	2001:503:a83e::2:30
b.gtld-servers.net.	152550	IN	A	192.33.14.30
b.gtld-servers.net.	152550	IN	AAAA	2001:503:231d::2:30
c.gtld-servers.net.	152550	IN	A	192.26.92.30
d.gtld-servers.net.	152550	IN	A	192.31.80.30
e.gtld-servers.net.	152550	IN	A	192.12.94.30
f.gtld-servers.net.	152550	IN	A	192.35.51.30
g.gtld-servers.net.	152550	IN	A	192.42.93.30
h.gtld-servers.net.	152550	IN	A	192.54.112.30
i.gtld-servers.net.	152550	IN	A	192.43.172.30
j.gtld-servers.net.	152550	IN	A	192.48.79.30
k.gtld-servers.net.	152550	IN	A	192.52.178.30
l.gtld-servers.net.	152550	IN	A	192.41.162.30
m.gtld-servers.net.	152550	IN	A	192.55.83.30

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: sáb ene 28 19:51:20 CET 2017
;; MSG SIZE  rcvd: 545

Imagen Designed by Freepik y retocada por Abdelkarim Mateos

Comparte este artículo

Artículo Antiguo
Este artículo tiene más de 2 años. Es muy probable que su contenido este anticuado, aunque pueda ser de utilidad, es conveniente que revises otras informaciones al respecto. Si lo encuentras útil o crees que puede ser actualizado, deja tu comentario con la actualización para poder editarlo y que pueda ser útil a los demás.

Comparte este articulo en

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax