Question Comment 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 des bureaux d'enregistrement de noms de domaine.

J'aimerais voir si le problème concerne les enregistrements DNS mis en cache par Ubuntu. Y a-t-il un moyen d'effacer le cache DNS d'Ubuntu? (si une telle chose existe?)


153
2017-08-13 21:23


origine


Aussi, vérifiez /etc/hosts. Je viens d’être sûr que l’ancienne adresse IP de mon domaine était en cache, mais seulement strace ping example.com a révélé que j'ai oublié de supprimer le /etc/hosts enregistrement que j'ai ajouté il y a un certain temps à cause du manque de patience pour la propagation du DNS. - ulidtko
Beaucoup de ces réponses suggèrent que la mise en cache est désactivée par défaut, mais elles réfèrent également aux anciennes versions. Il semble certainement être activé par défaut dans ma machine (18.04) et les différentes réponses ci-dessous vous montrent comment le vider, faites défiler vers le bas - Madivad


Réponses:


Pour 18.04 et plus

Regarder La réponse de Mike Shultz.

Pour 11.10 et ci-dessous

Ubuntu ne met pas en cache les enregistrements DNS par défaut. À moins d'avoir 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. Par conséquent, si vous souhaitez vérifier si les modifications DNS apportées ont abouti, vous pouvez interroger un serveur DNS auprès de votre service d'hébergement de domaine avec dig:

dig -t a ns1.myhostingcompany.com @domain_registrar_dns_server

Si vous voulez qu'Ubuntu commence à mettre en cache DNS, je vous recommande d'installer pdnsd ensemble avec resolvconf. nscd est buggy et pas conseillé.


52
2017-08-14 00:13



Des références sur la raison pour laquelle nscd est buggé? Est-ce encore buggy aujourd'hui (2012-10)? - jjmontes
Pouvez-vous mettre à jour votre réponse? ATM, il semble que les versions 11.10+ d'Ubuntu mettent en cache les enregistrements DNS. - Martin Konecny


12.04

Ubuntu 12.04 utilise dnsmasq qui est construit dans network-manager, mais ça ne pas cache dns donc il n'y a pas besoin 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'y a pas non plus besoin de configuration de dnsmasq. Si vous utilisez des paramètres de stock, il ne sera pas mis en cache, car pour ce faire, vous devez le définir explicitement comme ceci. Article Ubuntu décrit.

Si vous souhaitez actualiser 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 parce qu'il est construit pour network-manager; vérifier votre syslog pour l'évidence pour ceci.

Si vous utilisez une connexion filaire avec DHCP network manager va prendre les paramètres directement à partir de votre routeur et votre connexion sera automatiquement établie lorsque vous vous connectez à 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 DNS, vous pouvez essayer d'utiliser Google DNS plutôt que vos DNS ISP, et plus d'informations à ce sujet sont détaillé ici.


69
2017-09-14 20:39



sudo service network-manager restart a fait le tour pour moi avec Debian - Pierre de LESPINAY


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

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

