我目前正在将DNS区域从一个DNS服务器提供程序迁移到另一个。 我试图估计需要多长时间才能传播变化,并且要了解如果我select在中游回滚,延迟可能会是多less。
以前,我想我可以这样做:
dig example.com ns
要查看NSlogging中剩余的TTL是什么,但是现在我明白这个NSlogging是该区域中的子域名的NSlogging,而不是从根服务器发出的NSlogging,这是最终决定查询将被发送到哪个名称服务器。
我通过在每个提供者的区域中设置一个testinglogging来testing它:
Provider1 test.example.com 10.0.0.1 Provider2 test.example.com 192.168.0.1
对于这两个提供商,NS上的TTLlogging为0,而TLD注册商级别上的NSlogging指向Provider1的名称服务器。
当我更改Provider1区域中的NSlogging时,我几乎可以立即看到这反映在NS查询中(使用'dig example.com ns')。
但是,当我发送查询Alogging,即
test.example.com
它总是返回
10.0.0.1
无论提供者1的区域中的NSlogging设置为什么。
在此基础上,我得出结论:区域文件中的NSlogging与迁移无关,只有名称服务器logging在TLD级别才是重要的。
然而,我无法得知这个变化可能会传播多久,无论是前进还是后退。
是否有可能查询哪些TTL正在处理从TLD根服务器发出的logging?
在此基础上,我得出结论:区域文件中的NSlogging与迁移无关,只有名称服务器logging在TLD级别才是重要的。
这是一个不正确的假设,但很容易犯的错误。 你可以在这里阅读apex NSlogging的主题。 简短的版本是这两个问题,并且正在使用的将取决于高速cachingDNS服务器是否先前查询您的域或不。
请记住,大多数recursionDNS服务器强制执行最小TTL,所以从TTL为零的实验得出的任何结论几乎肯定是不准确的。 唯一的情况是,当你控制你正在查询的服务器使用的最小TTL策略时。
我目前正在将DNS区域从一个DNS服务器提供程序迁移到另一个。 我试图估计需要多长时间才能传播变化,并且要了解如果我select在中游回滚会有什么延迟。
我将关注这个话题,因为在你的问题的其余部分你有一些错误的开始。 首先,记住TTL在recursionDNS服务器上被caching是很重要的。 由于互联网上的每个人都使用不同的recursionDNS服务器,因此唯一可以假设的是,这将花费n秒钟,其中n是TTL的值。
这给我们带来了TTL在这里是相关的:
NSlogging过期,caching中单个logging的请求也不会自动过期。 示例:如果test.example.com IN A从现在开始十分钟后过期,但是example.com IN NS从现在开始五分钟后过期,则即使在NSlogging发生更改后, test.example.com也将保留在caching中。 在logging到期并刷新之前,与新logging在新服务器上的价值相关的任何问题都不会变得明显。 NS粘合logging的TTL。 这些被recursion服务器使用,当第一次请求时需要获取有关您的域的信息。 这些TTL影响您的区域文件中列出的DNS服务器用于下一次刷新之前的时间。 (请参考上面链接的问答环节来澄清这一点) NSlogging的TTL。 一旦粘合loggingTTL过期, 可能会使用这些TTL。 这些细节的实现有所不同。 既然你正在处理整个互联网的价值不同的实现,唯一的安全的假设是有些服务器正在使用它。 你不能认为互联网上的所有cachingNSloggingTTL来自一个来源或其他。 这迫使你计划围绕两者中的较高者,除非你真的不关心你不操作的recursionDNS服务器。
综合所有这些,我们得出以下结论:
NSlogging和区域中的NSlogging之间的最高TTL值 。 NSlogging更改后过期为止,这一点非常重要 。 你不仅需要所有可用的服务器没有采取最新的变化,但两者之间的logging数据的任何不一致可以使事情变得更加混乱。 你可以用Windows上的nslookup轻松地做到这一点,我假设你可以用dig做同样的事情。 使用nslookup,只需使用debug在域名服务器logging中查询其中一个GTLD名称服务器,即可获得域名服务器列表,并使用这些名称服务器logging的TTL值。
Microsoft Windows [Version 10.0.10240] (c) 2015 Microsoft Corporation. All rights reserved. C:\Users\Joe>nslookup Default Server: Unknown Address: 192.168.1.2 > server f.gtld-servers.net Default Server: f.gtld-servers.net Address: 192.35.51.30 > set q=ns > set debug > crabbygeezer.com Server: f.gtld-servers.net Address: 192.35.51.30 ------------ Got answer: HEADER: opcode = QUERY, id = 4, rcode = NOERROR header flags: response, want recursion questions = 1, answers = 0, authority records = 5, additional = 10 QUESTIONS: crabbygeezer.com, type = NS, class = IN AUTHORITY RECORDS: -> crabbygeezer.com nameserver = freedns1.registrar-servers.com ttl = 172800 (2 days) -> crabbygeezer.com nameserver = freedns2.registrar-servers.com ttl = 172800 (2 days) -> crabbygeezer.com nameserver = freedns3.registrar-servers.com ttl = 172800 (2 days) -> crabbygeezer.com nameserver = freedns4.registrar-servers.com ttl = 172800 (2 days) -> crabbygeezer.com nameserver = freedns5.registrar-servers.com ttl = 172800 (2 days) ADDITIONAL RECORDS: -> freedns1.registrar-servers.com internet address = 208.64.122.242 ttl = 172800 (2 days) -> freedns1.registrar-servers.com internet address = 72.20.53.50 ttl = 172800 (2 days) -> freedns2.registrar-servers.com internet address = 208.64.122.244 ttl = 172800 (2 days) -> freedns2.registrar-servers.com internet address = 72.20.38.137 ttl = 172800 (2 days) -> freedns3.registrar-servers.com internet address = 5.135.128.216 ttl = 172800 (2 days) -> freedns3.registrar-servers.com internet address = 62.210.149.103 ttl = 172800 (2 days) -> freedns4.registrar-servers.com internet address = 62.210.149.102 ttl = 172800 (2 days) -> freedns4.registrar-servers.com internet address = 72.20.53.50 ttl = 172800 (2 days) -> freedns5.registrar-servers.com internet address = 192.99.40.34 ttl = 172800 (2 days) -> freedns5.registrar-servers.com internet address = 72.20.53.50 ttl = 172800 (2 days) ------------ crabbygeezer.com nameserver = freedns1.registrar-servers.com ttl = 172800 (2 days) crabbygeezer.com nameserver = freedns2.registrar-servers.com ttl = 172800 (2 days) crabbygeezer.com nameserver = freedns3.registrar-servers.com ttl = 172800 (2 days) crabbygeezer.com nameserver = freedns4.registrar-servers.com ttl = 172800 (2 days) crabbygeezer.com nameserver = freedns5.registrar-servers.com ttl = 172800 (2 days) freedns1.registrar-servers.com internet address = 208.64.122.242 ttl = 172800 (2 days) freedns1.registrar-servers.com internet address = 72.20.53.50 ttl = 172800 (2 days) freedns2.registrar-servers.com internet address = 208.64.122.244 ttl = 172800 (2 days) freedns2.registrar-servers.com internet address = 72.20.38.137 ttl = 172800 (2 days) freedns3.registrar-servers.com internet address = 5.135.128.216 ttl = 172800 (2 days) freedns3.registrar-servers.com internet address = 62.210.149.103 ttl = 172800 (2 days) freedns4.registrar-servers.com internet address = 62.210.149.102 ttl = 172800 (2 days) freedns4.registrar-servers.com internet address = 72.20.53.50 ttl = 172800 (2 days) freedns5.registrar-servers.com internet address = 192.99.40.34 ttl = 172800 (2 days) freedns5.registrar-servers.com internet address = 72.20.53.50 ttl = 172800 (2 days) >
使用dig执行类似查询的语法是:
$ dig NS crabbygeezer.com @f.gtld-servers.net +trace
过去,您可以查询域的SOAlogging以获取默认的TTL值:
dig example.com. SOA
但是这已经被弃用,以支持$ TTL指令。
如果你有特定的logging你感兴趣,你可以添加+ ttlid标志挖:
dig +ttlid somehost.example.com.
要得到确切的TTL剩余:
;; ANSWER SECTION: somehost.example.com. 604800 IN A 192.168.99.5
(第二个字段是TTL – 在这种情况下是604800)