如何在 Ubuntu 和 Windows 上查看 DNS 缓存的内容

你有没有想过你的网络浏览器是如何工作的? 当您在 Web 浏览器的地址栏中输入 URL(或域名)时,它会获取 URL 并将其发送到域名系统以破译 Web 服务器的 IP 地址。 一旦浏览器获得详细信息,它就会与网络服务器连接以加载您请求的网站。 如果您想详细了解什么是域名系统及其工作原理,您可以在我们的另一篇文章“什么是 DNS 缓存?”中阅读相关内容。

现在有时您可能会遇到网络问题,例如,您可能输入了正确的 URL,但加载的网站可能不同,或者您可能会遇到类似于“DNS 服务器无响应”错误的错误。 虽然偶尔遇到这些问题可能不是那么大的障碍,但如果您知道该错误与您的本地 DNS 有关,那么知道如何显示 DNS 缓存的内容可能是一个救命稻草。

如何在 Ubuntu 上检查 DNS 缓存的内容

自从 Fedora 在 Ubuntu 33 和 Ubuntu 20.10 中,许多 Linux 发行版已切换到“系统解析”来处理 DNS 以及 Internet 的许多其他必要操作。 尽管它已经存在了很长时间,但许多发行版都对进行转换表示犹豫。

尽管 systemd 能够处理运行与 DNS 相关的任务的要求,但没有直接的方法来查看 DNS 缓存的条目。 首先,我们需要向服务发送终止信号。 不用担心,它不会完全终止服务,而是会将缓存的当前条目写入系统日志。 杀死命令是:

$sudo killall -USR2 systemd-resolved

如您所见,您需要记住 sudo 您帐户的密码。 输入密码后,您将获得即时响应并返回提示。

现在您需要将这些命令从系统日志导出到一个文本文件中。 您可以通过以下命令实现此目标:

$sudo journalctl -u system-resolved > ~/dns-cache.txt

上面显示的命令将在您的主目录中创建一个具有相同名称的文件,即“dns-cache.txt”。 您可以将文件名保留为任何您喜欢的名称。 根据您的 DNS 缓存中有多少条目,此命令可能需要 2-30 秒。

通过文本编辑器查看文件

您可以通过双击文件直接打开此文本文件以查看 DNS 缓存中的条目。

您可以查看 DNS 缓存的所有条目,并根据需要轻松编辑文件。

通过终端查看文件

在您的终端中,键入以下内容以在终端中打开文件。

$less ~/dns-cache.txt

如何在 Windows 上检查 DNS 缓存的内容

您可以通过多种方式检查 Windows 上本地 DNS 缓存的内容。 让我们看一下您可以轻松使用的前两种方法:

通过命令提示符

这是相当简单和容易记住的。 首先打开命令提示符并键入:

“ipconfig /displaydns”

使用此命令按 enter 后,您将获得如下结果:

让我们进一步分解这个输出。 “记录名称”是您的浏览器用来查询 DNS 服务器及其记录的名称。 “记录类型”是指与DNS协议对应的条目类型。 “生存时间”或 TTL 描述了条目的有效期,以秒为单位显示。 数据长度以字节为单位描述条目的长度,IPv4 地址为 4 个字节,IPv6 地址为 16 个字节。 “部分”保存查询的答案。

最后但并非最不重要的一点是,“A(主机)记录”是与浏览器中的 URL 对应的 IP 地址。

导出记录

您可以通过在命令提示符中键入“ipconfig /displaydns > dnscacheoutput.txt”来导出此查询的结果。

在此命令中,您可以将“dnscacheoutput”替换为您选择的任何名称。

执行此命令将创建一个文件,其中包含当前目录中 DNS 缓存的所有内容。

通过 PowerShell

如前所述,您还可以使用 Windows PowerShell 查看本地 DNS 缓存的内容。 使用管理员权限打开 Windows PowerShell,然后键入“Get-DnsClientCache”。 它将以表格形式列出所有条目,如下所示:

结论

如果您已逐步完成本教程,您现在知道如何在 Windows 和 Ubuntu 20.04 上查看本地 DNS 缓存的内容。 尽管与 Windows 相比,Ubuntu 上的过程并不容易,但它需要您了解流程并执行 3 个命令。 如果您在使用这些命令时遇到任何问题,或者您想了解有关 DNS 缓存及其条目的更多信息,请随时在下方给我们留言,我们很乐意为您提供帮助。