Das Leeren des lokalen DNS-Cache kann HTTP-Fehler beheben und Sie vor DNS-Spoofing schützen. Hier erfahren Sie, wie Sie es unter Linux tun können.
Wenn Sie über den Domänennamen auf eine Website zugreifen, sendet Ihr System eine Anfrage an einen DNS-Server, um die IP-Adresse für diese Domäne abzurufen. Dieses Domänen-IP-Adresspaar wird zur späteren Verwendung im DNS-Cache gespeichert, sodass Sie nicht jedes Mal Anfragen an den DNS-Server senden müssen, um eine Verbindung herzustellen.
Aber manchmal wird der lokale DNS-Cache beschädigt und verursacht HTTP-Fehler. Glücklicherweise ist das Leeren und Neuerstellen des DNS-Cache auf einem Linux-Computer unkompliziert. Hier erfahren Sie, wie es geht.
Warum den DNS-Cache unter Linux leeren?
Es gibt mehrere Gründe, warum Sie den auf Ihrem System gespeicherten DNS-Cache neu erstellen möchten. Möglicherweise haben Sie einen veralteten DNS-Eintrag für eine Website und möchten ihn erneut vom DNS-Server abrufen. Oder vielleicht wurde Ihr System kompromittiert und Sie möchten sicherstellen, dass auch der DNS-Cache nicht manipuliert wurde
bekannt als DNS-Spoofing.Wenn Sie Ihren DNS-Cache leeren, muss das System den DNS-Server erneut anpingen und den neuen Domänen-IP-Adresseintrag von ihm abrufen und dabei alle veralteten oder kompromittierten Daten entfernen.
So zeigen Sie den lokalen DNS-Cache unter Linux an
Vor systemd verfügten die meisten Linux-Distributionen nicht über systemweites DNS-Caching, es sei denn, ein Programm wie dnsmasq oder nscd wurde manuell eingerichtet. systemd wird mit systemd-resolved geliefert, einem Dienst, der Domänennamen in IP-Adressen auflöst und die DNS-Einträge zwischenspeichert.
In den folgenden Abschnitten erfahren Sie, wie Sie die von systemd-resolved, nscd und dnsmasq generierten DNS-Cache-Inhalte anzeigen, damit Sie die zwischengespeicherten Daten verstehen können, bevor Sie sie leeren.
DNS-Cache für systemd-aufgelöst anzeigen
Um vom Systemd aufgelöste Cache-Datensätze anzuzeigen, müssen Sie zunächst den Dienst vorübergehend beenden und dann seine Protokolle in eine Datei exportieren.
Beginnen Sie mit dem Senden eines SIGUSR1-Signals, um den vom Systemd aufgelösten Dienst zu beenden:
sudo killall -USR1 systemd-resolved
Verwenden der Befehl „journalctl“. und den Standardausgabeoperator zum Speichern der Ausgabe in einer Textdatei:
sudo journalctl -u systemd-resolved > ~/cache.txt
Anschließend können Sie den Inhalt der Datei mit einem Texteditor wie Vim anzeigen:
vim ~/cache.txt
Suchen Sie in der Datei nach „CACHE:“, indem Sie drücken Fliehen, tippe „/CACHE:", und schlagen Eingeben. Alle unten aufgeführten DNS-Einträge ZWISCHENSPEICHER: sind Teil des lokalen DNS-Cache. Drücken Sie N um zum nächsten Satz von DNS-Einträgen zu springen, wenn Sie Vim verwenden.
Sehen Sie sich den lokalen DNS-Cache für nscd an
Um den von nscd generierten lokalen Cache anzuzeigen, müssen Sie den Inhalt der nscd-Hosts-Datenbank mit dem Befehl strings lesen.
Auf Debian- und Ubuntu-basierten Distributionen befindet sich diese Datei unter /var/cache/nscd/hosts. Führen Sie den folgenden Befehl aus, um die Datei anzuzeigen:
sudo strings /var/cache/nscd/hosts | einzigartig
Um allgemeine Statistiken zum NSCD-DNS-Cache anzuzeigen, verwenden Sie die -G Flagge:
sudo nscd -g
Zeigen Sie den von dnsmasq generierten DNS-Cache an
dnsmasq speichert den DNS-Cache im Speicher, sodass es nicht einfach ist, die genauen Datensätze abzurufen. Sie können jedoch ein Kill-Signal an dnsmasq senden und dessen Ausgabe protokollieren, um die Anzahl der verarbeiteten DNS-Anfragen zu ermitteln.
Stellen Sie dazu zunächst sicher, dass dnsmasq aktiv ist mit dem systemctl-Befehl:
sudo systemctl status dnsmasq
Wenn der Status angezeigt wird Aktiv, führen Sie den folgenden Befehl aus, um den Dienst zu beenden:
sudo pkill -USR1 dnsmasq
Extrahieren Sie mit dem Befehl „journalctl“ die dnsmasq-Protokolle und speichern Sie sie in einer Textdatei:
sudo journalctl -u dnsmasq > ~/cache.txt
Sehen Sie sich abschließend den Inhalt der Datei an Verwenden eines Dienstprogramms zum Anzeigen von Dateien wie Katze oder weniger:
cat ~/cache.txt
So leeren Sie den DNS-Cache unter Linux
Das Leeren des DNS-Cache bedeutet, dass die zwischengespeicherten DNS-Einträge von Ihrem Computer entfernt werden. Dadurch wird es gezwungen, eine Anfrage an den DNS-Server zu senden, um die neuen DNS-Einträge abzurufen.
So können Sie den DNS-Cache unter Linux leeren:
Verwendung von systemd-resolved
Sie können den Befehl „resolvectl“ verwenden, um den von systemd-resolved gespeicherten DNS-Cache zu leeren:
sudo discoverctl Flush-Caches
Wenn Sie Ubuntu 17.04 oder 18.04 ausführen, verwenden Sie den Befehl systemd-resolved, um den Cache zu leeren:
sudo systemd-resolved --flush-caches
Leeren Sie den nscd-DNS-Cache unter Linux
Der bequemste Weg, den DNS-Cache für nscd zu entfernen, besteht darin, den Dienst einfach neu zu starten. Sie können dies tun, indem Sie Folgendes ausführen:
sudo /etc/init.d/nscd neu starten
Wenn das nicht funktioniert, prüfen Sie zunächst, ob der auf Ihrem PC gespeicherte lokale Cache dauerhaft ist. Du kannst den... benutzen -G Flag, um es zu überprüfen:
sudo nscd -g
Wenn das der Fall ist, verwenden Sie die -ich Flag mit dem Befehl nscd, um die Datensätze zu löschen (ich steht für ungültig machen):
sudo nscd -i hosts
Entfernen Sie den dnsmasq-DNS-Cache
Das Leeren des von dnsmasq generierten DNS-Cache ist einfach. Da der Cache im Speicher gespeichert wird, werden beim Neustart des Dienstes alle gespeicherten Einträge gelöscht.
Um dnsmasq neu zu starten, führen Sie den folgenden systemctl-Befehl aus:
sudo systemctl restart dnsmasq
Oder geben Sie den folgenden Befehl ein:
Dienst DNSMASQ neu starten
Geben Sie das Administratorkennwort ein, wenn Sie dazu aufgefordert werden. dnsmasq wird nun neu gestartet und alle Ihre vorhandenen DNS-Einträge werden aus dem Cache entfernt.
Nachdem Sie den DNS-Cache geleert haben, sehen Sie sich am besten die lokalen Cache-Einträge an und überprüfen Sie, ob die Daten erfolgreich entfernt wurden. Sie können dig verwenden, eines davon viele Linux-Befehle zur Fehlerbehebung im Netzwerk, und überprüfen Sie den Abfragezeitwert in der Ausgabe. Wenn es mehr als 0 ms beträgt, wurde der Cache erfolgreich geleert (0 ms bedeutet, dass sich der Domäneneintrag noch im Cache befindet).
Grabe google.com
Leeren Sie den DNS-Cache von Google Chrome
Der Webbrowser, den Sie häufig verwenden, speichert auch die DNS-Einträge zwischen. Wenn Sie eine URL eingeben, sucht das System nach einem Cache-Eintrag im lokalen Browser-Cache. Wenn die Datensätze nicht gefunden werden, wird nach Datensätzen im lokalen Systemcache gesucht. Es ist wichtig, den DNS-Cache Ihres Webbrowsers zu leeren, da dieser eine höhere Priorität hat als der systemweite Cache.
Zur Demonstration leeren wir den DNS-Cache in Google Chrome. Es gibt auch Möglichkeiten, dies in anderen Browsern zu tun. Am besten googeln Sie also, wie es für den von Ihnen verwendeten Browser geht.
Geben Sie zunächst „chrome://net-internals/#dns" in der URL-Leiste und klicken Sie auf Eingeben:
Klicken Host-Cache leeren um die in Google Chrome gespeicherten DNS-Einträge zu löschen.
Linux ist das beste Betriebssystem zum Erlernen von Netzwerken
Linux mag auf den ersten Blick kompliziert erscheinen, aber wenn Sie etwas Zeit investieren, um zu lernen, wie es funktioniert, werden Sie schnell feststellen, dass es fantastisch und vielleicht sogar besser als Windows oder macOS ist.
Auf den meisten Online-Servern läuft Linux, und das ist einer der Gründe, warum Linux ideal ist, wenn Sie Netzwerke erlernen oder wissen möchten, wie Computer im Allgemeinen funktionieren.