Principal
/
Ayuda con Páginas Web
/
Otros
/
¿Cómo limpiar la caché DNS local en Linux?

¿Cómo limpiar la caché DNS local en Linux?

Tal vez hayas notado que los sitios web que visitas con frecuencia cargan mucho más rápido que otros. Esto sucede debido a la caché del navegador y la caché de DNS que recopila tu sistema operativo Linux. Permite que tu máquina Linux recupere la información de DNS localmente, en lugar de esperar al resolutor de DNS público.

A menudo, sin embargo, esta caché de DNS puede volverse inválida o dañarse. Esto puede causar problemas al cargar tu sitio web en el navegador. Tienes que indicarle a tu Linux que limpie la caché de DNS en tales ocasiones.

Este artículo se centrará en qué es una caché de DNS, cómo determinar el DNS resolver que está utilizando Ubuntu y cómo vaciar el DNS en Linux Ubuntu.

¿Qué es una caché de DNS?

El sistema de nombres de dominio (DNS) es un sistema de nombres global diseñado para asignar nombres de dominio a sus correspondientes direcciones IP de servidor. El extremo de usuario del DNS se llama resolución DNS (Stub Resolver) que consulta la caché de DNS reduciendo la carga en los servidores DNS ascendentes.

La caché de DNS es la base de datos temporal de las traducciones de dominio a IP que recopila tu sistema operativo (SO).

La información almacenada en la caché de DNS consiste en registros de recursos (RR) que contienen las direcciones IP de los nombres de dominio que visitas con frecuencia.

Estos registros incluyen requisitos como Nombre, Tipo de registro, Tiempo de vida (TTL), Clase, Datos del recurso y Longitud de los datos del recurso. El tiempo de vida (TTL) se refiere al tiempo (en segundos) que un registro se considera válido antes de que se inicie una nueva búsqueda de DNS. Todos esos datos en un archivo de registro están en código ASCII, y hay una línea separada para cada nombre de dominio en él. Así es como se ve un formato común de un registro de recursos:

<name> <ttl> <class> <type> <rdlength> <radata>

Cuando intentas cargar un sitio web, tu navegador envía una consulta a tu sistema operativo que necesita la IP para este nombre de dominio. El sistema operativo envía esta consulta a la resolución DNS local para encontrar si existe un registro de recursos en la caché de DNS.

Si no hay ningún registro en la caché local, el sistema operativo iniciará una búsqueda de DNS en el servidor DNS público y esperará a recibir la dirección IP del servidor del dominio. Una vez que se entregan estos datos, el sistema operativo los almacena en la caché de DNS para su uso posterior.

¿Cómo funciona la caché de DNS

En caso de que la caché de DNS tenga un registro para el dominio en cuestión, el navegador servirá el contenido del sitio web más rápido. Por lo tanto, la caché de DNS agiliza el proceso de búsqueda de DNS y actúa como un acelerador, mejorando su experiencia de navegación en general.

Sin embargo, como mencionamos anteriormente, la caché de DNS es una pila temporal de registros DNS y, como tal, puede caducar o corromperse. Cuando eso sucede, es posible que no puedas acceder a tu sitio web o cualquier otro de tus sitios web favoritos debido a varios errores de DNS.

Estos errores pueden estar relacionados con la propagación de DNS o ataques de suplantación de DNS. También puedes estar interesado en tu privacidad, y restablecer los registros de caché de DNS con frecuencia podría ayudar con ese asunto.

Para enmendar un problema de este tipo, debes forzar un vaciado de DNS en tu máquina Linux. Eso borrará la información desactualizada y tu sistema operativo comenzará a generar nuevos registros para almacenar en caché los resultados de más consultas de DNS.

Encuentra tu resolución DNS local

Diferentes versiones de la distribución de Linux más comúnmente utilizada, Ubuntu, pueden usar varios servicios como resolución de DNS. La mayoría de los sistemas Linux usan systemd-resolved o dnsmasq como su aplicación de DNS resolver.

Por lo tanto, lo primero que debes hacer antes de comprometerte con un vaciado de DNS de Linux es verificar qué resolución de DNS usa tu sistema.

Para hacer eso, necesitarás cargar el Terminal, y la forma más fácil de hacerlo es usando la combinación de teclas Ctrl + Alt + T.

Luego escribe el siguiente comando:

sudo lsof -i :53 -S

El comando generará todos los servicios que escuchan en el puerto 53, el puerto del servidor reservado para DNS. De esta manera, puedes ver cuál es la resolución de DNS que está utilizando tu Linux para limpiar su caché de DNS.

Comprueba tu resolutor de DNS de Linux

