查看 DNS 缓存信息的方法因操作系统而异,以下是 Windows、macOS 和 Linux 的常用方法:

1. 查看完整 DNS 缓存(最常用)
打开命令提示符(CMD)或 PowerShell,输入:
ipconfig /displaydns
系统会列出所有缓存的域名、对应的 IP 地址、记录类型(A、AAAA、CNAME 等)以及 TTL(生存时间)。
2. 只查看特定域名的缓存
如果缓存内容太多,可以用findstr 过滤:

ipconfig /displaydns | findstr "baidu.com"
(替换baidu.com 为你要查的域名)
3. 清除 DNS 缓存(配合查看使用)
清理后再用ipconfig /displaydns 可确认缓存已清空:
ipconfig /flushdns
macOS 默认使用mDNSResponder 进程管理 DNS 缓存,查看方式如下:
1. 使用nslookup 模拟查询(最直观,不直接显示缓存)

查询一个域名,看是否立即返回结果(如果很快且无网络请求,说明有缓存):
nslookup google.com
2. 直接查看缓存内容(需管理员权限)
sudo dscacheutil -cachedump -entries Host
此命令会输出所有缓存的 DNS 记录,信息较详细。
3. 按域名过滤
sudo dscacheutil -cachedump -entries Host | grep "baidu.com"
4. macOS 清除 DNS 缓存(不同版本命令略有差异)
- 较新版本(macOS 10.12+):
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Linux 本身不默认缓存 DNS(通常由systemd-resolved、dnsmasq 或nscd 等工具提供缓存),根据你使用的缓存服务,查看方法不同:
1. 使用 systemd-resolved(大多数现代发行版)
查看缓存统计信息(域名数量、缓存命中率等) resolvectl statistics 查看所有缓存的域名和记录(需要安装 jq 格式化,或直接看原始输出) resolvectl cache
2. 使用 nscd(较老的系统)
查看缓存统计 sudo nscd -g 注意:nscd 不提供直接导出所有缓存记录的内置命令,通常结合 strace 或日志查看。
3. 使用 dnsmasq(常见于路由器或自建 DNS 服务)
需要访问 dnsmasq 的进程文件或使用其管理接口(如kill -USR1 发送信号,然后查看系统日志)。
浏览器(如 Chrome/Edge)也有自己的 DNS 缓存,与系统缓存独立。
Chrome / Edge 查看缓存:
在地址栏输入:
chrome://net-internals/#dns
(Edge 改为edge://net-internals/#dns)
页面会列出浏览器当前缓存的域名和 IP。
Windows:直接用ipconfig /displaydns 最简单。
macOS:常用sudo dscacheutil -cachedump -entries Host。
Linux:先确认你使用的缓存服务(systemd-resolved →resolvectl cache)。
浏览器:访问chrome://net-internals/#dns 查看。
如果只是想快速确认某个域名是否在缓存中,使用ping 域名 或nslookup 域名 看响应速度,通常也能辅助判断。
文章摘自:https://idc.huochengrm.cn/dns/26354.html
评论