it-swarm-eu.dev

Wie lösche ich den DNS-Cache?

Ich habe gerade den DNS-Eintrag (ns1, ns2, ns3.myhostingcompany.com) für eine Website aktualisiert, die ich gehostet habe, aber ich erhalte immer noch die Parkseite für Domain-Registrare.

Ich würde gerne sehen, ob das Problem die zwischengespeicherten DNS-Einträge von Ubuntu sind. Gibt es eine Möglichkeit, den DNS-Cache von Ubuntu zu löschen? (Wenn so etwas existiert?)

192
Jono

Für 18.04 und höher

Schau dir die Antwort von Mike Shultz an .

Für 11.10 und darunter

Ubuntu speichert DNS-Einträge standardmäßig nicht im Cache. Wenn Sie also keinen DNS-Cache installiert haben, müssen Sie nichts löschen.

DNS-Einträge werden wahrscheinlich von den DNS-Servern Ihres Providers zwischengespeichert. Wenn Sie also überprüfen möchten, ob die von Ihnen vorgenommenen DNS-Änderungen erfolgreich waren, können Sie mit Dig einen DNS-Server von Ihrem Domain-Hosting-Dienst abfragen:

Dig -t a ns1.myhostingcompany.com @domain_registrar_dns_server

Wenn Ubuntu DNS zwischenspeichern soll, empfehle ich, pdnsd zusammen mit resolvconf zu installieren. nscd ist fehlerhaft und nicht ratsam.

64
Li Lo

12.04

Ubuntu 12.04 verwendet dnsmasq , das in _network-manager_ eingebaut ist, aber es does zwischenspeichert DNS, sodass es nicht erforderlich ist, es zu leeren. Hier ist eine Beispielzeile von meinem syslog, um diesen Punkt zu beweisen:

_dnsmasq[2980]: started, version 2.59 cache disabled
_

Es ist auch keine Konfiguration von dnsmasq erforderlich. Wenn Sie mit Standardeinstellungen arbeiten, werden DNS nicht zwischengespeichert. Dazu müssen Sie sie explizit einrichten, wie in diesem Ubuntu-Artikel beschrieben.

Wenn Sie Ihre Einstellungen aktualisieren möchten, können Sie das Netzwerk deaktivieren und dann aktivieren oder ausführen

_Sudo service network-manager restart
_

Dadurch wird dnsmasq neu gestartet, da es in _network-manager_ integriert ist. Überprüfen Sie Ihren syslog auf die Beweise dafür.

Wenn Sie eine kabelgebundene Verbindung mit dhcp _network manager_ verwenden, werden die Einstellungen direkt von Ihrem Router übernommen und Ihre Verbindung wird automatisch hergestellt, wenn Sie sich bei Ubuntu anmelden. Sie können überprüfen, ob die Einstellungen in Ihrem Router korrekt sind, wenn Sie über die Weboberfläche darauf zugreifen können, und ihn ggf. neu starten. Wenn es sich um ein allgemeines Problem mit DNS handelt, können Sie versuchen, Google DNS anstelle Ihres ISP DNS zu verwenden. Weitere Informationen hierzu finden Sie hier .

70
user76204

Ubuntu 17.04 und höher (18.04)

Ab Ubuntu 17.04 wird die Systemauflösung für DNS verwendet. Sie können die Caches von systemd folgendermaßen leeren:

Sudo systemd-resolve --flush-caches
66
Mike Shultz

Beachten Sie, dass Ubuntu ab 17.04 systemd-resolve verwendet, sodass diese Antwort nicht mehr auf neuere Ubuntu-Versionen zutrifft. Siehe " DNS-Cache in Ubuntu 17.04 und höher leeren (18.04)

Standardmäßig wird DNS in Ubuntu <17.04 nicht zwischengespeichert (möglicherweise jedoch im Netzwerk oder in der Anwendung).

Um auf die eine oder andere Weise zu bestätigen, ob dnsmasq zwischengespeichert wird, führen Sie ps ax | grep dnsmasq aus und sehen Sie sich den ausgeführten Befehl an. Hier ist eine Aufschlüsselung meiner Standard-13.10-Maschine:

/ usr/sbin/dnsmasq\
 --no-resolv\
 --keep-in-Vordergrund\
 --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-Größe = 0 \
 - proxy-dnssec\
 --enable-dbus = org.freedesktop.NetworkManager.dnsmasq\
 --conf-dir =/etc/NetworkManager/dnsmasq.d

