AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 720644
Accepted
Garreth McDaid
Garreth McDaid
Asked: 2015-09-08 07:02:16 +0800 CST2015-09-08 07:02:16 +0800 CST 2015-09-08 07:02:16 +0800 CST

有没有办法告诉根名称服务器 DNS 记录上的 TTL?

  • 772

我目前正在将 DNS 区域从一个 DNS 服务器提供商迁移到另一个。我正在尝试估计更改传播需要多长时间,并了解如果我选择在中途回滚可能会有什么延迟。

以前,我认为我可以这样做:

dig example.com ns

要查看 NS 记录上剩余的 TTL 是多少,但现在我知道这个 NS 记录是区域中子域的 NS 记录,而不是来自根服务器的 NS 记录,根服务器最终决定将发送查询的名称服务器。

我通过在每个提供者的区域中设置测试记录来测试这一点:

Provider1 test.example.com 10.0.0.1
Provider2 test.example.com 192.168.0.1

对于这两个提供商来说,NS 上的 TTL 记录为 0,而 TLD Registrar 级别的 NS 记录指向 Provider1 的名称服务器。

当我更改 Provider1 区域中的 NS 记录时,我几乎可以立即在 NS 查询中看到这一点(使用“dig example.com ns”)。

但是,当我发送查询 A 记录时,即

test.example.com

它总是返回

10.0.0.1

无论 Provider 1 区域中的 NS 记录设置为什么。

在此基础上,我得出结论,区域文件中的 NS 记录与迁移无关,只有 TLD 级别的名称服务器记录很重要。

但是,我无法了解那里的更改可能会传播多长时间,无论是向前还是向后。

是否可以查询 TTL 正在处理来自 TLD 根服务器的记录?

domain-name-system
  • 3 3 个回答
  • 6239 Views

3 个回答

  • Voted
  1. Best Answer
    Andrew B
    2015-09-08T09:09:38+08:002015-09-08T09:09:38+08:00

    在此基础上,我得出结论,区域文件中的 NS 记录与迁移无关,只有 TLD 级别的名称服务器记录很重要。

    这是一个不正确的假设,但很容易犯错误。您可以在此处阅读有关 apex NS 记录主题的更多信息。简短的版本是两者都很重要,并且正在使用的版本会有所不同,具体取决于缓存 DNS 服务器之前是否查询过您的域。

    请记住,大多数递归 DNS 服务器强制执行最小 TTL,因此从 TTL 为零的实验得出的任何结论几乎肯定是不准确的。唯一不是这样的情况是当您控制您正在查询的服务器使用的最小 TTL 策略时。

    我目前正在将 DNS 区域从一个 DNS 服务器提供商迁移到另一个。我正在尝试估计更改传播需要多长时间,并了解如果我选择在中途回滚可能会有什么延迟。

    我将专注于这个话题,因为你在剩下的问题中有一些错误的开始。首先,重要的是要记住 TTL 缓存在递归 DNS 服务器上。由于 Internet 上的每个人都使用不同的递归 DNS 服务器,因此您可以做出的唯一假设是最多需要n秒,其中n是 TTL 的值。

    这为我们带来了与此处相关的 TTL:

    • 缓存中单个记录的 TTL。即使NS记录过期,缓存中的单个记录的请求也不会自动过期。示例:如果test.example.com IN A从现在开始十分钟后example.com IN NS过期,但从现在开始五分钟后过期,即使在记录更改test.example.com后仍将保留在缓存中。NS在记录过期并被刷新之前,与新服务器上此记录的值相关的任何问题都不会变得明显。
    • NSTLD DNS 服务器提供的粘合记录的TTL 。这些由需要在首次请求时获取有关您的域的信息的递归服务器使用。这些 TTL 会影响区域文件中列出的 DNS 服务器用于下一次刷新之前的时间。(请参阅我上面链接的问答以对此进行澄清)
    • NS区域文件顶部列出的记录的 TTL 。一旦粘合记录 TTL 过期,这些 TTL可能会被使用。实现在这个细节上有所不同。由于您正在处理整个互联网的不同实现,唯一安全的假设是某些服务器正在使用它。

    您不能假设NSInternet 上的所有缓存记录 TTL 都来自一个来源或另一个来源。这迫使您围绕两者中的较高者进行计划,除非您真的不关心您不操作的递归 DNS 服务器。

    将所有这些放在一起,我们得出以下结论:

    • 任何给定 DNS 记录刷新新名称服务器所需的最长时间是该记录、粘合中的记录和区域中的记录之间的最高 TTL。NSNS
    • 假设新 DNS 服务器上的 TTL 与旧服务器相同,则回滚所需的最长时间再次是三个 TTL 中的最大值。在您最初更改 DNS 服务器和恢复更改之间登陆新服务器的任何查询都将依赖于从新服务器获得的值。
    • 保持参与更改的所有 DNS 服务器运行和同步非常重要,直到所有 TTL 在您的最终记录更改NS后过期。您不仅需要为尚未获得最新更改的客户端提供所有可用的服务器,而且两者之间记录数据的任何不一致都会使事情变得更加混乱。
    • 6
  2. joeqwerty
    2015-09-08T07:22:01+08:002015-09-08T07:22:01+08:00

    您可以使用 Windows 上的 nslookup 轻松完成此操作,我假设您可以使用 dig 执行此操作。使用 nslookup,您只需使用 debug 查询一个 GTLD 名称服务器以获取您的域的名称服务器记录,以获取您的域的名称服务器列表以及这些名称服务器记录的 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
    
    • 1
  3. Brandon Xavier
    2015-09-08T07:49:50+08:002015-09-08T07:49:50+08:00

    过去,您可以查询域的 SOA 记录以获取默认 TTL 值:

    dig example.com. SOA
    

    但这已被弃用,取而代之的是 $TTL 指令。

    如果您有感兴趣的特定记录,可以添加 +ttlid 标志来挖掘:

    dig +ttlid somehost.example.com.
    

    要获得剩余的确切 TTL:

    ;; ANSWER SECTION:
    somehost.example.com.      604800  IN      A       192.168.99.5
    

    (第二个字段是 TTL - 在本例中为 604800)

    • 0

相关问题

  • Solaris DNS

  • resolv.conf 在经过一段时间后被更改

  • 为什么有些网站的网址中没有“www”就无法显示?[关闭]

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve