Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So zeigen Sie den DNS-Cache unter Linux an und aktualisieren ihn

So zeigen Sie den DNS-Cache unter Linux an und aktualisieren ihn

王林
王林nach vorne
2023-06-29 14:40:274682Durchsuche

Indem Sie Ihren lokalen DNS-Cache leeren, können Sie HTTP-Fehler beheben und sich vor DNS-Spoofing schützen. Hier erfahren Sie, wie es unter Linux geht.

Wenn Sie eine Website mit einem Domainnamen besuchen, sendet Ihr System eine Anfrage an den DNS-Server, um die IP-Adresse der Domain zu erhalten. Dieses Domänen-IP-Adresspaar wird zur späteren Verwendung im DNS-Cache gespeichert, sodass Sie nicht jedes Mal eine Anfrage 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 in Linux-Betriebssystemen sehr einfach. So wird es gemacht.

如何在 Linux 上查看和刷新 DNS 缓存

Warum sollten Sie den DNS-Cache unter Linux leeren?

Es gibt mehrere Gründe, warum Sie den auf Ihrem System gespeicherten DNS-Cache neu erstellen möchten. Wenn Ihr DNS-Eintrag veraltet ist, möchten Sie ihn möglicherweise erneut vom DNS-Server abrufen. Wenn Sie außerdem befürchten, dass Ihr System kompromittiert wurde, möchten Sie möglicherweise sicherstellen, dass der DNS-Cache nicht manipuliert wurde, was auch als DNS-Spoofing bezeichnet wird.

Wenn Sie den DNS-Cache leeren, muss das System den DNS-Server erneut anpingen und neue Domänen-IP-Adressdatensätze von ihm abrufen und dabei alle veralteten oder beschädigten Daten entfernen.

So zeigen Sie den lokalen DNS-Cache unter Linux an

Vor systemd hatten die meisten Linux-Distributionen keinen systemweiten DNS-Cache, es sei denn, er wurde manuell von einem Programm wie dnsmasq oder nscd eingerichtet. systemd wird mit systemd-solved geliefert, einem Dienst, der Domänennamen in IP-Adressen auflöst und DNS-Einträge zwischenspeichert.

In den folgenden Abschnitten erfahren Sie, wie Sie den Inhalt des durch systemd-Parsing, nscd und dnsmasq generierten DNS-Cache anzeigen, damit Sie die zwischengespeicherten Daten verstehen können, bevor Sie sich für die Aktualisierung der zwischengespeicherten Daten entscheiden.

Vom System aufgelösten DNS-Cache anzeigen

Um vom System aufgelöste Cache-Einträge anzuzeigen, müssen Sie den Dienst vorübergehend stoppen und dann seine Protokolle in eine Datei exportieren.

Senden Sie zunächst das SIGUSR1-Signal, um den systemd-Analysedienst zu beenden:

linuxmi@linuxmi ~/www.linuxmi.com % sudo killall -USR1 systemd-resolved[sudo] linuxmi 的密码: 

Verwenden Sie den Befehl „journalctl“ und den Standardausgabeoperator, um die Ausgabe in einer Textdatei zu speichern:

linuxmi@linuxmi ~/www.linuxmi.com % sudo journalctl -u systemd-resolved > ~/cache.txtlinuxmi@linuxmi ~/www.linuxmi.com

如何在 Linux 上查看和刷新 DNS 缓存

Sie können die Datei dann mithilfe eines Textes anzeigen Editor wie Vim Inhalt:

如何在 Linux 上查看和刷新 DNS 缓存

Suchen Sie in der Datei nach „CACHE:“, indem Sie Escape drücken, „/CACHE:“ eingeben und dann die Eingabetaste drücken. Alle unter „CACHE:“ aufgeführten DNS-Einträge sind im lokalen DNS-Cache enthalten. Wenn Sie Vim verwenden, drücken Sie die Taste n, um zum nächsten Satz von DNS-Einträgen zu springen.

如何在 Linux 上查看和刷新 DNS 缓存

Lokalen DNS-Cache von nscd anzeigen

Um den von nscd generierten lokalen Cache anzuzeigen, müssen Sie den String-Befehl verwenden, um den Inhalt der nscd-Hostdatenbank zu lesen.

Auf Debian- und Ubuntu-basierten Distributionen befindet sich diese Datei in /var/cache/nscd/hosts. Führen Sie den folgenden Befehl aus, um die Datei anzuzeigen:

linuxmi@linuxmi ~/www.linuxmi.com % sudo strings /var/cache/nscd/hosts | uniq

如何在 Linux 上查看和刷新 DNS 缓存

Um allgemeine Statistiken zum NSCD-DNS-Cache anzuzeigen, verwenden Sie das Flag -g:

linuxmi@linuxmi ~/www.linuxmi.com % sudo nscd -g

如何在 Linux 上查看和刷新 DNS 缓存

