当您的 TTL 在您的 DNS 记录中搞砸时会发生什么?

Dir*_*oer 13 domain-name-system ttl

当有人访问您的 DNS 控制并在您的域上设置 100 年的 TTL,同时将其 IP 指向某个不起眼的网站时会发生什么?

(当然你发现它太晚了)

And*_*w B 21

瑞安对你的问题的一种解释提供了一个很好的答案。然而,考虑到我们的目标受众,以及最有可能偶然发现这个问题的人的情况,我将回答一个不同的问题。

当糟糕的 TTL 暴露无遗时,公司会怎么做?

你有几个选择。但首先,您需要确定问题向量并将其消除。当您无法控制重复发生的问题时,试图控制损害是毫无意义的。

  1. 等待。如果它不是关键记录,您可能可以等待。正如瑞安所说,“最大损害”不是 68 年,但在实践中最有可能是 7 天。这是正缓存条目(BIND、JunOS 等)最长生命周期的最常见默认值。即使在这不准确的情况下,人们也希望服务器正在接收强制进程重新启动的例行安全更新。作为几个大型集群的运营商,我认为 MSO 不太可能故意将其设置为更大的值:它只会产生更多的外部查询(我们讨厌)。对于使用不太流行的软件的公司或讨厌自己的运营商,您可能必须继续下一步。
  2. 惹恼 DNS 缓存运营商。如果您需要尽快从缓存中清除记录,您唯一真正的选择是开始联系您能想到的最大的递归 DNS 提供商,并按照自己的方式工作。其中一些公司可能会忽略您:要么他们认为您的公司太小而无法让客户关心,要么他们制定了自己的缓存清除策略以尽量减少他们必须处理的支持电话的数量。在后一种情况下,他们可能会耸耸肩,让问题在预定的时间自行解决。毕竟,贵公司确实为自己制造了这个问题。
  3. 让 ISP 客户为您惹恼他们的 ISP。如果几天过去了并且大型 ISP 忽略了缓存的记录,请尝试让他们的客户之一投诉并生成该公司内部的票证。这对他们来说更难忽视,但从他们的角度来看,这不会为他们的运营团队赢得任何好处,因为你对自己做了这件事。如果这是重复发生,他们可能会开始取消这些门票只是为了冒犯你。
  4. 建议您的合作伙伴绕过 DNS 记录。如果它是您的合作伙伴使用的任务关键型 DNS 记录,并且上述选项都不可接受(即您每分钟都在流失收入),则您的公司别无选择,只能与其合作伙伴合作绕过该问题。如果他们不控制他们的本地缓存,这通常是通过将条目插入受影响系统的主机表来实现的,因为它避免了修改使用 DNS 记录的程序的需要。只有当收入损失与少数几家使用数据的公司相关时,这才可行。在所有其他情况下,您只能使用前三个选项。

  • 作为选项 2 的示例,Google 公共 DNS 具有 [此页面](http://google-public-dns.appspot.com/cache) 来清除其缓存。 (3认同)

Rya*_*ies 16

好吧,首先我正在查看的 Bind 配置手册指出 TTL 是一个有符号的 32 位整数,以秒表示,理论上最大值为 2^31。它说

有效 TTL 的范围是 0-2147483647 秒。

或大约 68 岁。因此,您可能无法将其设置为 100 年。

因此,假设您将其设置为 68 年。很明显会发生什么。尊重 DNS 记录上极长 TTL 的 DNS 解析器会尽可能长时间地缓存它们。一些 DNS 解析器根本不尊重 TTL,只是按照他们的意愿实施自己的缓存策略。

我们不能在最大值上放置一个硬数字的原因是,许多不同的供应商创建了许多不同的 DNS 实现,并且它们都使用略有不同的变量。例如,在 Juniper JunOS 上运行的 DNS 服务器在 TTL 上最多只能达到 604800 秒或 7 天。

  • 假设您已经纠正了该问题,那么下游 DNS 服务器不太可能在 68 年内不清除缓存(例如通过重新启动)。下游 DNS 解析器也可能实现他们自己的“MAXTTL”想法,对接收到的 TTL 设置更合理的上限,例如 3 天而不是 68 年。阅读 RFC 2308 作为我正在谈论的一个例子。 (11认同)
  • 特别是关于 BIND,它的默认限制为 7 天。[`max-cache-ttl`](http://ftp.isc.org/isc/bind9/cur/9.10/doc/arm/Bv9ARM.ch06.html#tuning):“设置服务器的最长时间将缓存普通(肯定)答案。默认为一周(7 天)。” (4认同)