要查看计算机当前缓存(已解析过)的 DNS 记录,可以根据操作系统使用以下方法:

使用ipconfig /displaydns 命令查看所有缓存的 DNS 记录(包括域名、解析结果、TTL 等)。
步骤:
- 按Win + R,输入cmd 打开命令提示符。
- 输入命令:
ipconfig /displaydns
- 你会看到类似下面的输出(列出了每个域名及其对应的 IP 地址):

www.example.com
----------------------------------------
Name: www.example.com
Addresses: 93.184.216.34
2606:2800:220:1:248:1893:25c8:1946小贴士:
- 若需清空缓存(强制重新解析),可使用:
ipconfig /flushdns
macOS 查看 DNS 缓存相对复杂,不同版本命令不同(推荐使用通用方法):
方法一:使用sudo dscacheutil -cachedump -entries Host(适用于较旧 macOS)
sudo dscacheutil -cachedump -entries Host
输出会显示所有缓存的 Host 记录(域名和 IP)。

方法二:使用log stream 实时监控 DNS 查询(适用于较新 macOS 如 Big Sur 以上)
sudo log stream --predicate 'subsystem == "com.apple.mDNSResponder"' --style syslog | grep "TXT\|A\|AAAA"
此命令会实时显示当前发生的 DNS 查询,而不是静态缓存列表。
- 若要查看已有缓存,更推荐使用第三方工具如dns-cache,或从/var/log/system.log 中提取历史记录(需先开启 DNS 日志)。
简单替代方案:
直接使用nslookup 或dig 查询某个域名,可以查看当前系统解析到的结果(但不会显示所有缓存记录)。
Linux 的 DNS 缓存通常由本地的systemd-resolved、dnsmasq 或nscd 管理,查看方法取决于你使用的服务:
使用 systemd-resolved(常见于 Ubuntu 18.04+)
sudo resolvectl statistics # 查看缓存统计 sudo resolvectl flush-caches # 清空缓存
systemd-resolved 没有直接导出所有缓存记录的命令,但可以通过查看日志或抓包获得查询记录。
使用dig 或nslookup 手动查询
查询单个域名时可以加+trace 看到解析路径,但并不是查看“所有已解析的记录”。
查看系统日志
Linux 系统通常会将 DNS 查询记录到/var/log/syslog 或/var/log/messages(需要预先配置日志级别)。
如果你想知道计算机最近所有发出和接收的 DNS 查询(包括缓存未命中时),可以使用抓包工具:
Windows/macOS/Linux 通用: 安装Wireshark 或使用命令行工具tcpdump
sudo tcpdump -i any port 53
运行后,每当计算机进行 DNS 查询时,你都会看到包含域名和响应 IP 的数据包。
| 系统 | 查看已解析 DNS 缓存的最佳命令 | 备注 |
| Windows | ipconfig /displaydns | 简单直接,推荐新手使用 |
| macOS | sudo dscacheutil -cachedump -entries Host | 仅部分版本可用,新版本推荐 log 或抓包 |
| Linux | 无统一命令,建议使用抓包 (tcpdump port 53) | 查看实时 DNS 请求更直观 |
如果只是想确认某个特定域名是否被解析过,直接使用nslookup 域名 或ping 域名 即可查看当前系统的解析结果(即使不在缓存中,也会触发新的查询)。
文章摘自:https://idc.huochengrm.cn/dns/26965.html
评论