DNS-Cache anzeigen, der von dnsmasq generiert wurde

Die genauen Datensätze abrufen Nicht einfach weil dnsmasq den DNS-Cache im Speicher speichert. Sie können ein Kill-Signal an dnsmasq senden und dessen Ausgabe protokollieren, um die Anzahl der verarbeiteten DNS-Abfragen zu ermitteln.

Stellen Sie dazu zunächst sicher, dass dnsmasq aktiv ist und läuft, indem Sie den Befehl systemctl verwenden:

linuxmi@linuxmi ~/www.linuxmi.com % sudo systemctl status dnsmasq

如何在 Linux 上查看和刷新 DNS 缓存

Wenn der Status „Aktiv“ lautet, führen Sie den folgenden Befehl aus, um den Dienst zu beenden:

linuxmi@linuxmi ~/www.linuxmi.com % sudo pkill -USR1 dnsmasq

如何在 Linux 上查看和刷新 DNS 缓存

使用 journalctl 命令,提取 dnsmasq 日志并将它们保存到文本文件中:

linuxmi@linuxmi ~/www.linuxmi.com % sudo journalctl -u dnsmasq > ~/cache.txt

最后,使用文件查看实用程序(如 cat 或更少)查看文件的内容:

linuxmi@linuxmi ~/www.linuxmi.com % cat ~/cache.txt

如何在 Linux 上查看和刷新 DNS 缓存

如何在 Linux 上刷新 DNS 缓存

刷新 DNS 缓存意味着从计算机中删除缓存的 DNS 记录。这将迫使它向DNS服务器发送请求,以获取新的DNS条目。

以下是在 Linux 上刷新 DNS 缓存的方法:

使用 systemd 解析

您可以使用 resolvectl 命令刷新 systemd 解析存储的 DNS 缓存:

linuxmi@linuxmi ~/www.linuxmi.com % sudo resolvectl flush-caches

如何在 Linux 上查看和刷新 DNS 缓存

如果您运行的是 Ubuntu 17.04 或 18.04,请使用 systemd 解析的命令刷新缓存:

sudo systemd-resolved --flush-caches

在 Linux 上刷新 nscd DNS 缓存

删除 nscd 的 DNS 缓存的最便捷方法是重新启动服务。您可以通过运行以下命令来执行此操作:

linuxmi@linuxmi ~/www.linuxmi.com % sudo /etc/init.d/nscd restart

如何在 Linux 上查看和刷新 DNS 缓存

如果这不起作用,首先,检查存储在PC上的本地缓存是否持久。您可以使用 -g 标志进行验证:

sudo nscd -g

如果是这种情况,请使用带有 nscd 命令的 –i 标志来清除记录(i 代表 invalidate):

linuxmi@linuxmi ~/www.linuxmi.com % sudo nscd -i hosts

删除 dnsmasq DNS 缓存

刷新 dnsmasq 生成的 DNS 缓存很简单。由于缓存存储在内存中,因此重新启动服务会删除所有存储的条目。

要重新启动 dnsmasq,请运行以下 systemctl 命令:

sudo systemctl restart dnsmasq

或者,发出以下命令:

service dnsmasq restart

如果出现提示,请输入管理员密码。现在要重新启动 dnsmasq,所有缓存中存在的 DNS 条目将被清除。

建议刷新 DNS 缓存后,检查本地缓存条目以确认数据已经成功删除。您可以使用 Linux 命令之一的 dig 来进行网络故障排除,并查看输出中的“查询时间”值。假如超过 0 毫秒,则说明缓存已经成功清除(若为 0 毫秒,则表示域记录仍存在于缓存中)。

dig google.com

清除谷歌浏览器的DNS缓存

您经常使用的 Web 浏览器也会缓存 DNS 记录。输入 URL 时,系统会在本地浏览器缓存中搜索缓存条目。如果未找到,它将检查本地系统缓存中的记录。清除 Web 浏览器的 DNS 缓存非常重要,因为它优先于系统范围的缓存。

为了演示,让我们刷新谷歌浏览器中的DNS缓存。在其他浏览器上也有一些方法可以做到这一点,所以最好 Google 一下如何使用你使用的浏览器做到这一点。

首先,在URL栏中键入“chrome://net-internals/#dns”并按Enter键:

如何在 Linux 上查看和刷新 DNS 缓存

点击“清除主机缓存”按钮来清除谷歌浏览器中存储的DNS条目。

Linux是学习网络的最佳操作系统

Linux 乍一看可能看起来很复杂,但如果你花一些时间来学习它是如何工作的,你很快就会意识到它很棒,甚至可能比 Windows 或 macOS 更好。

大多数在线服务器都运行 Linux,如果您想学习网络或想知道计算机通常如何工作,这也是 Linux 理想选择的原因之一。

Das obige ist der detaillierte Inhalt vonSo zeigen Sie den DNS-Cache unter Linux an und aktualisieren ihn. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen