DNS传播

对DNS 域名系统 将域名与计算机地址关联起来的互联网目录。 完整定义(DNS)变更被所有人看到之前那段延迟的非正式说法。实际上并没有什么在互联网上“传播”:解析器 代表用户查询域名的DNS服务器。 完整定义(解析器)只是保留旧应答,直到所存副本过期。等待时间取决于记录的TTL 生存时间 解析器可将DNS记录的缓存副本保留多久。 完整定义(TTL);如果更换的是域名服务器 保存域名DNS记录并应答查询的服务器。 完整定义(域名服务器),还取决于顶级域自身的设置。

类别
DNS与技术基础

更新于 阅读需5分钟

当某个域名 由以点分隔的标签组成、便于阅读的互联网名称。 完整定义(域名)的DNS设置发生变更时,例如迁移网站或改用新的域名服务器,并非所有用户都能同时看到变化。在一段时间内,有些人访问的是旧配置,另一些人访问的是新配置。这段等待就是人们所说的DNS传播。

人们所说的DNS传播是什么意思

“传播”(propagation)是一个非正式的说法。它暗示变更会在互联网上向外扩散,但实际上并没有任何内容被推送出去。解析器,即为用户查询域名的服务器,会保存已收到的应答副本,并在其过期之前重复使用,过期后才会重新查询。IETF 互联网工程任务组 制定DNS、EPP和RDAP等互联网标准的开放机构。 完整定义(IETF)的DNS术语文件RFC Request for Comments 记录互联网技术标准和实践的系列文件中的一份编号文件。 完整定义(RFC) 9499中没有“propagation”这一词条。

这一说法通常涵盖两类变更:

  • 对域名自身区域中某条记录的变更,例如新增一条A记录 将域名指向IPv4地址的DNS记录。 完整定义(A记录),将该域名指向新的网页服务器。
  • 域名服务器的变更。这类变更在注册服务机构 代客户向注册管理机构注册域名的公司。 完整定义(注册服务机构)处进行,由其提交给注册管理机构 顶级域的中央数据库和系统,也泛指运营它们的组织。 完整定义(注册管理机构);注册管理机构随后在顶级域区域中发布新的委派。

变更为何不能立即生效:缓存与TTL

主要的缓存位于互联网服务提供商、企业和公共服务所运营的递归解析器中。手机或计算机上的存根解析器 设备上的简单DNS客户端,把查询交给递归解析器。 完整定义(存根解析器)通常依赖其中之一。

每条DNS记录 DNS区中的一个条目,由名称、类型、TTL和数据组成。 完整定义(DNS记录)都带有一个TTL(生存时间):由区域运营方设定的秒数,表示副本可以保存多久。缓存副本会倒计时,归零时副本即被丢弃,下一次查询会重新获取该记录。TTL为0表示该记录不得被缓存。

TTL是上限,而非承诺。解析器可能会限制过长的TTL(RFC 8767建议上限为七天),许多解析器即使在TTL更低时也会将应答保存至少数十秒。最重要的是,任何人都无法删除 从注册管理机构中删除域名注册,由此开始其释放过程。 完整定义(删除)他人解析器中的缓存副本。这才是需要等待的真正原因。

实际需要多长时间,以及如何在变更前缩短等待

不存在统一的通用数字:所需时间取决于相关的TTL。

对于记录变更,旧应答在解析器中最多可保留该记录旧TTL的时长,从该解析器最后一次获取该记录时算起。如果TTL为3,600,解析器在变更后最多一小时内仍可能返回旧应答。

对于域名服务器变更,有三段延迟叠加:

  1. 注册服务机构将变更发送给注册管理机构。
  2. 注册管理机构在顶级域区域中发布变更。截至2026年10月,对于适用ICANN 互联网名称与数字地址分配机构 协调全球DNS和gTLD政策的非营利组织。 完整定义(ICANN)基本注册管理机构协议 ICANN与gTLD注册管理运行机构之间的合同。 完整定义(注册管理机构协议)(2024年1月21日版本)的通用顶级域,服务水平要求是在至少95%的ICANN测试探针中达到60分钟。这一数字不适用于拥有各自协议的传统通用顶级域(如.com),也不适用于ccTLD 国家和地区代码顶级域 国家或地区的顶级域,通常由两个字母组成。 完整定义(ccTLD)。
  3. 缓存的NS记录 域名服务器记录 列出负责某个域名的域名服务器的DNS记录。 完整定义(NS记录)过期。顶级域区域保存着该域名NS记录的自有副本,其TTL是域名持有人无法更改的。

缩短等待的标准做法早在1987年就已在RFC 1034中说明:提前降低TTL,至少提前一个完整的旧TTL周期,然后进行变更,再将TTL调回。对于.es区域,Red.es 通过下属单位Dominios.es管理.es域名的西班牙公共机构。 完整定义(Red.es)建议正常情况下SOA的TTL和Minimum值为3,600秒,在重大变更前可临时降至900秒(15分钟)(截至2026年10月)。降低自己的TTL并不能缩短顶级域中NS记录副本的保存时间。

否定缓存:新域名为何可能一直显示“不存在”

解析器也会记住某个名称不存在。如果有人在某个域名的记录创建之前就查询它,解析器可能缓存一个NXDOMAIN 不存在的域名 表示所查询名称不存在的DNS应答。 完整定义(NXDOMAIN)应答(该名称不存在)或NODATA应答(该名称存在,但没有该类型的记录)。

否定应答的保存时间取区域SOA记录 起始授权机构 位于DNS区域顶端、包含序列号和计时设置的记录。 完整定义(SOA记录)中两个值的较小者:SOA记录自身的TTL和其Minimum字段。按Red.es的正常值3,600和3,600计算(截至2026年10月),最长为一小时。RFC 2308建议解析器默认将否定缓存 在设定时间内保存DNS“不存在”应答。 完整定义(否定缓存)限制在一到三小时。

实践中的经验是:在测试或公布新域名之前先创建记录。过早测试可能使该域名在整个否定缓存期间都显示为不存在。

如何检查变更是否可见

  • 直接查询该域名的权威服务器 为某个域名或区域提供官方应答的DNS服务器。 完整定义(权威服务器)。它们根据区域数据作答,而不是来自缓存。
  • 然后查询一个或多个递归解析器。如果它们仍返回旧数据,其显示的TTL就是重新查询前的剩余时间。
  • 对于域名服务器变更,检查顶级域的服务器是否返回新的NS记录。ICANN的更新时间衡量的正是这一节点。

规划无停机迁移

  1. 先设置新的托管服务或域名服务器,并确认新服务器已能为该域名正确地作出权威应答。Red.es对.es域名推荐这样做。
  2. 按上文所述提前降低TTL。
  3. 进行变更:编辑记录,或通过注册服务机构更换域名服务器。对于.es,委派变更需按既定程序向Red.es申请。
  4. 让旧服务器或旧托管服务继续以正确数据运行,时间至少为顶级域TTL和域名自身TTL中较长的一个。
  5. 核实无误后,再将TTL调回。

示例(数值仅作说明):example.com有一条A记录,TTL为86,400秒(一天)。迁移网站前两天,持有人将TTL降至900。旧的一天TTL过去后,持有人更改A记录,约15分钟内,遵守TTL的解析器就会获得新地址。

来源