要查看 DNS 缓存时间,首先需要区分你指的是本机缓存的剩余有效时间(即这个域名在本地还缓存多久过期),还是域名在权威 DNS 服务器上设置的原始 TTL 值(即解析记录本身的存活时间),下面分场景说明。

不同操作系统查看方式不同:
使用命令查看当前所有 DNS 缓存记录(包括剩余生存时间):
ipconfig /displaydns
输出中会包含生存时间(TTL) 字段,单位是秒,这个值会随着时间递减,表示该记录在本地还能存活多久。
如果你只想看特定域名(例如example.com):
powershell -Command "(Get-DnsClientCache -Entry example.com).TimeToLive"
(需以管理员身份运行 PowerShell)

macOS:默认没有简单命令查看系统 DNS 缓存(macOS 使用系统级缓存,如mDNSResponder)。
可以尝试使用sudo killall -INFO mDNSResponder 查看日志,但不太直观,更常用的方式是直接通过nslookup 或dig 查询原始 TTL(见第二部分)。
Linux(使用 systemd-resolved 的发行版):
查看某个域名的缓存剩余时间:
sudo resolvectl statistics example.com
或在较新版本中使用:

sudo busctl get-property org.freedesktop.resolve1 /org/freedesktop/resolve1 org.freedesktop.resolve1.Manager DnsStatistics
但多数 Linux 用户更习惯直接查权威 TTL。
3. 浏览器缓存(Chrome / Edge)
浏览器有独立 DNS 缓存,可通过以下方式查看:
- 在地址栏输入chrome://net-internals/#dns 或edge://net-internals/#dns
- 查看域名列表,但不会直接显示剩余时间(只显示缓存状态)。
二、查看域名原始 TTL(权威服务器设置的时间)
无论哪种系统,都可以通过查询权威 DNS 服务器获得该域名的原始 TTL 值,这个值是固定不变的(除非域名所有者修改)。
nslookup -type=any example.com
输出中non-authoritative answer 部分的生存时间即为该记录的 TTL(单位秒)。
注意:如果是刚请求过的域名,本地可能会返回缓存中的剩余 TTL,而不是原始值。
dig example.com
在应答部分第一行的3600 TTL(秒)。
;; ANSWER SECTION: example.com. 3600 IN A 93.184.216.34
这里的3600 表示该 A 记录的原始 TTL 是 3600 秒(1 小时)。
如果你想直接只获取 TTL 数值:
dig example.com +questions | grep -oP '\d+(?=\s+IN\s+A\b)'
或更简单:
dig example.com | awk '/^;; ANSWER SECTION:/ { getline; print $2 }'某些 TLD 的 WHOIS 信息中也包含域名的 TTL(通常是DNSSEC 相关字段),但不常见,且不够直接。
| 场景 | 推荐命令/操作 |
| 想知道本机缓存还剩多久(Windows) | ipconfig /displaydns |
| 想知道域名原始 TTL(跨系统通用) | dig example.com |
| 快速在 Linux 上查看原始 TTL | dig +short example.com 后,再查 TTL?不,+short 不显示 TTL,建议用dig example.com 看完整输出。 |
| 检查权威服务器的 TTL 是否已更改 | 清除本地缓存后(Windows:ipconfig /flushdns)再dig |
>注意:dig 命令在 Windows 上默认没有安装,可先安装 BIND 工具包或使用 Linux / macOS,如果无法使用dig,nslookup 是最简单的替代方案。
文章摘自:https://idc.huochengrm.cn/dns/26246.html
评论