JungleLabs Insights

什么是DNS传播?为什么DNS更改需要时间

文章

你更新了域名的 DNS 记录,保存更改后,期望新的网站或邮件服务立即生效。但同事仍看到旧网站,在线检查工具显示不同的地址,或者电子邮件传递行为不一致。这种延迟通常被称为 DNS传播.

该表述可能让人误以为单个更新正在通过一个中央互联网系统进行传输。然而,DNS 是分布式的。域名信息存储在权威名称服务器、递归解析器、路由器、操作系统和应用程序中,并被缓存在这些系统中。每个系统可能会在不同的时间刷新其信息。

大多数 DNS 更改在缓存过期且解析器获取新记录时才会生效。这一过程所需的时间取决于记录的先前生存时间(TTL)、解析器的行为以及权威 DNS 配置是否正确。不存在一个能确保所有用户都看到新答案的通用时间。

本指南解释了人们所说的 DNS 传播的含义、为什么 DNS 更改会在不同时间生效、如何检查域名的当前解析结果,以及在更新似乎仍未完成时应采取的措施。

什么是DNS传播?

DNS 传播是常见的术语,用于描述在 DNS 记录更改后,不同用户或 DNS 解析器可能收到不同答案的这段时间。一个网络中的用户可能已经看到新的 IP 地址,而另一个用户的解析器则继续返回缓存的旧地址。

对域名的底层 DNS 更改是在该域名的权威名称服务器上进行的。递归解析器随后会为用户检索并缓存这些记录。这些解析器并不一定在每次有人访问该域名时都再次向权威服务器查询。只要缓存的答案仍然有效,它们就可以重复使用已缓存的结果。

这就是为什么“传播”更应被理解为 缓存过期和刷新不存在必须在所有联网设备上同时更新的中央副本。即使某些解析器仍在提供较旧的缓存数据,权威记录可能已经正确无误。

DNS 缓存的工作原理

当浏览器需要查找域名的IP地址时,它会请求操作系统进行名称解析。操作系统可能已有缓存的答案。如果没有,它会向一个配置的递归解析器发起查询,例如由互联网服务提供商、企业或公共DNS服务运营的解析器。

递归解析器也可能拥有缓存的答案。如果该答案仍在缓存有效期内,它可以直接返回而无需联系权威名称服务器。当缓存记录过期时,解析器可以查询权威DNS系统并存储更新后的答案。

缓存可以减少查找时间并降低对 DNS 基础设施的负载。这也意味着记录更改不一定在同一时刻对所有解析器可见。旧答案在解析器的缓存过期或解析器以其他方式刷新之前,仍然可以被使用。

不同的用户可能使用不同的递归解析器。即使在同一家庭中,如果他们的设备使用不同的 DNS 服务、VPN、移动网络或本地缓存,他们看到的回答也可能不同。

DNS中的TTL是什么?

TTL 代表 存活时间它是一个值,通常以秒为单位测量,用于告知递归解析器在检查更新答案之前可以缓存DNS记录的时间长度。

例如,TTL 为 3600 表示一小时。如果解析器检索到具有该TTL的记录,它通常可以在需要刷新之前继续使用答案长达一小时。TTL为 300 意思是五分钟。

更改后真正重要的TTL通常是解析器已经缓存的旧记录的TTL。在更改记录之前立即降低TTL可能不会缩短那些已缓存先前较高TTL的解析器的等待时间。这些解析器可能会继续使用旧的响应,直到原始缓存期结束。

对于计划中的迁移,管理员通常会提前降低 TTL 值,等待足够长的时间让之前的 TTL 过期,然后进行 DNS 更改。在更改稳定后,他们可能会再次增加 TTL 值以减少重复查询。合适的值取决于服务和运营商的变更流程。

为什么DNS更改需要不同的时间?

最常见的原因是解析器拥有不同的缓存副本。某些解析器可能已经刷新了记录,而其他解析器仍在使用未过期的答案。解析器还可能应用其自身的刷新行为或缓存否定答案,即表示某条记录不存在的响应。

本地缓存可以增加另一层。计算机、路由器、浏览器或安全应用程序可能会暂时保留 DNS 信息。在某些情况下,重启浏览器或清除操作系统的 DNS 缓存可能会有所帮助,但这不会改变递归解析器仍然缓存的内容。

DNS 提供商的更改可能会引入额外的时间因素。如果您在注册商处更改域名的权威名称服务器,解析器可能还需要刷新委派信息以及这些名称服务器提供的记录。这与在同一 DNS 托管服务内编辑 A 或 AAAA 记录的更改不同。

最后,更新在权威源上可能不正确。如果编辑了错误的记录、更改未保存、域名使用了不同的权威名称服务器,或者记录包含语法错误,等待无法解决底层的配置问题。

DNS传播与权威DNS更新

权威DNS服务器提供域名或区域的官方记录。当您在DNS提供商的控制面板中编辑记录时,提供商应更新其提供的权威数据。

递归解析器向客户端设备提供DNS答案。它可能缓存了更改之前的数据。因此,权威服务器可以返回新地址,而递归解析器继续返回旧地址。

