Seguridad

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

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.

Aclaración
No se trata de un tutorial de configuración de BIND, sino de configuración de bind para actuar como caching nameserver. También deberá consultarse el man de bind y/o su documentación, ya que un error dejará sin resolución nuestros servicios

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

Abkrim

Yo solo se que no se nada, y que me paso la vida aprendiendo

Entradas recientes

Youtube – Mod Security en DirectAdmin. Conocerlo y gestionarlo en el panel de control DirectAdmin.

¡Hola a todos! Vamos a sumergirnos en el fascinante mundo de Mod Security y aprender…

3 meses hace

Apertura del canal Youtube, Tecno Boomer, dedicado al mundo del hosting

Ya son muchos años en el sector, muchos años pasando por varios paneles de control,…

3 meses hace

El Uso de la Lista UCEPROTECT en los Niveles 2 y 3: Una Falacia de Causa Cuestionable

La lista UCEPROTECT es una herramienta utilizada por muchos administradores de sistemas y proveedores de…

4 meses hace

Fatal error: Allowed memory size of 268435456 bytes exhausted en WordPress. Otro post más… pero diferente

No es la primera vez que me encuentro con el agotamiento de la memoria en…

11 meses hace

Problemas de Acceso con Centos 7, Almalinux 8, Ubuntu 20.04, y Debian 10/11: Un Enigma Firewall CSF

Descubre cómo solucionar problemas de acceso a servidores con Centos 7, Almalinux 8, Ubuntu 20.04…

1 año hace

MySQL no inicia debido a errores en la base de datos interna de MySQL

Uno de los mensajes más alarmantes que puedes encontrarte es aquel que indica que tu…

1 año hace