/etc/NetworkManager/dnsmasq.d ist standardmäßig leer. Es kommen also keine Overrides rein und nur um zu überprüfen, ob --cache-size=0 bedeutet, was wir denken, dass es bedeutet (anstelle eines unbegrenzten Cache), man dnsmasq zeigt an:

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

Während dnsmasq DNS zwischenspeichern kann , wird die Box nicht zwischengespeichert. Sie können Ihr Gerät und verschiedene Konfigurationsverzeichnisse überprüfen, um sicherzustellen, dass Sie sich auf derselben Seite befinden.

Wenn Cache-Probleme auftreten, geschieht dies wahrscheinlich an einer der folgenden Stellen:

  • Upstream von Ihrem Computer. Einige Router zwischenspeichern. In vielen Unternehmensnetzwerken wird DNS zwischengespeichert. Viele ISP-DNS-Server verwenden eigene Caches. Die einzige Möglichkeit, einen Netzwerkcache zu schützen, besteht darin, einen Cache zu verwenden, den Sie manuell aktualisieren können. Deshalb mag ich OpenDNS.
  • In der Client-Anwendung (insbesondere Browser). Anwendungen können alle Arten von Caching durchführen, auf die Ubuntu keinen Einfluss hat. Wie Firefox DNS zwischenspeichert . So löschen Sie den DNS-Cache von Chrome . Andere Browser (und Anwendungen) verfügen möglicherweise über eigene Mechanismen.
  • Ich schabe hier am Lauf herum, aber vielleicht haben Sie in Ubuntu einen nicht standardmäßigen DNS-Server installiert, anstatt das Caching in dnsmasq zu aktivieren. Es gibt viele: nscd, DJBDNS dnscache (auch bekannt als TinyDNS), pdns, pdnsd, Bind9 (und seine Varianten) und mehr, an die ich mich nicht einmal erinnern kann. Diese werden wahrscheinlich in /etc/resolv.conf gezeigt (mit config in/etc/resolvconf/`, um diese Datei automatisch zu erzeugen). Das Folgende zeigt eine lokal abgefangene DNS-Abfrage:

    $ 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
    

    Wenn Sie 8.8.8.8 nicht treffen (oder was auch immer Sie von Ihrem DNS-Server erwarten), überprüfen Sie stattdessen, was Sie treffen. In meinem Fall kann ich sehen, dass dies nur dnsmasq eingerichtet ist, um DNS-Abfragen für LXC zurückzuspiegeln, aber in Ihrem Fall kann es sein, dass es schlechte Cachey-Dinge tut.

    Wenn Sie die aufgelisteten Caches gelöscht haben, ist der Löschvorgang unterschiedlich:

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

In einem leicht verwandten Hinweis: Aktivieren des Zwischenspeicherns in dnsmasq .

62
Oli

Für den 12.04 .:

Ubuntu 12.04 zwischenspeichert DNS mit dnsmasq (siehe man dnsmasq). Verwenden Sie Folgendes, um den Cache zu leeren:

Sudo kill -HUP $(pgrep dnsmasq)
39
zechariah

Sudo /etc/init.d/nscd restart

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

Als Hinweis können Sie auch überprüfen, ob sich Ihre DNS-Änderungen mithilfe von Dig verbreitet haben und gegen eine andere Person als Ihre Standard-DNS-Server nachschlagen. In diesem Fall Google DNS.

Dig @8.8.8.8 example.com

15
Mark Davidson

Persönlich würde ich OpenDNS verwenden und ihre Cache Check-Funktion verwenden, um eine Aktualisierung zu erzwingen, nur um sicherzustellen, dass die Änderungen funktionieren, aber Sie können nicht garantieren , dass sie innerhalb von 48 Stunden für Ihre Benutzer aktualisiert werden.

DNS ist eine langsame Bestie. Geduld wird dich gesund halten.

11
Oli

Wenn Sie nscd verwenden:

Sudo /etc/init.d/nscd restart

Erwähnenswert ist, dass es möglicherweise nicht das Betriebssystem ist, das es zwischenspeichert. Jeder mag es, DNS zwischenzuspeichern ... Einige Tests:

Überprüfen Sie, ob es sich um die neue oder die alte IP handelt. In den meisten Browsern wird auch DNS zwischengespeichert. Wenn Sie also Chromium oder etwas anderes nicht neu gestartet haben, wird möglicherweise nicht die neueste Version angezeigt.

ping yourdomain.com

Wechseln Sie Ihren lokalen Nameserver in der /etc/resolv.conf zu einem anderen Provider, Google oder Level, Beispiele:

nameserver 8.8.8.8
nameserver 4.2.2.2

Und dann nochmal pingen.

Stellen Sie sicher, dass Ihr Router kein DNS in irgendeiner Form zwischenspeichert. (Variiert je nach Router/Firmware/usw.)

Endlich Geduld. Die Verbreitung von DNS im Internet kann einige Zeit in Anspruch nehmen.

7
bikesandcode

Bei allen obigen Antworten wurde eines bei der Namensauflösung vergessen: Im Allgemeinen sind die DNS-Server, zu denen Sie die Namensauflösung anfordern, nicht die, auf denen die Datensätze selbst gespeichert sind (der autorisierende Server). Da jeder DNS-Eintrag einen Time To Live-Wert enthält, muss jeder DNS-Server in der Auflösungskette während der in diesem Wert angegebenen Anzahl von Sekunden einen Cachevorgang durchführen. Sie können also nicht nur in Ihrem Computer einen Cache speichern, sondern das Ergebnis der Namenssuche wird BESTIMMT auf einem Server zwischengespeichert, den Sie nicht steuern können.

Die einzige Lösung, die bei einer Änderung des Namensdatensatzes sofort benachrichtigt wird, besteht darin, beim Erstellen/Aktualisieren des Eintrags auf dem autorisierenden Namensserver den Wert TTL 0 zu verwenden. Dies bedeutet jedoch, dass bei jeder Namensauflösung der Server betroffen ist, was von den Registraren normalerweise nicht zugelassen wird. Beispielsweise können sie eine Liste vordefinierter TTL Werte bereitstellen, aus denen Sie auswählen können.

Ich verwalte verschiedene Domain-Namen und um sicherzugehen, dass die Änderungen auf den autorisierenden Nameservern gut angewendet werden, verwende ich ein Tool namens dnstracer, mit dem die Suchergebnisse auf jedem Server aus dem DNS-Stammverzeichnis angezeigt werden können.

Selbst wenn keine DNS-Caching-Lösung vorhanden ist, gibt es eine Verzögerung zwischen dem Zeitpunkt, an dem Sie die DNS-Einträge ändern, und dem Zeitpunkt, an dem die Änderung auf einem PC angezeigt wird. Diese Verzögerung hängt stark von der TTL der Datensätze und von der Anzahl der DNS-Server zwischen Ihrem PC und dem maßgeblichen Nameserver ab.

5
Benoit

Für Ubuntu 14.04 empfehle ich diesen Befehl:

Sudo service dns-clean
2
alphayax

Ich habe den folgenden Befehl verwendet, um den DNS-Cache auf meiner 12.10 Ubuntu-Box zu leeren, und es hat fantastisch funktioniert.

Sudo kill -HUP $(pgrep dnsmasq)

Ein weiteres hilfreiches Signal ist der SIGUSR1, der eine kleine Statistik an syslog ausgibt oder wie aus der Anmerkung von man dnsmasq hervorgeht:

Im --no-daemon-Modus oder bei aktivierter vollständiger Protokollierung (-q) wird ein vollständiger Speicherauszug des Cache-Inhalts erstellt.

1
j0inty

Ich habe auch Widersprüche gefunden, aber diese: https://superuser.com/a/521562 Woks für mich (Ubuntu 13.10 mit den neuesten Updates, keine speziellen Netzwerkpakete installiert).
Kurz gesagt, benutze dies einfach
Sudo /etc/init.d/dns-clean

0
Nitz

Unter Ubuntu 16.04 konnte ich den Cache nur löschen, wenn ich Folgendes tat:

Sudo service dnsmasq restart
0
Volomike

Ich empfehle openDNS speziell in entfernten Ubuntu-Servern, es lindert viele Schmerzen ...

Wie es geht? Gut...

cd /etc/dhcp
Sudo nano dhclient.conf

fügen Sie dieses VOR die Zeile "Subnetzmaske anfordern ..." ein

supersede domain-name-servers 208.67.222.222,208.67.220.220;

dadurch wird die Schnittstelle so schnell neu gestartet, dass Sie nicht einmal Ihre SSH-Verbindung verlieren sollten

Sudo ifdown eth0 && Sudo ifup eth0

überprüfen Sie dies, um festzustellen, ob Ihr brandneues openDNS korrekt installiert ist

cat /etc/resolv.conf
0
D.Snap