So leeren Sie den DNS-Resolver-Cache unter Linux (und FreeBSD)

8

Ich bin Administrator für mehrere Linux- und FreeBSD-Server und hier ist ein Problem, das ich habe:

Auf den Servern wird ein Tool ausgeführt, das jede Minute viele DNS-Abfragen für das gesamte Netzwerk ausführt. Bei einer Abfrage wird das Ergebnis systemweit zwischengespeichert. Wenn sich ein DNS-Eintrag ändert, wird die Änderung viel später übernommen.

Wie kann der DNS-Cache geleert werden? Mein Chef drängt mich fast, Software auf Windows zu verschieben, das einen ipconfig /flushdnsAnruf hat. Ich sagte meinem Chef, dass ich dieses Problem am Wochenende lösen werde und am Montag alle Linux- und FreeBSD-Dateien den Cache leeren werden. Wenn ich das nicht tue, zwingt er mich, Windows-Server zu erstellen und Software darauf auszuführen.

Wie leere ich den DNS-Cache unter Linux und FreeBSD?

Boda Cydo
quelle
Welche Linux-Marke benutzt du? Versionen dieser Linux / Freebsd-Systeme? Führen Sie nscd auf ihnen aus? Führen sie einen DNS-Caching-Server aus oder leiten sie ihre Abfragen an einen anderen DNS-Server weiter?
Natxo Asenjo
Ich benutze Debian und FreeBSD 10. Ich führe kein nscd aus. Soweit ich mich erinnere, verwenden sie nur das Auflösen von C-Bibliotheksaufrufen. Kein Caching.
Boda Cydo
Ich bin nicht sicher, wie sich Debian oder Freebsd verhalten, aber auf meinem Fedora-Laptop sehe ich keinen Client-DNS-Caching. Jedes Mal, wenn ich eine DNS-Abfrage abfeuere, sehe ich sie in einer Wireshark-Spur. Möglicherweise befindet sich das Caching nicht im Betriebssystem, sondern in der von Ihnen verwendeten Anwendungsschicht? PS: Gerade in einem Debian 6-Host (alter Stall) getestet, den wir noch haben, und ich kann das von Ihnen erwähnte Verhalten nicht reproduzieren. Jedes Mal, wenn ich einen Dummy-Datensatz in einer Testzone auf unserem DNS-Server ändere, wird er auf dem Debian-Host ordnungsgemäß aufgelöst, ohne dass ein Caching erforderlich ist.
Natxo Asenjo
FreeBSD verfügt standardmäßig nicht über einen DNS-Resolver-Cache. Sie müssten einen vollständigen DNS-Server installieren / konfigurieren (ungebunden ist mit Base installiert, aber nicht standardmäßig konfiguriert) oder einen Caching-Client wie nscd(installiert mit Base, aber nicht standardmäßig konfiguriert)
Chris S
@BodaCydo Können Sie klären, ob tatsächlich der Client zwischengespeichert wird oder ob der konfigurierte Resolver-Server (von resolv.conf) dieses Caching ausführt, von dem Sie sprechen.
Håkan Lindqvist

Antworten:

10

Ich verstehe deine Frage nicht, weil du Unsinn sagst.

Wenn Sie sich auf einem Linux / Unix-System befinden, auf dem kein DNS-Server mit dem Namen / bind / other ausgeführt wird, speichert das System keine DNS-Abfrage zwischen. Anwendungen (DNS-Clients) fragen den DNS-Server jedes Mal ab, ohne ihn zwischenzuspeichern. Sie fragen den DNS-Server jedes Mal ab. Wenn Sie einen DNS-Server mit dem Namen / bind verwenden und den Cache leeren möchten, starten Sie diesen Dienst einfach neu (Freebsd :), /etc/rc.d/named restartaber das hat keinen Sinn.

Wenn sich ein DNS-Eintrag ändert, wird die Änderung viel später übernommen.

Wie kann das sein? Führen Sie einen DNS-Server aus oder nicht? Wenn Sie einen sekundären DNS-Server ausführen, erhalten Sie nur eine Kopie der Zone vom primären Server, und es macht keinen Sinn, den Cache zu leeren. Sie können die Serveraktualisierungszone vom Primärserver verschieben, indem Sie die Zonendatei löschen und Ihren DNS-Dienst neu starten. Wenn Sie primäres DNS ausführen und Zoneninformationen aktualisieren möchten, ändern Sie die serielle Zone und starten Sie den Dienst neu:

# /etc/rc.d/named restart (for named)
# rndc (for bind9)

So aktualisieren Sie Zoneninformationen Um zu überprüfen, ob Sie die richtige DNS-Antwort erhalten, verwenden Sie:

# dig @dns_server example.com

drängt mich, Software auf Windows mit ipconfig / flushdns zu verschieben

Für was?

Kzerza
quelle
1

Angenommen, Sie führen den Name Service Caching Daemon aus, führen Sie "nscd -i hosts" als root aus

Andy
quelle
Welches Betriebssystem ist das? Ist es unter Linux und FreeBSD standardmäßig installiert und verwendet?
Boda Cydo
Standardmäßig auf * BSD installiert.
Kristen Waite
1

Was Sie vielleicht tun möchten, ist eine Kombination der folgenden.

Wenn Sie wissen, dass sich verschiedene Einträge in Ihrer DNS-Zone schnell ändern, setzen Sie die TTL auf einen kleineren Wert für die Zone.

Im Allgemeinen gibt es einen NameServerCacheDaemon (nscd) -Prozess, der in der Standardversion Linux ausgeführt wird (bei FreeBSD nicht sicher). Eine schnelle Möglichkeit, den Cache zu leeren, besteht darin, diesen Daemon neu zu starten.

Wenn Sie einen Caching-DNS-Server auf Ihren Hosts ausführen, können Sie den DNS-Dienst problemlos neu starten. Dadurch wird der Cache geleert. Ich denke, dass möglicherweise sogar ein Cache gelöscht wird, wenn Sie den Befehl dns control verwenden.

mdpc
quelle
Was denkst du, wenn ich meinem Chef vorschlage, Nameserver der Domains direkt abzufragen? Anstatt irgendetwas lokal oder im lokalen Netzwerk zwischenzuspeichern.
Boda Cydo
0

Für FreeBSD können Sie den Arp mit dem folgenden Befehl löschen

arp -da
Ziaya
quelle