DNS 传播检查器
向四个公共解析器询问一个域名指向哪里——Google、Cloudflare、Quad9 和 OpenDNS——并查看它们是否一致。一个问题,四个答案,由 sysosx 的服务器发出:这是判断一次 DNS 变更是否真的已经扩散开来的最快的诚实方法。
想自动持续监控?用 myeventwatch 免费监控——到期和宕机提醒,无需绑卡。
传播到底是什么
并不存在“传播”这一事件。当你更改一条 DNS 记录时,没有任何东西会传播到任何地方:权威名称服务器只是开始给出不同的答案,而全世界的每个解析器都会继续提供它上次取到的内容,直到那个答案的 TTL 过期。一个在你编辑前五分钟询问过的解析器,会在它剩余的 TTL 内一直提供旧值;一个在你编辑后第一次询问的解析器,会立即得到新值。“传播”不过是成千上万个独立缓存缓慢趋于一致的过程,每个缓存都有自己的时钟——这就是为什么它没有完成时间,只有一个受 TTL 限定的窗口期,也是为什么诚实的问题从来不是“它传播了吗?”,而是“重要的解析器达成一致了吗?”。
本页为互联网上大多数人实际使用的四个解析器回答这个问题。Google、Cloudflare、Quad9 和 OpenDNS 都会被并行地、从 sysosx 的服务器询问该域名的 A 和 AAAA 记录,表格会显示每个解析器的回答,并给出所见的最低 TTL。当四者全部一致时,这次变更就已经扩散到了实际需要的程度。当它们不一致时,TTL 一栏会告诉你这种不一致会持续多久:等它过期,然后再检查。把一条记录的 TTL 在计划迁移前一两天降到几分钟,是最有效的单一传播技巧——它在变更之前就缩短了每个缓存的记忆,而不是在变更之后与之搏斗。
如何阅读表格
每一行是一个解析器。A 一栏是它返回的 IPv4 地址,AAAA 是该域名拥有的 IPv6 地址(如果有的话),TTL 是各个答案中最低的生存时间——也就是该解析器在再次询问之前会继续相信其答案的秒数。标有 “timeout” 的解析器没有及时回答;这是关于解析器的陈述,而不是关于你的记录,其他各行仍然成立。“does not exist” 的结果意味着每个作答的解析器都认同该名称根本没有注册——在做任何其他事之前先检查拼写。而当横幅说解析器不一致时,请克制住“修复”任何东西的冲动:每分钟重新检查一次并不会让任何人的缓存变快,再次编辑记录只会重启你正在等待的每一个 TTL。
相关工具:当单个记录需要检查时,用DNS 查询查看一个解析器的完整记录集;当地址正确但重定向路径错误时,用HTTP 状态链;想看全貌——可达性、证书、到期和记录一起看——用网站健康检查。
延伸阅读:为什么一个网站从不同地方看不一样——重定向链、DNS 传播和中间缓存,以及如何判断是哪一个在困扰你。
常见问题
这是全球范围的传播检查吗?
不是——而且没有任何工具能诚实地声称是。本页从 sysosx 的服务器向四个大型公共解析器(Google、Cloudflare、Quad9 和 OpenDNS)提出同一个问题,并显示它们是否一致。四个解析器一致,是变更已经扩散的有力证据;四个解析器不一致,则是等 TTL 过期的信号。没有人能查询地球上的每一个解析器,任何声称能做到这一点的工具,卖的是一张地图,而不是一次测量。
为什么我更改记录后解析器会不一致?
因为没有任何东西会把变更推送到任何地方。每个解析器都会缓存它上次取到的内容,缓存时间恰好是记录的 TTL 所规定的时长,并按自己的节奏刷新。一个在你编辑前五分钟取到旧值的解析器,会一直提供它直到该 TTL 过期。编辑后立即出现不一致是正常状态,而不是错误——TTL 一栏会告诉你它会持续多久。
某个解析器“没有回答”是什么意思?
取决于类型。NXDOMAIN 意味着该解析器权威地认定该名称不存在——通常是拼写错误,或者是记录被删除而不是被更改。没有错误但答案为空,意味着该名称存在,但没有 A 或 AAAA 记录(例如一个仅用于邮件的域名)。超时意味着该解析器没有及时回答;这与记录本身无关,其他三个解析器的答案仍然成立。
这与 DNS 查询有什么不同?
DNS 查询显示一个解析器的完整记录集——每种类型,连同 TTL——这是你在调试单个记录时想要的。本页显示一个问题(这个名称指向哪里?)在四个解析器上的答案,这是你在询问一次变更是否已经扩散时想要的。用查询工具检查一条记录,用本页判断传播情况。
为什么有速率限制,为什么缓存只有十分钟?
每次检查都会发出八次实时查询(在四个解析器上查 A 和 AAAA)。为了保持礼貌,每个访客的新检查次数受到限制(大约每小时二十次,并有短时突发额度),结果缓存十分钟而不是一小时——因为一个答案已经有一小时历史的传播检查违背了它自己的目的。缓存的结果会被如此标明。