在故障排除时,这种区分很有用。首先检查权威名称服务器返回的内容。如果它们已经返回了预期的记录,则说明更改已在源端发布,剩余差异可能是由于缓存或解析器行为所致。如果权威名称服务器仍然返回旧值或无值,则应调查 DNS 提供商的配置以及记录本身。

更改名称服务器会增加另一个层次。父 DNS 区域必须指向预期的权威名称服务器,并且这些服务器必须提供正确的区域数据。如果域名被委派给其他提供商的名称服务器,那么 DNS 提供商上的正确记录将毫无用处。

常见的DNS更改及其影响

改变一个 一条记录 changes the IPv4 address returned for a hostname. Changing an AAAA 记录 更改其IPv6地址。如果两者都存在,客户端可以根据其网络和连接行为选择使用任一地址族。

改变一个 CNAME记录 更改别名所指向的主机名。解析器可能随后需要查找目标名称及其地址。即使 CNAME 本身保持不变,对目标记录的任何更改都可能影响最终结果。

改变一个 MX记录 影响接收该域电子邮件的邮件服务器。邮件系统可能会缓存这些记录,因此电子邮件路由可能需要一段时间才能反映更新。在更改邮件提供商时,管理员应单独验证 MX 记录以及任何相关的邮件身份验证记录,例如 SPF、DKIM 或 DMARC。

改变 名称服务器 更改对域名具有权威性的 DNS 提供商。这需要在注册商处进行正确的委派,并在新提供商处正确配置区域。由于新提供商处缺少记录可能导致网站、电子邮件或其他服务不可用,因此应仔细规划名称服务器迁移。

如何检查DNS更改是否已生效

首先从您正在使用的计算机查询域名。在 Windows、macOS 和 Linux 上, nslookup 通常可用:

nslookup example.com

要检查 IPv4 地址记录,请使用:

nslookup -type=A example.com

对于IPv6:

nslookup -type=AAAA example.com

对于邮件服务器记录:

nslookup -type=MX example.com

在 macOS 和 Linux 上, dig 提供更详细的输出:

dig example.com A

仅显示答案部分:

dig example.com A +noall +answer

您可以查询特定的递归解析器以比较答案。例如:

dig @1.1.1.1 example.com A

在 Windows 上,您可以通过以下方式指定 DNS 服务器:

nslookup example.com 1.1.1.1

替换 example.com 使用您的域名。这些示例中的解析器地址仅是其中一个可能的公共解析器;您也可以查询您所在组织或提供商使用的DNS服务。

记录你查询的解析器、响应以及时间。比较多个解析器的结果有助于确定差异是仅限于某个解析器,还是更广泛地出现。

如何查询权威名称服务器

要查找域名的权威名称服务器,请使用:

dig example.com NS

然后直接查询其中一个名称服务器,获取你更改的记录:

dig @ns1.example-dns.com example.com A

替换 ns1.example-dns.com 对于您的域名列出了权威服务器。如果直接查询返回预期的地址,但递归解析器返回的是旧地址,则权威数据已更新,而解析器可能仍在使用缓存的答案。

你也可以问 dig 追踪委派流程:

dig +trace example.com

这遵循从根目录到域权威服务器的DNS层次结构。它有助于识别委派问题,尽管其输出比大多数基本检查所需的更详细。

如果您使用的是 DNS 提供商的控制面板,请确认该域名确实已委派给控制面板中显示的名称服务器。一个记录在一个提供商的仪表板中可能是正确的,但公共域名可能指向另一个提供商。

如果某些用户看到旧网站怎么办?

首先,确认权威的 A 或 AAAA 记录具有预期的值。然后查询多个递归解析器,并检查它们是否返回相同的答案。如果权威数据正确但某些解析器返回了较旧的地址,则缓存可能是原因。

接下来,检查用户的本地配置。VPN、公司DNS解析器、安全产品、浏览器缓存或本地hosts文件都可能影响返回的地址。通过与其他网络(如移动连接)的结果进行比较,查看行为是否发生变化。

还要考虑旧服务器和新服务器是否都响应。如果旧主机仍然提供缓存副本或以不同方式重定向,迁移可能会显得不一致。DNS 记录可能是正确的,但对于解析器尚未刷新的用户来说,旧服务器可能仍然可访问。

如果问题仅影响 IPv4 或仅影响 IPv6,请分别比较 A 记录和 AAAA 记录。一台设备可能通过 IPv6 连接,而另一台设备使用 IPv4。一个地址族可能指向新服务器,而另一个仍指向旧服务器。

如果 DNS 更改后网站不可用怎么办?

检查域名的权威名称服务器是否正确且可访问。然后验证这些服务器上是否存在相关记录。如果您最近更改了名称服务器,请确保新的 DNS 提供商已包含所有必需记录,包括网站、电子邮件、验证和服务记录。

确认目标服务器已准备好接受该域名的连接。更新 DNS 仅更改客户端的指向位置,它不会配置 Web 服务器、安装证书、打开防火墙端口或复制网站文件。

