Birds – Flying beyond the wall

DNS缓存是什么?为什么修改解析后仍访问旧地址

更新于 2026-11-02 · birds.mom

简答:DNS缓存就是把域名对应的解析结果暂时保存起来,下一次访问时直接复用,从而减少重复查询。你修改了DNS记录后仍看到旧地址,通常与本机、路由器或递归DNS解析器中的缓存和TTL有关。先在受影响设备上刷新本地DNS缓存,再用不同DNS服务器对照查询;如果只有部分网络仍返回旧结果,就不要反复清除本机缓存,应等待上游缓存过期或检查权威解析。

定义:DNS缓存是DNS客户端或递归解析器暂时保存域名解析记录及其有效期信息,以减少重复查询的机制。

先看速查卡:DNS缓存问题怎么判断

如果只是单台设备打不开或仍访问旧地址,先处理本机缓存;如果同一网络中的多台设备都异常,继续检查路由器或当前使用的递归DNS;如果不同网络返回的地址不同,则更像是TTL尚未到期、负缓存或解析链路尚未同步。

现象与优先动作对照
现象优先检查可执行动作成功标准
只有一台电脑看到旧地址操作系统DNS客户端缓存Windows运行ipconfig /flushdns,再重新查询本机查询结果与权威记录或其他网络一致
同一Wi-Fi下多台设备都异常路由器或局域网DNS转发重连网络,检查路由器DNS设置;必要时按路由器说明重启DNS服务多台设备的解析结果恢复一致
不同网络返回不同IP递归DNS缓存、TTL或负缓存用不同网络或DNS解析器查询,并查看记录剩余TTL等待旧缓存过期后结果逐步一致
域名返回NXDOMAIN负缓存或记录尚未创建核对域名、记录类型和权威DNS;不要只清除本机缓存查询不再返回NXDOMAIN,且权威服务器有正确记录

Windows官方文档说明,ipconfig /displaydns可查看本地解析器缓存,ipconfig /flushdns会清空并重置该缓存;PowerShell也可使用Clear-DnsClientCache。参考Microsoft 的 ipconfig 文档和Clear-DnsClientCache 文档。

DNS缓存到底存在哪里

一次访问域名时,缓存可能出现在多个层级:浏览器或应用自身、操作系统DNS客户端、家庭或办公路由器、运营商或公共递归DNS解析器。命中较前面的缓存时,查询不会继续向更上游发送;没有命中时,递归解析器才会继续查询权威DNS,并把得到的记录暂存一段时间。

  1. 应用或浏览器层:部分应用可能暂存解析结果或连接状态,清除操作通常需要关闭并重新打开应用。
  2. 操作系统层:系统DNS客户端会保存最近获得的资源记录,也可能保存“该域名不存在”的负面结果。
  3. 路由器层:路由器可能作为局域网设备的DNS转发器,并保留自己的缓存。
  4. 递归DNS层:运营商或公共DNS解析器会根据记录中的TTL缓存答案,再为多个用户复用。
  5. 权威DNS层:权威服务器保存当前配置的正式记录,但用户的查询未必会立即到达这里。

Cloudflare对DNS查询流程的说明指出,递归解析器可以使用缓存中的IP地址直接回答请求;缓存时间由TTL控制。清除本机缓存只能影响当前设备,不能直接清除运营商或公共DNS解析器中的记录。

TTL、缓存过期与DNS传播延迟有什么区别

TTL是DNS记录规定的缓存有效时间。递归解析器收到记录后,会在TTL允许的时间内继续使用它;TTL到期后,通常需要重新向上游查询。TTL越长,重复查询可能越少,但DNS记录变更被旧缓存继续使用的时间也可能更长。可参考Cloudflare的TTL说明。

“DNS传播延迟”不是一台服务器把记录主动推送到所有设备,而是不同递归解析器在不同时间查询、缓存和重新验证记录,导致用户在一段时间内看到不同结果。修改记录后,降低新记录的TTL也不一定能立即消除旧记录;如果解析器此前缓存了NXDOMAIN,旧的负缓存仍可能继续生效。Cloudflare DNS排障文档明确区分了本地缓存、上游递归缓存和负缓存。

几种“缓存”不要混淆
类型保存的内容刷新DNS缓存能否解决
DNS缓存域名、记录类型、IP或负面解析结果可能解决本机旧解析
浏览器缓存网页文件、脚本、图片等不能直接清除
CDN或代理缓存网站内容或边缘节点响应不能直接清除
DNS传播延迟不同解析器的缓存状态差异清本机无效,需等待或核查上游

什么时候需要刷新DNS缓存

