良许Linux教程网 干货合集 Linux下如何查看和清除DNS缓存

Linux下如何查看和清除DNS缓存

DNS,即域名系统协议,是Linux系统上用于将名称转换为IP地址的协议。例如,当你执行ping请求时,很可能是使用DNS协议来获取服务器IP。在大多数情况下,你执行的DNS请求都会被存储在你的操作系统的本地缓存中。然而,在某些情况下,你可能想要清除你的服务器的DNS缓存。它可能是因为你改变了你网络上的一个服务器的IP,而你希望立即反映这些更改。在本文中,你将学习如何在Linux上轻松地清除DNS缓存,无论你是使用systemd还是dnsmasq。

为什么要在 Linux 上刷新 DNS 缓存?

您可能想要重建存储在系统上的 DNS 缓存的原因有多种。也许您有一个过时的 DNS 记录,并希望从 DNS 服务器重新获取它。或者,您的系统可能已受到威胁,并且您希望确保DNS缓存未被篡改,也称为DNS欺骗。

当您刷新 DNS 缓存时,系统必须再次 ping DNS 服务器并从中获取新的域 IP 地址记录,从而在此过程中删除任何过时或受损的数据。

如何在 Linux 上查看本地 DNS 缓存

在systemd之前,大多数Linux发行版都没有系统范围的DNS缓存,除非像dnsmasq或nscd这样的程序是手动设置的。systemd 附带 systemd-solved,这是一项将域名解析为 IP 地址并缓存 DNS 条目的服务。

以下各节将指导您如何查看由 systemd 解析、nscd 和 dnsmasq 生成的 DNS 缓存内容,以便您在决定刷新缓存数据之前了解缓存的数据。

查看系统解析的 DNS 缓存

要查看 systemd 解析的缓存记录,您需要先暂时终止服务,然后将其日志导出到文件中。

首先发送 SIGUSR1 信号以终止 systemd 解析的服务:

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

使用 journalctl 命令和标准输出运算符将输出保存到文本文件:

相关:如何使用 journalctl 查看和分析 Systemd 日志 https://www.linuxmi.com/journalctl-systemd-logs.html

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

然后,您可以使用 Vim 等文本编辑器查看文件的内容:

image-20230625150809605
image-20230625150809605

在文件中,搜索“CACHE:”,方法是按 Escape,键入“**/CACHE:”,然后按 Enter 键。“CACHE:”**下列出的所有 DNS 记录都是本地 DNS 缓存的一部分。如果您使用的是 Vim,请按 n 跳转到下一组 DNS 条目。

image-20230625150837479
image-20230625150837479

查看 nscd 的本地 DNS 缓存

要查看 nscd 生成的本地缓存,您需要使用 string 命令读取 nscd 主机数据库的内容。

在基于 Debian 和 Ubuntu 的发行版上,此文件位于 /var/cache/nscd/hosts。运行以下命令以查看文件:

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

要查看有关 nscd DNS 高速缓存的一般统计信息,请使用 -g 标志:

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

显示由 dnsmasq 生成的 DNS 缓存

dnsmasq 将 DNS 缓存存储在内存中,因此获取确切的记录并不容易。但是您可以向 dnsmasq 发送终止信号并记录其输出以获取处理的 DNS 查询数。

为此,首先,使用 systemctl 命令确保 dnsmasq 已启动并正在运行:

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

如果状态显示“活动 Active”,请运行以下命令以终止该服务:

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

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

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

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

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

image-20230625150905403

如何在 Linux 上刷新 DNS 缓存

刷新 DNS 缓存意味着从计算机中删除缓存的 DNS 记录。这会强制它向 DNS 服务器发送请求以检索新的 DNS 条目。

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

使用 systemd 解析

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

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

如果您运行的是 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
image-20230625151037012
image-20230625151037012

如果这不起作用,首先,检查存储在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 缓存后,最好查看本地缓存条目并验证数据是否已成功删除。您可以使用 dig(许多网络故障排除 Linux 命令之一),并检查输出中的“查询时间”值。如果超过 0 毫秒,则缓存已成功清除(0 毫秒表示域记录仍在缓存中)。

dig google.com

清除谷歌浏览器的DNS缓存

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

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

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

image-20230625151042672
image-20230625151042672

单击清除主机缓存 Clear host cache 以清除存储在谷歌浏览器中的DNS条目。

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

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

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

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部