你有没有想过你的网络浏览器是如何工作的? 当您在 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 缓存及其条目的更多信息,请随时在下方给我们留言,我们很乐意为您提供帮助。