适合刷新本机缓存的场景包括:刚修改了域名记录后,只有当前设备仍访问旧地址;曾经查询过一个尚未创建的子域名,之后创建记录却仍返回NXDOMAIN;或本机缓存了明显错误的解析结果。刷新前先记录当前DNS服务器和查询结果,避免把网络配置问题误判成缓存问题。

  1. 确认域名拼写、记录类型和目标地址没有填错。
  2. 在Windows命令提示符中运行ipconfig /displaydns,查看是否存在相关缓存。
  3. 运行ipconfig /flushdns清除本机DNS客户端缓存。
  4. 关闭并重新打开受影响的应用或浏览器,再次访问。
  5. 用nslookup 域名查询,并与另一网络或另一递归DNS结果比较。
  6. 如果结果仍旧不同,停止重复刷新,转而检查路由器、递归DNS、权威记录和TTL。

Microsoft文档还说明,nslookup不会使用Windows客户端缓存,而是向配置的DNS服务器发起查询,因此适合用来区分“本机缓存问题”和“上游解析结果问题”。可参考Microsoft DNS客户端排障说明。

Windows、macOS、Linux、Android和iPhone怎么处理

  • Windows:使用管理员权限或普通命令提示符按系统权限执行ipconfig /displaydns和ipconfig /flushdns;然后用nslookup复查。
  • macOS:不同系统版本的DNS刷新命令可能不同,不建议照抄不明版本命令。优先断开并重新连接网络、重启受影响应用;需要命令时参考站内的macOS清除DNS缓存指南,并以当前系统版本为准。
  • Linux:DNS缓存是否存在取决于发行版和正在运行的解析服务。先确认系统使用的解析服务,再按该服务的文档重启或清除缓存,不要把某一发行版命令当成通用规则。
  • Android:先切换网络或开启再关闭飞行模式,重新打开应用;如果使用私人DNS或代理客户端,还要检查其DNS设置是否接管了系统解析,可参考Android私人DNS排查指南。
  • iPhone:先断开并重新连接Wi-Fi或蜂窝网络,必要时重启设备;若问题只出现在某个网络,继续检查路由器或该网络的DNS配置,可参考iPhone网络排查指南。

这些跨平台动作属于低风险排查框架,不代表所有系统都存在可手动清空的独立DNS缓存。若设备正在使用VPN、代理客户端、企业网络或加密DNS,实际查询路径可能与系统默认路径不同。

DNS缓存中毒与安全检查

DNS缓存中毒是指解析器缓存了错误或被伪造的域名记录,导致用户被指向错误地址。普通用户遇到单个网站异常时,不应直接把问题定性为中毒;先核对证书、域名拼写、多个网络的解析结果,以及设备和路由器的DNS设置。

DNSSEC可以为DNS数据提供来源和完整性验证,但是否生效取决于域名、解析器和验证链路的配置。它不是浏览器缓存清除工具,也不能替代设备、路由器和账户安全检查。无法互相印证域名、账户、条款或客服信息时,不要下载配置、输入凭据或继续导入。

结论:清除DNS缓存能解决什么,不能解决什么

清除DNS缓存主要解决“当前设备仍使用旧的本地解析结果”这一类问题;它不能强制刷新运营商或公共DNS缓存,也不能修复错误的权威记录、网络丢包、MTU问题、代理客户端故障或网站服务器异常。最稳妥的顺序是:先确认记录,再清本机缓存;随后用nslookup或其他DNS查询方式做对照;若多网络结果不同,就根据TTL、负缓存和权威DNS继续定位。

如果你正在排查办公网络或跨平台连接问题,可先保留原始DNS设置和查询结果,再逐层改变一个变量,确认问题究竟发生在设备、路由器、递归DNS还是后续网络连接阶段。

常见问题

DNS缓存是什么?

DNS缓存是设备、路由器或递归DNS解析器暂时保存的域名解析结果。它能减少重复查询,但也可能让设备在TTL到期前继续使用旧地址。

清除DNS缓存会发生什么?

它会删除指定层级的本地解析缓存,下一次访问时重新查询DNS。通常不会删除浏览器网页文件,也不会清除运营商或公共DNS解析器的缓存。

为什么清除DNS缓存后还是访问旧网站?

常见原因是旧记录仍在路由器或上游递归DNS中,或者浏览器、CDN、代理客户端仍保留其他状态。用不同网络和DNS服务器对照查询,比反复刷新本机更有价值。

DNS缓存和DNS传播延迟是一回事吗?

不是。DNS缓存是具体设备或解析器保存的记录;DNS传播延迟是不同解析器因查询时间、TTL和负缓存不同而出现的结果差异。

Windows清除DNS缓存的命令是什么?

可使用<code>ipconfig /flushdns</code>;查看本地缓存可使用<code>ipconfig /displaydns</code>。执行后应重新查询并与其他DNS结果对照。

相关阅读

参考资料

  1. Time to Live (TTL) · Cloudflare DNS docs
  2. What is a DNS Server? · Cloudflare Learning Center
  3. General DNS issues · Cloudflare DNS docs
  4. ipconfig · Microsoft Learn
  5. Clear-DnsClientCache · Microsoft Learn
  6. Troubleshooting DNS clients · Microsoft Learn