Como se ve en la captura de pantalla anterior, en la versión más reciente de Ubuntu (22.04), el servicio que escucha en el puerto DNS 53 es systemd-resolved. Esta es la configuración para todas las versiones de Ubuntu desde la versión 18.04.

Las versiones anteriores pueden funcionar con la resolución DNS dnsmasq, y si ese es tu caso, la salida del comando se verá como en la siguiente captura de pantalla:

Resolver DNS Ubuntu 16.04

Una vez que hayas averiguado qué resolución de DNS está utilizando tu sistema, puedes proceder con el comando de limpieza de DNS correcto para tu Linux.

¿Cómo vaciar la caché de DNS en Linux?

Hemos enumerado los comandos que puede usar para vaciar la caché de DNS en diferentes configuraciones de Linux en las secciones a continuación.

Vaciar DNS de Linux usando systemd-resolved

Si tu sistema Linux es un servicio systemd-resolved, puedes usar uno de los siguientes comandos en la ventana de Terminal:

$ sudo resolvectl flush-caches
$ sudo systemd-resolve --flush-caches

Ten en cuenta que ninguno de los comandos anteriores proporciona ninguna salida de confirmación. Sin embargo, puedes usar los siguientes comandos correspondientes para comprobar el valor del Tamaño de caché actual.

$ sudo systemd-resolve --statistics
$ sudo resolvectl statistics

Así es como se ve la salida con el valor del Tamaño de caché actual:

Tamaño de Caché actual en systemd-resolve

Limpiar la caché de DNS usando señales

Una forma alternativa de limpiar la caché de DNS en un sistema que usa systemd-resolved es enviar una señal “USR2” a la resolución de DNS.

$ sudo killall -USR2 systemd-resolved

Después, usa la señal “USR1” para indicar al servicio que descargue su estado actual en el systemd-journal. Puedes hacer esto ejecutando los siguientes dos comandos consecutivamente, y el resultado te mostrará el registro confirmando el vaciado de la caché.

$ sudo killall -USR1 systemd-resolved
$ sudo journalctl -r -u systemd-resolved

Vaciar DNS usando dnsmasq

Siempre que tu máquina utilice “dnsmasq” para resolver DNS, puedes ejecutar el comando como se muestra a continuación.

$ sudo killall -HUP dnsmasq

Como la ejecución de este comando no genera confirmación, puedes usar de nuevo un “USR1” para señalar el proceso. Esto registrará las estadísticas en el archivo “syslog”, y el uso de un comando “tail” te mostrará que el tamaño de la caché es 0.

$ sudo killall -USR1 dnsmasq
$ tail -f n1000 /var/log/syslog |grep "cache size"
Vaciar DNS en dnsmasq

Dnsmasq ejecutando un servicio

En ciertas ocasiones, Dnsmasq puede ejecutarse como un servicio en tu servidor. Para comprobar si el dnsmasq está activo, puedes ejecutar este comando:

$ sudo systemctl is-active dnsmasq

Para sistemas basados en SysVinit, puedes ver si dnsmasq está activado y proceder con el siguiente comando:

$ sudo service dnsmasq status

Dependiendo del tipo de configuración del sistema, puedes usar uno de los dos comandos siguientes para reiniciar el servicio.

$ sudo systemctl restart dnsmasq
$ sudo service dnsmasq restart

Reiniciar el servicio de Dnsmasq restablecerá la caché recopilada en tu sistema.

Borrar la caché de DNS usando Nscd en RedHat

En caso de que estés utilizando la distribución de RedHat Linux, lo más probable es que estés ejecutando el Name Server Cache Daemon (Nscd). Puedes vaciar la caché de DNS de ese servicio ejecutando uno de los comandos descritos aquí.

$ sudo systemctl restart nscd.service
$ sudo service nscd restart

Borrar la caché de DNS en Google Chrome

Además de la caché de DNS del sistema operativo, el navegador Google Chrome también está apilando la caché de DNS. Para asegurarte de que la caché de DNS de Chrome no te impida acceder a tu sitio web, debes limpiarla.

Debes abrir el navegador Chrome y pegarlo en la barra de direcciones:

chrome://net-internals/#dns

Esto te redirigirá a la página de configuración de red interna de Chrome, y debes hacer clic en el botón “Borrar caché del host” para vaciar la caché.

Limpiar la caché de DNS de Chrome

Para resumir, si experimentas algún error de DNS o estás lidiando con la propagación de DNS, debes vaciar tu caché de DNS de Linux. Además, limpiar esta caché puede ayudar a resolver problemas de suplantación de DNS o ayudarte a crear una experiencia de red segura para ti. Seguir los pasos descritos en este artículo te ayudará a hacerlo de forma independiente y resolver dichos problemas.

Comparte este artículo