互联网教程

DNS 改了为什么有的地方还不生效

发布者:黔序科技更新于 2026-11-06 11:24依据官方文档核验:2026 年 11 月

AI 导读

约 2 分钟读完

改DNS后部分用户无法访问并非配置错误,而是递归服务器缓存旧记录导致的正常延迟。针对企业运维中域名迁移或变更时的生效不一致痛点,文章拆解了从权威到浏览器端的四层缓存机制,提供通过nslookup分层排查定位故障环节的具体方法,并给出提前降低TTL值以缩短全网同步时间的实操策略,帮助决策者规避因缓存未过期引发的业务中断风险。

  • 解析不生效本质是递归DNS缓存旧记录至TTL到期
  • 修改记录前需提前一天将TTL降至60秒以加速同步
  • 通过对比权威查询与公共DNS结果可定位缓存层级
  • 迁移期间严禁同时更换IP地址与DNS服务商
  • 内网无法访问而外网正常多因内部静态解析冲突

内容由 AI 智能生成,仅供参考

一句话:改解析之后,全世界不是同时更新的:每个递归 DNS 都会把旧结果缓存释到 TTL 到期。所以「有的人能开、有的人不能开」是正常现象,不是配置错了。

一条解析要经过几层缓存

  1. 权威 DNS你改的就是这一层,它立刻是新值。
  2. 递归 DNS运营商或 8.8.8.8 这类服务器,按 TTL 缓存旧值。
  3. 操作系统缓存本机会存一份,Windows 可用 ipconfig /flushdns 清。
  4. 浏览器与 DoHChrome、Edge 自带缓存,开了安全 DNS 还会走另一条解析链路。
解析变更从权威 DNS 到终端用户经历的缓存层
每多一层缓存,就多一段「新旧并存」的时间

判断到底是哪一层的问题

  1. 查权威结果用 nslookup 域名 你的权威DNS,或在线工具选「权威查询」。这里对,说明配置没问题。
  2. 查公共 DNS用 nslookup 域名 8.8.8.8 与 223.5.5.5 各查一次,两者一致基本全网已更新。
  3. 清本机缓存Windows 用 flushdns,macOS 用 sudo dscacheutil -flushcache,再重启浏览器。
  4. 换网络验证用手机流量访问一次,能开说明只是你所在的网络还没刷新。

迁移时把影响压到最小

关键在于提前降 TTL:计划切换的前一天,把要改的记录 TTL 从默认(常见 600 或 3600 秒)改成 60 秒,等旧 TTL 过期后再改记录值。这样切换后最多一分钟全网拿到新值。反过来,改完才想起降 TTL,就得等原来的缓存过期。

注意:迁移期间不要同时改两件事。既换 IP 又换 DNS 服务商,一旦出问题无法判断是哪一步引起的,回滚也说不清回到哪个状态。

看起来像解析问题的其他故障

  • 解析已生效但打不开:服务器防火墙没放行、nginx 没监听、证书过期。
  • 部分地区打不开:可能走了不同线路的 CDN释 节点,或该地区递归 DNS 仍缓存旧值。
  • 公司内网打不开、手机能开:内网 DNS 自己配了静态解析或发散了,找网管查内网 DNS。

资料来源

  • RFC 1034 / 1035:DNS 缓存与 TTL 机制。
  • 阿里云云解析文档:解析生效时间与 TTL 的关系说明。
  • Google Public DNS 文档:递归解析缓存行为。

常见问题

TTL 改小了为什么还是没马上生效?

因为你改的是「以后」的缓存时长,已经缓存出去的旧记录仍按旧 TTL 计时。要等旧 TTL 到期,新 TTL 才起作用,所以降 TTL 必须提前做。

解析生效了,但网站还是旧页面?

那已经不是 DNS 的问题了。检查 CDN 缓存、浏览器缓存、以及服务器上是不是还挂着旧站点目录。用 curl -I 看响应头里的时间和 server 标识最快。

能不能加急让解析立刻全网生效?

没有这个操作。权威侧是即时的,剩下的全在别人家的缓存里,任何服务商都无权清别人的缓存。唯一能做的是提前降 TTL。

相关阅读