Pour confirmer d'une manière ou d'une autre si dnsmasq est la mise en cache, exécutez ps ax | grep dnsmasq et regardez la commande en cours d'exécution. Voici une ventilation de ma machine par défaut 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 vide par défaut. Donc, il n'y a pas de dérogations à venir là-bas et juste pour vérifier --cache-size=0signifie ce que nous pensons que cela signifie (au lieu d'un 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.

Donc pendant dnsmasq  pouvez cache DNS, il ne cache pas 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 se produit probablement dans un des endroits suivants:

  • En amont de votre ordinateur. Certains routeurs cachent. De nombreux réseaux d'entreprise vont mettre en cache le DNS. De nombreux serveurs DNS exécutant des FAI utiliseront leurs propres caches. Le seul moyen de garantir un cache réseau consiste à utiliser un cache que vous pouvez actualiser manuellement. C'est pourquoi j'aime OpenDNS.
  • Dans l'application cliente (notamment les navigateurs). Les applications peuvent effectuer toutes sortes de mises en cache sur lesquelles Ubuntu n'a aucun effet. Comment Firefox met en cache le DNS. Comment effacer le cache DNS de Chrome. Les autres navigateurs (et applications) peuvent avoir leurs propres mécanismes.
  • Je racle le tonneau ici, mais peut-être que vous avez installé un serveur DNS non standard dans Ubuntu au lieu d'activer la mise en cache dans dnsmasq. Il y a beaucoup de: nscd, DJBDNS dnscache (aka TinyDNS), pdns, pdnsd, Bind9 (et ses variantes), et plus encore, je ne me souviens même pas. Celles-ci Probablement être prouvé dans /etc/resolv.conf (avec config dans / etc / resolvconf / `pour autogen ce fichier). Ce qui suit 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 touchez pas 8.8.8.8 (ou ce que vous attendez de votre serveur DNS), vérifiez ce que vous touchez à la place. Dans mon cas, je peux voir que c'est juste dnsmasq mis en place pour refléter les requêtes DNS pour LXC, mais dans votre cas, il peut faire de mauvaises choses de cache.

    Si vous avez fait des caches répertoriés, le processus de suppression de chacun varie:

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

Sur une note légèrement liée, voir cela pour activer la mise en cache dans dnsmasq.


59
2018-03-17 10:40



Ma sortie de ps aux | grep est la même que la vôtre, mais quelque chose cache définitivement des DNS sur ma machine. Si ce n'est pas Dnsmasq, c'est autre chose. La preuve: j'ai créé un sous-domaine sur mon serveur, mais je ne pouvais pas le cingler, hôte inaccessible. J'ai vérifié à downforeveryoneorjustme.com et il était en place, donc le problème de propagation a été rejeté. Pas mon routeur, ni mon FAI, car j'utilise le DNS de 8.8.8.8 de Google. Ensuite, j'ai redémarré l'ordinateur (et PAS le routeur) et j'ai pu atteindre le domaine. J'avais réessayé une dizaine de fois avant de redémarrer sans succès. Premier essai après le redémarrage atteint l'hôte. - matteo
Et ce n'était pas la première fois que j'expérimentais la même chose, au fait. Il y a quelques mois, la même chose s'est produite et la seule façon d'atteindre le domaine était de redémarrer l'ordinateur, mais j'avais une version Ubuntu plus ancienne. - matteo
@matteo Le navigateur? - Oli♦
non, comme je l'ai dit, j'ai testé avec ping, pas (seulement) le (s) navigateur (s). - matteo
@matteo J'ai ajouté plus mais je suis à court d'idées. Il n'y a juste pas beaucoup d'autres endroits pourrait cache DNS :) - Oli♦


Pour 12.04:

Ubuntu 12.04 cache le DNS en utilisant dnsmasq (voir man dnsmasq). Utilisez ce qui suit pour effacer le cache:

sudo kill -HUP $(pgrep dnsmasq)

40
2017-07-21 21:32



Je vous remercie! Vous êtes le premier que j'ai vu mentionner quelque chose sur la mise en cache par défaut de 12.04! - Tarka
12.04 ne met pas en cache dns par défaut - vérifiez votre syslog après avoir redémarré network-manager; il aura une entrée qui montre que Dnsmasq commence avec le cache désactivé.
Je ne sais pas si le cache est activé par défaut, mais cette réponse a fonctionné pour moi. - jeyk
Pourquoi pas juste sudo killall -HUP dnsmasq? - James Haigh
utilisation pkill au lieu de kill et pgrep - Robert Siemer


sudo /etc/init.d/nscd restart

http://www.ubuntugeek.com/howto-clearflush-dns-cache-in-ubuntu.html

En outre, vous pouvez vérifier et vérifier si vos modifications DNS se sont propagées en utilisant dig et en recherchant une autre personne que vos serveurs DNS par défaut. Dans ce cas, google DNS.

dig @8.8.8.8 example.com


16
2017-08-13 21:25



Notons que nscd n'est pas installé par défaut. - Scaine


Ubuntu 17.04 et supérieur (18.04)

Depuis Ubuntu 17.04 et suivants, systemd-resolve est utilisé pour DNS. Vous pouvez vider les caches de systemd comme suit:

sudo systemd-resolve --flush-caches

12
2018-06-27 04:09



OMG, veux-tu m'épouser? Résolu mon problème avec 18.04 aussi - NiKo
Cela n'a pas fonctionné pour moi sur 16.04 LTS - mais il était utile de voir encore une autre façon de mettre en cache: sudo systemd-resolve --statistics - Phil


Personnellement, je utiliser OpenDNS et utiliser leur Fonction de vérification du cache pour forcer un rafraîchissement juste pour s'assurer que les changements fonctionnent mais vous ne pouvez pas garantie ils rafraîchiront pour vos utilisateurs dans les 48 heures.

Le DNS est une bête lente. La patience vous gardera sain d'esprit.


11
2017-08-13 21:26



+1 J'utilise OpenDNS et le cache clair est très utile. - Mark Davidson
Je me méfie d'OpenDNS. J'étais content au début, mais j'ai commencé à me méfier. mais je suppose que si c'est un choix entre FAI et OpenDNS, je suis mieux avec OpenDNS, non? - Jono
Je dirais que OpenDNS est le moindre mal. Ils aimeraient monétiser votre trafic mais uniquement sur les hits de mauvais domaines. - Oli♦