Je viens de mettre à jour l'enregistrement DNS (ns1
, ns2
, ns3.myhostingcompany.com
) pour un site que j'ai hébergé, mais j'obtiens toujours la page de stationnement du bureau d'enregistrement de domaine.
J'aimerais savoir si le problème vient des enregistrements DNS en cache d'Ubuntu. Est-il possible d'effacer le cache DNS d'Ubuntu? (si une telle chose existe?)
Regardez réponse de Mike Shultz .
Ubuntu ne met pas en cache les enregistrements DNS par défaut. Par conséquent, à moins d'installer un cache DNS, rien ne doit être effacé.
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 que vous avez apportées ont abouti, vous pouvez interroger un serveur DNS à partir 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 les dns, je vous recommande d'installer pdnsd
avec resolvconf
. nscd
est bogué et déconseillé.
Ubuntu 12.04 utilise dnsmasq
qui est intégré à network-manager
, mais il ne fonctionne pas dans le 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
De plus, aucune configuration de dnsmasq
n'est nécessaire. Si vous utilisez des paramètres de stock, la mise en cache de DNS ne sera pas mise en cache. Pour ce faire, vous devez explicitement le configurer comme suit: article sur Ubunt 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
car il est intégré à network-manager
; vérifiez votre syslog
pour obtenir des preuves à ce sujet.
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 de votre routeur sont corrects si vous pouvez y accéder via l'interface Web et éventuellement 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 au lieu de votre ISP DNS. Pour plus d'informations, détaillé ici .
Notez que Ubuntu utilise systemd-resol à partir de 17.04 et que cette réponse ne s'applique donc plus aux versions récentes d'Ubuntu. Voir " vider le cache DNS dans Ubuntu 17.04 et versions supérieures) (18.04) "
Pour confirmer d'une manière ou d'une autre si dnsmasq
est en cache, exécutez ps ax | grep dnsmasq
et examinez la commande en cours d'exécution. Voici une ventilation de ma machine 13.10 par défaut:
/ usr/sbin/dnsmasq\ --no-resolv\ - conserver au premier plan\ --no-hosts\ --bind -interfaces\ --pid-file =/var/run/NetworkManager/dnsmasq.pid\ --listen-address = 127.0.1.1\ --conf-file =/var/run/NetworkManager/dnsmasq.conf\ - taille du cache = 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 et vérifier que --cache-size=0
signifie ce que nous pensons que cela signifie (au lieu d'un cache unlimited ), man dnsmasq
indique:
-c, --cache-size=<cachesize>
Set the size of dnsmasq's cache. The default is 150 names.
Setting the cache size to zero disables caching.
Ainsi, alors que dnsmasq
peut mettre en cache le DNS, il ne cache pas la boîte. Vous pouvez vérifier votre machine et divers 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 à l'un des endroits suivants:
Je racle le baril ici, mais vous avez peut-être installé un serveur DNS non standard dans Ubuntu au lieu d'activer la mise en cache dans dnsmasq
. Il y en a beaucoup: nscd
, DJBDNS dnscache
(alias TinyDNS), pdns
, pdnsd
, Bind9 (et ses variantes) et plus encore, je ne m'en souviens même pas. Ceux-ci seront probablement représentés par /etc/resolv.conf
(avec config dans/etc/resolvconf/`pour autoriser ce fichier). Voici 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 cliquez pas sur 8.8.8.8 (ou sur ce que vous attendez de votre serveur DNS), vérifiez ce que vous frappez à la place. Dans mon cas, je peux voir que ceci est simplement dnsmasq
configuré pour refléter les requêtes DNS en arrière pour LXC, mais dans votre cas, il se peut qu'il fasse de mauvaises choses en cache.
Si vous avez créé l'une des caches répertoriées, le processus de suppression de chacune varie:
Sudo /etc/init.d/nscd reload # nscd
Sudo /etc/init.d/named restart # bind9
Sur une note légèrement liée, voir ceci pour activer la mise en cache dans dnsmasq
.
A partir d'Ubuntu 17.04 et ultérieur, systemd-resol est utilisé pour DNS. Vous pouvez vider les caches de systemd comme ceci:
Sudo systemd-resolve --flush-caches
Ubuntu 12.04 met le DNS en cache en utilisant dnsmasq (voir man dnsmasq
). Utilisez ce qui suit pour vider le cache:
Sudo kill -HUP $(pgrep dnsmasq)
Sudo /etc/init.d/nscd restart
http://www.ubuntugeek.com/howto-clearflush-dns-cache-in-ubuntu.html
Vous pouvez également vérifier si vos modifications DNS se sont propagées à l'aide de Dig et en recherchant une personne autre que vos serveurs DNS par défaut. Dans ce cas, google DNS.
Dig @8.8.8.8 example.com
Personnellement, je tiliserais OpenDNS et utiliserais leur fonction de vérification du cache pour forcer une actualisation afin de s’assurer que les modifications fonctionnent, mais vous ne pouvez pas garantissent une actualisation pour vos utilisateurs dans les 48 heures.
Le DNS est une bête lente. La patience vous gardera sain d'esprit.
Si vous utilisez nscd:
Sudo /etc/init.d/nscd restart
Il convient de mentionner que ce n'est peut-être pas le système d'exploitation qui le met en cache. Tout le monde aime mettre en cache le DNS ... Quelques tests:
Vérifiez s'il s'agit de la nouvelle ou de l'ancienne adresse IP. La plupart des navigateurs mettent également le DNS en cache. Par conséquent, si vous n'avez pas redémarré Chromium ou que vous n'ayez peut-être pas accès à la version la plus récente.
ping yourdomain.com
Basculez votre serveur de noms local dans /etc/resolv.conf vers un autre fournisseur, Google ou un autre niveau, par exemple:
nameserver 8.8.8.8
nameserver 4.2.2.2
Et puis à nouveau ping.
Vérifiez que votre routeur ne met pas le DNS en cache sous quelque forme que ce soit. (Varie selon le routeur/firmware/etc)
Enfin, patience. Le DNS peut prendre un peu de temps pour se propager sur Internet.
Toutes les réponses ci-dessus ont oublié une chose importante dans la résolution de noms: généralement, les serveurs DNS auxquels vous demandez la résolution de noms ne sont pas ceux qui conservent les enregistrements eux-mêmes (le serveur faisant autorité). Comme chaque enregistrement DNS est associé à une valeur Durée de vie, ce qui obligera chaque serveur DNS de la chaîne de résolution à effectuer la mise en cache pendant le nombre de secondes indiqué par cette valeur. Ainsi, non seulement vous pouvez mettre en cache votre ordinateur, mais CERTAINEMENT le résultat de la recherche de nom sera mis en cache quelque part sur un serveur que vous ne contrôlez pas.
La seule solution pour être immédiatement averti d'un changement d'enregistrement de nom consiste à utiliser une valeur TTL de 0 lors de la création/mise à jour de l'entrée dans le serveur de noms faisant autorité. Mais cela signifie que pour chaque résolution de nom, le serveur sera touché, ce qui n'est généralement pas autorisé par les bureaux d'enregistrement. Par exemple, ils peuvent fournir une liste de valeurs TTL prédéfinies que vous pouvez choisir.
Je gère différents noms de domaine et pour être sûr que les modifications sont bien appliquées dans les serveurs de noms faisant autorité, j'utilise un outil appelé dnstracer
qui permet d'afficher le résultat de la recherche sur chaque serveur à partir de la racine DNS.
En conclusion, même sans solution de mise en cache DNS, il y aura toujours un délai entre le moment où vous modifiez les enregistrements DNS et la modification affichée sur un PC. Ce délai dépend grandement du TTL des enregistrements et du nombre de serveurs DNS entre votre PC et le serveur de noms faisant autorité.
Pour Ubuntu 14.04, je recommande cette commande:
Sudo service dns-clean
J'ai utilisé la commande suivante pour vider le cache DNS sur ma boîte 12.10 ubuntu et cela a fonctionné à merveille.
Sudo kill -HUP $(pgrep dnsmasq)
Un autre signal utile est le SIGUSR1 qui envoie une petite statistique à syslog ou notée par man dnsmasq
:
En mode --no-daemon ou lorsque la journalisation complète est activée (-q), une sauvegarde complète du contenu du cache est effectuée.
J'ai aussi trouvé des contradictions, mais ceci: https://superuser.com/a/521562 woks pour moi (Ubuntu 13.10 avec les dernières mises à jour, aucun package réseau spécial installé).
En bref, utilisez simplement ceciSudo /etc/init.d/dns-clean
Sous Ubuntu 16.04, je ne pouvais pas effacer le cache sans le faire:
Sudo service dnsmasq restart
Je recommande spécialement openDNS sur les serveurs distants Ubuntu, cela facilite beaucoup la tâche ...
Comment faire? Bien...
cd /etc/dhcp
Sudo nano dhclient.conf
insère cette AVANT la ligne "request subnet-mask ..."
supersede domain-name-servers 208.67.222.222,208.67.220.220;
cela redémarrera l'interface si rapidement que vous ne devriez même pas perdre votre connexion SSH
Sudo ifdown eth0 && Sudo ifup eth0
vérifiez ceci pour voir si vos nouveaux OpenDNS sont correctement installés
cat /etc/resolv.conf