如果您的TTL被DNS记录搞砸了怎么办?


13

当有人访问您的DNS控件并在您的域上将TTL设置为100年,同时将其IP指向某个晦涩的网站时,会发生什么情况?

(您当然发现得太晚了)


10
负责人被解雇了。
Xavier Lucas

5
简短说明:TTL最大值为2 ^ 31-1,仅比68年略高一点:)请参阅RFC 2181
斯文

Answers:


21

瑞安(Ryan)为您对问题的一种解释提供了很好的答案。但是,鉴于我们的目标受众以及最有可能迷惑于此问题的人们的处境,我将回答另一个问题。

如果TTL值太低,公司会采取什么措施?

您在这里有一些选择。但是,最重要的是,您需要确定问题向量并将其消除。当您无法控制重复发生的问题时,试图控制损害是没有意义的。

  1. 等待。如果不是关键记录,则可以等待。正如Ryan所涵盖的那样,“最大损害”不是68年,但实际上最有可能是7天。这是肯定高速缓存条目(BIND,JunOS等)的最大使用寿命的最常见默认值。即使在这种情况不准确的情况下,也希望服务器正在接收例行安全更新,从而迫使进程重新启动。作为几个大型集群的运营商,我认为MSO不可能故意将其设置为更大的值:它仅用于产生更多的外部查询(我们讨厌)。对于使用不太流行软件的公司或讨厌自己的运营商,您可能必须继续进行下一步。
  2. 烦恼DNS缓存运算符。如果您需要尽快从缓存中清除记录,唯一的选择就是开始与可以想到的递归DNS的最大提供商接触,然后逐步解决。其中一些公司可能会忽略您:他们以为您的公司太小而无法让客户关心,或者他们制定了自己的缓存清除策略以最大程度地减少必须处理的支持呼叫的数量。在后一种情况下,他们可能会耸耸肩,让问题在计划的时间自行解决。毕竟,您的公司确实为自己创造了这个问题。
  3. 让ISP客户为您烦恼他们的ISP。如果已经过了几天,并且大型ISP忽略了缓存的记录,请尝试让其客户之一投诉并生成该公司内部的票证。对于他们而言,这很难忽略,但它不会赢得您的运营团队的青睐,因为从他们的角度来看,这是您自己完成的。如果这是重复的情况,他们可能只是出于恶意而开始取消这些票。
  4. 建议您的合作伙伴绕过DNS记录。如果这是您的合作伙伴消耗的关键任务DNS记录,并且上述选项都不是可以接受的(即,您每天都在损失收入),则您的公司别无选择,只能与合作伙伴一起绕过该问题。如果他们不控制本地缓存,通常可以通过在受影响的系统的主机表中插入条目来完成此操作,因为这样就无需修改使用DNS记录的程序。当收入损失与使用数据的少数几个公司相关时,这才可行。在所有其他情况下,您都只能使用前三个选项。

3
作为选项2的示例,Google公共DNS拥有此页面来清除其缓存。
Bardi Harborow'2

16

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

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

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

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

之所以不能将单个硬数字设为最大,是因为许多不同的供应商创建了许多不同的DNS实现,并且它们都使用略有不同的变量。例如,在Juniper JunOS上运行的DNS服务器在TTL上最多只能运行604800秒(或7天)。


因此,这实际上意味着,当有人入侵X公司的DNS控制并将其投入68年并将IP转发给pornhub时,他实际上已经“永远”摧毁了域名?:X
Dirk Boer 2014年

11
假设您已解决问题,例如,下游DNS服务器在不清除其缓存(例如通过重新启动)的情况下,将无法运行68年。下游DNS解析器也可能会实现自己的“ MAXTTL”概念,从而对接收的TTL设置更合理的上限,例如3天而不是68年。阅读RFC 2308作为我正在谈论的示例。
Ryan Ries 2014年

4
关于BIND,它的默认限制为7天。max-cache-ttl:“设置服务器缓存普通(肯定)答案的最长时间。默认值为一星期(7天)。
哈坎·林奎斯特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.