如果 DNS 返回了预期的 IP 地址,但网站仍然无法访问,请分别测试服务器和应用程序。问题可能出在 Web 服务器、防火墙、TLS 证书、托管配置或应用程序上。DNS 查找仅确认名称解析;它并不确认服务是否健康。

如需检查您的设备与目的地之间的常规路径,请参阅我们的指南 使用 traceroute 诊断网络连接问题. Traceroute 和 DNS 查找测试连接的不同部分,因此它们在缩小问题范围时一起使用非常有用。

负缓存与“记录未找到”结果

解析器可以缓存记录不存在的事实。这被称为负缓存。如果解析器在记录创建之前查询了名称,即使在记录已添加后,它也可能暂时继续返回“未找到”的响应。

负缓存也有一个基于区域 SOA 记录和解析器规则的 TTL。具体行为可能会有所不同。如果新创建的子域名没有立即解析,请首先检查权威名称服务器。如果它返回了新记录,请等待负缓存过期并比较其他解析器。

“未找到记录”的响应也可能表示该记录被添加到了错误的区域、主机名输入有误,或者该域名使用了不同的权威名称服务器。在假设问题仅由传播延迟引起之前,请确认完整的主机名、记录类型和 DNS 提供商。

如何规划DNS迁移

在更改生产服务的记录之前,列出该服务所依赖的所有主机名和记录。网站可能使用 A 记录和 AAAA 记录,而电子邮件则依赖于 MX、SPF、DKIM 和 DMARC 记录。应用程序还可能依赖验证或服务发现记录。

如果变更是计划内的,请提前降低相关 TTL 值,并在切换目标前等待至少一个原 TTL 时长。在更新 DNS 之前,准备好新服务器或提供商。尽可能直接进行测试,并确保证书、防火墙规则、应用程序设置和邮件服务均已就绪。

更改后,请检查权威答案以及多个递归解析器。监控网站可用性、电子邮件投递和应用错误。在过渡期间尽可能保持旧服务可用,因为部分用户可能仍会访问该服务,直到缓存的答案过期。

一旦新配置稳定,恢复合适的TTL值。对于很少发生变化的服务,长期保持极低的TTL会增加DNS查询量,但带来的好处有限。

常见的DNS传播误解

一个常见的误解是,每次 DNS 更改都需要恰好 24 或 48 小时。实际上并不存在固定的统一时长。实际延迟取决于之前的 TTL 值、解析器缓存、委派更改以及权威配置的正确性。

另一个误解是,清除浏览器缓存会更新所有地方的 DNS。它可能清除该设备上存储的信息,但无法清除远程递归解析器的缓存。同样,重启路由器可能会清除其本地缓存,但不会更改权威记录。

第三种误解是,DNS 检查器显示不同的答案就证明域名已损坏。在计划迁移期间,尤其是当解析器在不同时间缓存了数据时,可能会出现不同的答案。重要的问题是权威记录是否正确,以及剩余差异是否与之前的 TTL 一致。

最后,DNS 传播不会配置目标服务。即使 IP 地址正确,如果服务器、防火墙、TLS 证书或应用程序未就绪,网站仍可能无法访问。

关于DNS传播的常见问题

DNS 传播需要多长时间?

没有单一的保证持续时间。某些更改会迅速显现,而其他更改则可能不一致,直到缓存记录过期。之前的TTL、解析器行为以及名称服务器是否更改都会影响时间。

降低TTL是否会使更改立即生效?

不。降低TTL会影响解析器获取新TTL之后的未来缓存行为。已经缓存了旧记录的解析器可能会继续使用它,直到其之前的TTL过期。

为什么DNS检查器会显示不同的结果?

它们可能会从不同位置查询不同的递归解析器。这些解析器可能具有不同的缓存答案、在不同时间刷新,或因地理DNS策略而接收不同的答案。

我应该清除计算机的DNS缓存吗?

当您的设备缓存了旧答案时,它会有所帮助。它不会清除由您的互联网服务提供商、公司解析器或公共DNS服务持有的缓存。

为什么我的网站可以解析但无法加载?

DNS 可能返回了正确的地址,但目标服务器或应用程序存在问题。请分别检查 Web 服务器、防火墙、TLS 证书和托管配置。

名称服务器更改是否可能比记录更改花费更长时间?

它们可能涉及注册商和父DNS区域中的额外委派信息。新提供商还必须提供完整且正确的区域。验证新权威服务器上的委派和记录。

DNS 更改可能在不同时间生效,因为权威名称服务器和递归解析器具有不同的角色,且解析器会根据 TTL(生存时间)值缓存答案。一个用户可能会看到旧的地址,而另一个用户已经接收到新的地址。

为进行调查,首先检查权威名称服务器,然后比较多个递归解析器的响应。确认记录类型、主机名、TTL 和名称服务器委派。如果 DNS 返回预期的地址但服务仍不可用,请分别检查目标服务器和应用程序以排查问题。

理解缓存机制有助于更轻松地规划和排查 DNS 更改。如需更多网络基础知识,请继续阅读我们的指南 IP地址, 默认网关,和 traceroute.