¿Cómo elimino el caché de DNS?

153

Acabo de actualizar el registro de DNS ( ns1 , ns2 , ns3.myhostingcompany.com ) para un sitio que he recibido, pero sigo teniendo la página de estacionamiento de registrador de dominios.

Me gustaría ver si el problema son los registros DNS en caché de Ubuntu. ¿Hay alguna forma de eliminar el caché DNS de Ubuntu? (si tal cosa existe?)

    
pregunta Jono 13.08.2010 - 21:23

13 respuestas

52

para 18.04 y superior

Mire la respuesta de Mike Shultz .

para 11.10 y debajo

Ubuntu no almacena en caché los registros DNS por defecto, así que, a menos que haya instalado una memoria caché DNS, no hay nada que borrar.

Es probable que los registros DNS estén guardados en la memoria caché por los servidores DNS de su proveedor, por lo que si desea verificar si los cambios DNS realizados fueron exitosos, puede interrogar a un servidor DNS desde el servicio de alojamiento de su dominio con dig:

dig -t a ns1.myhostingcompany.com @domain_registrar_dns_server

Si quieres que Ubuntu inicie el almacenamiento en caché, te recomendamos que instales pdnsd junto con resolvconf . nscd tiene errores y no es aconsejable.

    
respondido por el Li Lo 14.08.2010 - 00:13
69

12.04

Ubuntu 12.04 usa dnsmasq que está integrado en network-manager , pero no almacena en caché los dns, por lo que no es necesario vaciarlo. Aquí hay una línea de muestra de mi syslog para probar ese punto:

dnsmasq[2980]: started, version 2.59 cache disabled

Tampoco es necesaria ninguna configuración de dnsmasq . Si está ejecutando configuración de stock, no estará almacenando en caché dns, por lo que debe configurarlo explícitamente como este Artículo de Ubuntu describe.

Si desea actualizar su configuración, puede deshabilitar y luego habilitar la red o ejecutar

sudo service network-manager restart

Esto reinicia dnsmasq porque está integrado en network-manager ; verifique su syslog para la evidencia de esto.

Si está utilizando una conexión por cable con dhcp network manager tomará las configuraciones directamente desde su enrutador y su conexión se establecerá automáticamente cuando inicie sesión en Ubuntu. Puede verificar que las configuraciones sean correctas en su enrutador si puede acceder a ellas a través de la interfaz web, y quizás reiniciarlas si es necesario.  Si se trata de un problema general con dns, puede intentar usar Google dns en lugar de sus isp dns, y más información sobre esto es detallado aquí .

    
respondido por el user76204 14.09.2012 - 20:39
59

Tenga en cuenta que Ubuntu usa systemd-resolve desde 17.04 en adelante, por lo que esta respuesta ya no se aplica a las versiones recientes de Ubuntu. Vea " vaciar el caché DNS en Ubuntu 17.04 y superior (18.04) "

De forma predeterminada, DNS no se almacena en caché en Ubuntu & lt; 17.04 (pero podría estar en caché en la red o aplicación)

Para confirmar de una forma u otra si dnsmasq está almacenando en la memoria caché, ejecute ps ax | grep dnsmasq y observe el comando en ejecución. Aquí hay un desglose de mi máquina predeterminada 13.10:

/usr/sbin/dnsmasq \
  --no-resolv \
  --keep-in-foreground \
  --no-hosts \
  --bind-interfaces \
  --pid-file=/var/run/NetworkManager/dnsmasq.pid \
  --listen-address=127.0.1.1 \
  --conf-file=/var/run/NetworkManager/dnsmasq.conf \
  --cache-size=0 \
  --proxy-dnssec \
  --enable-dbus=org.freedesktop.NetworkManager.dnsmasq \
  --conf-dir=/etc/NetworkManager/dnsmasq.d

/etc/NetworkManager/dnsmasq.d está vacío por defecto. Por lo tanto, no hay sustituciones entrantes y solo para comprobar --cache-size=0 significa lo que creemos que significa (en lugar de un ilimitado caché), man dnsmasq muestra:

