如何查看DNS缓存?

HCRM技术_小炮 DNS 2026-06-15 69 0

查看 DNS 缓存的方法取决于你使用的操作系统,以下是主流操作系统的详细步骤:

Windows

Windows 系统使用内置的ipconfig 命令来查看和清除 DNS 缓存。

1、打开命令提示符或 PowerShell

- 按Win + R 键,输入cmdpowershell,然后按回车。

- 或者直接在开始菜单搜索“命令提示符”并以管理员身份运行(非必须,但可以避免权限问题)。

2、输入查看命令

    ipconfig /displaydns

效果:会列出当前所有缓存的 DNS 记录,包括域名、记录类型(如 A、AAAA、CNAME)、生存时间(TTL)和对应的 IP 地址。

注意:输出可能会很长,你可以通过ipconfig /displaydns | more 分页查看,或者直接导出到文本文件(ipconfig /displaydns > dns_cache.txt)。

3、(可选)清除 DNS 缓存

如果你需要刷新缓存(例如网站 IP 已更改),可以使用:

    ipconfig /flushdns

macOS

macOS 的 DNS 缓存查看方式因系统版本和使用的解析器不同而有所差异,现代 macOS 通常使用dscacheutilsudo killall -INFO mDNSResponder(对于较新版本)。

1、打开终端(在“应用程序” -> “实用工具”中)。

2、查看所有 DNS 缓存(推荐):

    sudo dscacheutil -cachedump -entries Host

注意:需要管理员权限(会提示输入密码),这会列出所有缓存的主机名记录。

3、查看特定域名的缓存

如果你想查询某个域名是否在缓存中,可以使用:

    dscacheutil -q host -a name example.com

example.com 替换为你要查询的域名。

4、(可选)清除 DNS 缓存

macOS Ventura (13) 及更高版本

        sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

macOS Monterey (12) 及更早版本

        sudo killall -HUP mDNSResponder

Linux

Linux 系统本身没有统一的 DNS 缓存机制,通常由不同的服务软件来实现(如systemd-resolveddnsmasqnscdunbound 等),查看方法取决于你使用了哪个。

如果使用systemd-resolved(最常见,如 Ubuntu 18.04+、Fedora)

1. 查看统计信息(不直接显示条目):

        sudo resolvectl statistics

2. 查看缓存内容(现代systemd 版本支持):

        sudo resolvectl show-cache

或者使用旧版命令:

        sudo systemd-resolve --statistics

如果使用nscd(Name Service Cache Daemon)

没有直接查看缓存内容的命令,通常只能通过nscd -g 查看缓存统计信息(命中率、大小等),无法列出具体域名。

如果使用dnsmasq

dnsmasq 默认不提供用户空间命令来查看缓存,你需要向它发送SIGUSR1 信号,让它将缓存内容输出到系统日志(或标准输出)。

    sudo killall -USR1 dnsmasq

然后查看日志(例如journalctl -u dnsmasq/var/log/syslog),找到“cache size”后面的条目。

(可选)清除缓存

systemd-resolvedsudo resolvectl flush-caches

nscdsudo /etc/init.d/nscd restartsudo systemctl restart nscd

dnsmasqsudo systemctl restart dnsmasq

浏览器内部 DNS 缓存

浏览器(如 Chrome、Edge)有自己独立的 DNS 缓存,与操作系统无关,查看方法:

1、 在地址栏输入:chrome://net-internals/#dns (适用于 Chrome、Edge、Opera 等基于 Chromium 的浏览器)。

2、 点击“DNS”标签,点击“Resolve host”旁边的下拉菜单,或者直接点击“Host resolver cache”下方的“clear host cache”按钮。(如果版本较新,可能会直接显示“Clear host cache”按钮)。

操作系统 查看命令(主要)
Windowsipconfig /displaydns
macOSsudo dscacheutil -cachedump -entries Host
Linux (systemd-resolved)sudo resolvectl show-cachesudo systemd-resolve --statistics
浏览器chrome://net-internals/#dns

如果你只是想快速确认某个域名是否被缓存以及对应的 IP 是什么,最直接的方法是在命令行使用pingnslookupdig 命令,但请注意它们可能会发起新的 DNS 查询,而不是直接读取缓存。 如果你想强制使用缓存中的结果,可以使用nslookup-nosearch 参数,或者使用getent hosts 命令。

文章摘自:https://idc.huochengrm.cn/dns/26583.html

评论