查看 DNS 缓存的方法取决于你使用的操作系统,以下是主流操作系统的详细步骤:
Windows 系统使用内置的ipconfig 命令来查看和清除 DNS 缓存。
1、打开命令提示符或 PowerShell:
- 按Win + R 键,输入cmd 或powershell,然后按回车。
- 或者直接在开始菜单搜索“命令提示符”并以管理员身份运行(非必须,但可以避免权限问题)。
2、输入查看命令:
ipconfig /displaydns效果:会列出当前所有缓存的 DNS 记录,包括域名、记录类型(如 A、AAAA、CNAME)、生存时间(TTL)和对应的 IP 地址。
注意:输出可能会很长,你可以通过ipconfig /displaydns | more 分页查看,或者直接导出到文本文件(ipconfig /displaydns > dns_cache.txt)。
3、(可选)清除 DNS 缓存:
如果你需要刷新缓存(例如网站 IP 已更改),可以使用:
ipconfig /flushdnsmacOS 的 DNS 缓存查看方式因系统版本和使用的解析器不同而有所差异,现代 macOS 通常使用dscacheutil 或sudo 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 mDNSRespondermacOS Monterey (12) 及更早版本:
sudo killall -HUP mDNSResponderLinux 系统本身没有统一的 DNS 缓存机制,通常由不同的服务软件来实现(如systemd-resolved、dnsmasq、nscd、unbound 等),查看方法取决于你使用了哪个。
如果使用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-resolved:sudo resolvectl flush-caches
nscd:sudo /etc/init.d/nscd restart 或sudo systemctl restart nscd
dnsmasq:sudo systemctl restart dnsmasq
浏览器(如 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”按钮)。
| 操作系统 | 查看命令(主要) |
| Windows | ipconfig /displaydns |
| macOS | sudo dscacheutil -cachedump -entries Host |
| Linux (systemd-resolved) | sudo resolvectl show-cache 或sudo systemd-resolve --statistics |
| 浏览器 | chrome://net-internals/#dns |
如果你只是想快速确认某个域名是否被缓存以及对应的 IP 是什么,最直接的方法是在命令行使用ping、nslookup 或dig 命令,但请注意它们可能会发起新的 DNS 查询,而不是直接读取缓存。 如果你想强制使用缓存中的结果,可以使用nslookup 的-nosearch 参数,或者使用getent hosts 命令。
文章摘自:https://idc.huochengrm.cn/dns/26583.html
评论