我刚刚意识到我对 DNS 缓存的理解至少存在一些缺陷,我正在寻求纠正我的理解。
当注册域名时,我知道该域名的名称服务器已添加到根名称服务器中。我还知道我的区域文件包含 SOA 和带有 TTL 的 NS 记录。
假设我更新了 example.com 的名称服务器(并且不从应答中删除旧的名称服务器),多久旧的名称服务器会被遗忘 - 即 DNS 使用什么设置来缓存答案?[我可以设想那是 ns 记录 TTL,但我不确定这是否正确]。RFC 文档预期的行为是什么?
相关地,从递归服务器的角度来看,SOA 记录是否有用,或者它们纯粹用于处理区域传输?
答案1
当域名注册时,我理解该域名的域名服务器被添加到根域名服务器中
这是一个常见的误解。根域名服务器只知道“顶级域名”(TLD) 域名服务器。你的 NS
记录被添加到注册表您的 TLD 的记录。注册中心随后会将这些NS
记录发布到您的 TLD 的“TLD 名称服务器”。
如果您有权访问命令行dig
实用程序,则可以通过运行来观察完整的委派路径dig +trace example.com NS
。.
代表根名称服务器,com.
是“dot com”TLD 的注册表管理区域。
这是否意味着 NS 记录上的 ttls 控制缓存?
NS
是的。您需要注意两组记录。第一组位于您的权威区域中。另一组位于 TLD 名称服务器提供的委派中。(请参阅dig +trace example.com
上一个示例的输出)
更改名称服务器 IP 时,数据需要继续存储在旧服务器上,直到更大这两个 TTL 集均已过期。TLD 名称服务器的 TTL 通常以天为单位。
如果这让您感到困惑,请这样想:您无法控制互联网上的服务器最近看到的是这两个 TTL 中的哪一个。您也无法控制 DNS 服务器是否选择优先选择一组记录NS
而不是另一组记录。您唯一能做的就是确保您已经等待了两个间隔中较长的一个。
相关地,从递归服务器的角度来看,SOA 记录是否有用,或者它们纯粹用于处理区域传输?
记录中定义的数字间隔SOA
主要用于主服务器和辅助服务器之间的通信。最后一个字段 SOA.MINIMUM 是特殊的,递归 DNS 服务器在计算允许缓存 DNS 记录不存在的时间时使用它。(公式为min(SOA TTL,SOA.MINIMUM)
,请参阅RFC 2308)