我是否需要等待传播以在AWS Route53中添加CNAME记录

时间:2018-04-25 00:25:32

标签: amazon-web-services dns amazon-route53 cname

通过Amazon AWS Route 53的api,我将新的CNAME记录添加到现有区域。我想测试一下是否正确添加了记录。

我需要等待传播吗?或者,因为它的新记录会被立即抓住吗?

我看到一篇文章提到等待它传播,但它是为了创建一个全新的区域;我将其添加到现有的中并不需要这样做。

用例是我可以动态添加这些(CNAME记录)并需要检查以确保它们被正确添加。

2 个答案:

答案 0 :(得分:2)

我认为你混合了两件事:基于提供商网络界面的更新与一方面所有Route53权威名称服务器的更改之间的延迟,以及权威名称服务器更改后所有递归的延迟之后的另一方面世界上的名字服务器要注意。第一种情况仅取决于亚马逊基础设施。但您可以查询其权威名称服务器并查看资源是否已发布。第二种情况不是传播,而是依赖于TTL和负TTL。

所以我将更多地关注第二种情况。

方法很简单:

  1. 首先查询资源的权威名称服务器,仔细检查它们是否正确回复。您甚至可以使用在线问题排查工具:https://zonemaster.net/https://graphviz.net/
  2. 之后,是时候检查全世界的递归名称服务器了。
  3. 首先,一些术语。每个人都使用这个词,但"传播"在DNS的背景下是错误的。因为当您在权威名称服务器上更改某些内容时,他们不会将其更改自上而下推送到世界上所有其他递归名称服务器,因为这是不可能的。 相反,递归的名称服务器会在某些时候出现#34; (它取决于区域内容,缓存状态和本地策略),在重定向到它们的查询之后(除了罕见的前期自动缓存续订情况)再次联系权威名称服务器之一并提取最新数据。

    所以,你可以开始查询一些"众所周知的"打开递归名称服务器,看看他们为您的资源学到了什么:1.1.1.18.8.8.89.9.9.9,除了您自己的本地服务器(在您自己的服务器上运行或使用您的ISP服务器),以及使用多个缓存可能会有用,因为它们的缓存将处于不同的状态,这将影响结果,如上所述。

    以下是有关查询资源的特定递归名称服务器时会发生什么的一些详细信息:

    • 如果您的域/资源的缓存完全为空(例如它刚刚重新启动),它将立即向权威名称服务器查询该信息,因此您的更改将立即显示给它及其所有客户端
    • 此资源将由名称服务器根据权威机构提供的TTL进行缓存。 "通常"这是记录在递归缓存中保留的最大时间,在此期间它不会再次查询权威名称服务器以检查某些内容是否已更改。两个要点:一,共识是标准要求它成为最大值,因此缓存可以在它之前自由清除(例如,空间受限的缓存可能希望驱逐最旧的条目以产生一些空间);二,众所周知,一些名称服务器和/或名称服务器部署将改变TTL值,对于任何本地策略,因此他们可以扩展它,例如,如果他们认为它太低(它被认为是一种方式来对抗标准,但存在这种情况,以及人们将TTL设置为低至1或5秒,这同样愚蠢)
    • 现在,另一个经常让人感到困惑的重要案例,特别是那些测试。如果在zonefile中添加新资源但在更改之前查询其存在,则权威名称服务器将使用NXDOMAIN进行回复("此资​​源不存在")并且此信息也将由递归名称服务器缓存,在一段时间内称为“负TTL" (它仍然是一个正数作为延迟,但称为负数,因为它适用于负面答复,如"此资​​源不存在)。所以在某种程度上你会污染"缓存,因为如果您在权威的名称服务器中进行更改,并在再次查询递归后,它仍将回复"没有这样的资源"因为它在缓存中有这些信息。

    因此,关键是始终要明确区分权威与递归名称服务器的测试,并充分了解附加到递归缓存的属性。

答案 1 :(得分:0)

Route53是一个分布式DNS管理系统。在托管区域中创建新的CNAME或任何记录集时,需要将其传播到在AWS边缘位置运行的分布式服务器。这可能需要几秒到几分钟。

注意:创建记录集的推广与更新不同。这是因为即使在更新之后,旧记录集也可以达到外部缓存中定义的TTL值。