-c, --cache-size=<cachesize>
  Set the size of dnsmasq's cache. The default is 150 names. 
  Setting the cache size to zero disables caching.

Entonces, aunque dnsmasq puede guardar en caché DNS, no está almacenando en caché el cuadro. Puede verificar su máquina y varios directorios de configuración para comprobar que está en la misma página.

Si está viendo problemas de caché, es probable que esto ocurra en uno de los pocos lugares:

  • Aguas arriba de tu computadora. Algunos enrutadores caché. Muchas redes corporativas almacenarán en caché el DNS. Muchos servidores DNS ejecutados por ISP y usarán sus propios cachés. La única forma de garantizar una caché de red es usar un caché que puede actualizar manualmente. Es por eso que me gusta OpenDNS.
  • En la aplicación cliente (especialmente navegadores). Las aplicaciones pueden hacer todo tipo de su propio almacenamiento en caché que Ubuntu no tiene ningún efecto. Cómo Firefox almacena en caché DNS . Cómo borrar el caché de DNS de Chrome . Otros navegadores (y aplicaciones) pueden tener sus propios mecanismos.
  • Estoy raspando el barril aquí, pero tal vez haya instalado un servidor DNS no estándar en Ubuntu en lugar de activar el almacenamiento en caché en dnsmasq . Hay muchos: nscd , DJBDNS dnscache (también conocido como TinyDNS), pdns , pdnsd , Bind9 (y sus variantes), y más que ni siquiera puedo recordar. Estos probablemente se evidenciarán en /etc/resolv.conf (con config en / etc / resolvconf / 'para autogenar ese archivo). A continuación, se muestra una consulta DNS interceptada localmente:

    $ nslookup askubuntu.com
    Server:     127.0.1.1
    Address:    127.0.1.1#53
    
    Non-authoritative answer:
    Name:   askubuntu.com
    Address: 198.252.206.24
    

    Si no está llegando a 8.8.8.8 (o lo que sea que espere que sea su servidor DNS), verifique en su lugar lo que está golpeando. En mi caso, puedo ver que esto es solo dnsmasq configurado para replicar las consultas DNS para LXC, pero en su caso podría estar haciendo cosas cachey malas.

    Si ha finalizado las cachés enumeradas, el proceso para borrarlas varía:

    sudo /etc/init.d/nscd reload    # nscd
    sudo /etc/init.d/named restart  # bind9
    

En una nota ligeramente relacionada, see esto para habilitar el almacenamiento en caché en dnsmasq .

    
respondido por el Oli 17.03.2014 - 10:40
40

Para 12.04:

Ubuntu 12.04 almacena el DNS en caché utilizando dnsmasq (ver man dnsmasq ). Use lo siguiente para borrar el caché:

sudo kill -HUP $(pgrep dnsmasq)
    
respondido por el zechariah 21.07.2012 - 21:32
16

sudo /etc/init.d/nscd restart

enlace

También como nota, puede verificar y ver si los cambios en su DNS se han propagado usando dig y buscando en contra de alguien que no sea su servidor DNS predeterminado. En este caso, google DNS.

dig @8.8.8.8 example.com

    
respondido por el Mark Davidson 13.08.2010 - 21:25
12

Ubuntu 17.04 y superior (18.04)

Desde Ubuntu 17.04 en adelante, systemd-resolve se usa para DNS. Puede eliminar las cachés de systemd de la siguiente manera:

sudo systemd-resolve --flush-caches
    
respondido por el Mike Shultz 27.06.2017 - 04:09
11

Personalmente, utilizaría OpenDNS y su Función de comprobación de caché para forzar una actualización solo para asegurarse de que los cambios funcionen pero no puede garantizar que se actualizarán para su usuarios dentro de las 48 horas.

DNS es una bestia lenta. La paciencia te mantendrá cuerdo.

    
respondido por el Oli 13.08.2010 - 21:26
7

Si usa nscd:

sudo /etc/init.d/nscd restart

Vale la pena mencionar que podría no ser el SO el que lo está almacenando. A todos les gusta almacenar en caché DNS ... Algunas pruebas:

Verifique si es la dirección IP nueva o anterior. La mayoría de los navegadores también almacenan en caché DNS, por lo que si no ha reiniciado Chromium o lo que sea, es posible que no esté viendo lo último.

ping yourdomain.com

Cambie su servidor de nombres local en /etc/resolv.conf a otro proveedor, google o level, ejemplos:

nameserver 8.8.8.8
nameserver 4.2.2.2

Y luego hacer ping nuevamente.

Verifique para asegurarse de que su enrutador no esté almacenando en caché los DNS de ninguna forma. (Varía según enrutador / firmware / etc.)

Finalmente, paciencia. El DNS puede tardar un poco en propagarse a través de Internet.

    
respondido por el bikesandcode 13.08.2010 - 21:33
5

Todas las respuestas anteriores olvidaron una cosa importante en la resolución de nombres: generalmente los servidores DNS a los que usted solicita la resolución del nombre no son los que tienen los registros (el servidor autoritativo). Como cada registro DNS viene con un valor Time To Live que obligará a cada servidor DNS en la cadena de resolución a almacenar en caché durante la cantidad de segundos mencionados por este valor. Por lo tanto, no solo puede almacenar en caché su máquina, sino que CIERTAMENTE el resultado de la búsqueda de nombres se almacenará en caché en algún lugar de un servidor que no controla.

La única solución que debe notificarse inmediatamente sobre un cambio de registro de nombre es usar un valor de TTL de 0 al crear / actualizar la entrada en el servidor de nombres autoritativo. Pero esto significa que, para cada resolución de nombre, se golpeará al servidor, generalmente esto no está permitido por los registradores. Por ejemplo, pueden proporcionar una lista de valores TTL predefinidos en los que puede elegir.

Administro diferentes nombres de dominio y para asegurarme de que el cambio se aplique bien en los servidores de nombres autorizados, utilizo una herramienta llamada dnstracer que puede mostrar el resultado de búsqueda en cada servidor desde la raíz DNS.

En conclusión, incluso sin una solución de almacenamiento en caché de DNS instalada, aún habrá una demora entre el momento en que cambie los registros de DNS y el cambio se vea en una PC. Este retraso depende en gran medida del TTL de los registros y del número de servidores DNS entre su PC y el servidor de nombres autorizado.

    
respondido por el Benoit 18.03.2014 - 10:07
2

Para ubuntu 14.04, recomiendo este comando:

sudo service dns-clean
    
respondido por el alphayax 02.06.2016 - 14:33
1

Utilicé el siguiente comando para vaciar el caché dns en mi cuadro ubuntu 12.10 y funcionó de manera fantástica.

sudo kill -HUP $(pgrep dnsmasq)

Otra señal útil es el SIGUSR1 que arroja una pequeña estadística a syslog o como se nota desde man dnsmasq :

  

En modo no demonio o cuando el registro completo está habilitado (-q), un completo   volcado de los contenidos de la memoria caché se hace.

    
respondido por el j0inty 25.02.2013 - 21:41
0

También encontré contradicciones, pero esto: enlace woks para mí (Ubuntu 13.10 con las últimas actualizaciones, no hay paquetes de red especiales instalados).
En resumen, solo usa esto
sudo /etc/init.d/dns-clean

    
respondido por el Nitz 23.03.2014 - 09:39
0

Recomiendo openDNS especialmente en servidores remotos de Ubuntu, alivia mucho dolor ...

¿Cómo hacerlo? Bueno ...

cd /etc/dhcp
sudo nano dhclient.conf

inserte esta ANTES en la línea "máscara de subred de solicitud ..."

supersede domain-name-servers 208.67.222.222,208.67.220.220;

esto reiniciará la interfaz tan rápido que ni siquiera debería perder su conexión SSH

sudo ifdown eth0 && sudo ifup eth0

mira esto para ver si tus flamantes openDNS están instalados correctamente

cat /etc/resolv.conf
    
respondido por el D.Snap 23.03.2016 - 19:49

Lea otras preguntas en las etiquetas