258 votes

Comment puis-je effacer le cache DNS ?

Je viens de mettre à jour l'enregistrement DNS ( ns1 , ns2 , ns3.myhostingcompany.com ) pour un site que j'ai hébergé, mais je reçois toujours la page de stationnement du bureau d'enregistrement du domaine.

J'aimerais voir si le problème vient des enregistrements DNS mis en cache par Ubuntu. Existe-t-il un moyen de vider le cache DNS d'Ubuntu ? (si une telle chose existe ?)

160voto

Mike Shultz Points 1733

Ubuntu 17.04 et supérieur (18.04)

À partir d'Ubuntu 17.04, systemd-resolve est utilisé pour le DNS. Vous pouvez vider les caches de systemd comme suit :

sudo systemd-resolve --flush-caches

80voto

alastairs Points 3045

Pour les versions 18.04 et supérieures

Regardez Réponse de Mike Shultz .

Pour les versions 11.10 et inférieures

Ubuntu ne met pas en cache les enregistrements DNS par défaut, donc à moins que vous ayez installé un cache DNS, il n'y a rien à effacer.

Les enregistrements DNS sont probablement mis en cache par les serveurs DNS de votre fournisseur. Si vous voulez vérifier si les changements DNS que vous avez effectués ont réussi, vous pouvez interroger un serveur DNS de votre service d'hébergement de domaines avec dig :

dig -t a ns1.myhostingcompany.com @domain_registrar_dns_server

Si vous voulez qu'Ubuntu commence à mettre en cache les DNS, je recommande d'installer pdnsd en même temps que resolvconf . nscd est bogué et déconseillé.

70voto

12.04

Ubuntu 12.04 utilise dnsmasq qui est intégré dans network-manager mais il n'a pas cache DNS, il n'est donc pas nécessaire de le vider. Voici un exemple de ligne de mon syslog pour prouver ce point :

dnsmasq[2980]: started, version 2.59 cache disabled

Il n'est pas non plus nécessaire de configurer dnsmasq . Si vous utilisez les paramètres d'origine, il ne mettra pas en cache les DNS, car pour qu'il le fasse, vous devez le configurer explicitement comme ceci Article sur Ubuntu décrit.

Si vous souhaitez rafraîchir vos paramètres, vous pouvez désactiver puis activer la mise en réseau ou exécuter

sudo service network-manager restart

Cela redémarre dnsmasq car il est intégré à network-manager ; vérifiez votre syslog pour en avoir la preuve.

Si vous utilisez une connexion filaire avec dhcp network manager prendra les paramètres directement de votre routeur et votre connexion sera automatiquement établie lorsque vous vous connecterez à Ubuntu. Vous pouvez vérifier que les paramètres sont corrects dans votre routeur si vous pouvez y accéder via l'interface web, et peut-être le redémarrer si nécessaire. S'il s'agit d'un problème général avec les dns, vous pouvez essayer d'utiliser les dns de Google au lieu de ceux de votre fournisseur d'accès Internet. détaillé ici .

64voto

Mufaka Points 54

Notez qu'Ubuntu utilise systemd-resolve à partir de la version 17.04. Cette réponse ne s'applique donc plus aux versions récentes d'Ubuntu. Voir " Vider le cache DNS dans Ubuntu 17.04 et supérieur (18.04) "

Par défaut, le DNS n'est pas mis en cache dans Ubuntu < 17.04 (mais il peut l'être dans le réseau ou l'application).

Pour confirmer dans un sens ou dans l'autre si dnsmasq est mis en cache, exécutez ps ax | grep dnsmasq et regardez la commande en cours. Voici une répartition de ma machine 13.10 par défaut :

/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 vide par défaut. Donc il n'y a pas de surcharge qui arrive ici et juste pour vérifier --cache-size=0 signifie ce que nous pensons qu'il signifie (au lieu d'une illimité cache), man dnsmasq montre :

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

Alors que dnsmasq cache DNS, il n'y a pas de cache dans la boîte. Vous pouvez vérifier votre machine et les différents répertoires de configuration pour vérifier que vous êtes sur la même page.

Si vous rencontrez des problèmes de cache, cela peut se produire à plusieurs endroits :

  • En amont de votre ordinateur. Certains routeurs mettent en cache. De nombreux réseaux d'entreprise mettent les DNS en cache. De nombreux fournisseurs d'accès Internet gèrent des serveurs DNS et utilisent leurs propres caches. La seule façon de se prémunir contre un cache réseau est d'utiliser un cache que vous pouvez rafraîchir manuellement. C'est pourquoi j'aime OpenDNS.
  • Dans l'application cliente (notamment les navigateurs). Les applications peuvent faire toutes sortes de mises en cache qui leur sont propres et sur lesquelles Ubuntu n'a aucun effet. Comment Firefox met en cache les DNS . Comment vider le cache DNS de Chrome . D'autres navigateurs (et applications) peuvent avoir leurs propres mécanismes.
  • Je gratte le tonneau ici, mais peut-être avez-vous installé un serveur DNS non standard dans Ubuntu au lieu d'activer la mise en cache dans la page d'accueil. dnsmasq . Il y en a beaucoup : nscd , DJBDNS dnscache (alias TinyDNS), pdns , pdnsd Bind9 (et ses variantes), et d'autres dont je ne me souviens même pas. Ceux-ci vont probablement se manifestent dans /etc/resolv.conf (avec une configuration dans /etc/resolvconf/` pour autogénérer ce fichier). L'image suivante montre une requête DNS interceptée localement :

    $ 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 vous ne tombez pas sur 8.8.8.8 (ou sur ce que vous pensez être votre serveur DNS), vérifiez ce que vous tombez à la place. Dans mon cas, je peux voir que c'est juste dnsmasq configuré pour renvoyer les requêtes DNS pour LXC, mais dans votre cas, il pourrait faire de mauvaises choses en cache.

    Si vous avez fait l'un des caches listés, la procédure pour les vider varie :

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

Sur une note légèrement connexe, voir ceci pour activer la mise en cache dans dnsmasq .

40voto

zechariah Points 560

Pour 12.04 :

Ubuntu 12.04 met en cache les DNS en utilisant dnsmasq ( voir man dnsmasq ). Pour vider le cache, procédez comme suit :

sudo kill -HUP $(pgrep dnsmasq)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X