【问题标题】:How does Route 53 connect multiple public hosted zones to one domain name?Route 53 如何将多个公共托管区域连接到一个域名?
【发布时间】:2017-10-08 11:07:23
【问题描述】:

我在Amazon Route 53 中有两个public hosted zones 用于同一个域名(Route 53 作为注册商),因为 Route 53 在我注册域名时自动创建了一个,而第二个是由Terraform.

据我所知,第二个区域中的 DNS 记录集没有被应用,即它们不会被返回用于对域的查询。是否必须删除第一个区域才能激活第二个区域中的记录集?

【问题讨论】:

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


    【解决方案1】:

    以下是 AWS Route 53 常见问题解答的摘录

    问。我可以为同一个域名创建多个托管区域吗?

    是的。创建多个托管区域允许您在“测试”环境中验证您的 DNS 设置,然后在“生产”托管区域中复制这些设置。例如,托管区域 Z1234 可能是 example.com 的测试版本,托管在名称服务器 ns-1、ns-2、ns-3 和 ns-4 上。同样,托管区域 Z5678 可能是您在 ns-5、ns-6、ns-7 和 ns-8 上托管的 example.com 的生产版本。由于每个托管区域都有一组与该区域关联的虚拟名称服务器,Route 53 将根据您将 DNS 查询发送到哪个名称服务器而以不同的方式回答 example.com 的 DNS 查询。

    Click here for more details

    【讨论】:

    • 这并不能回答我所知道的不同区域中的 DNS 记录集是如何暴露的。也许我遗漏了一些东西,但我仍然不明白只要区域 1 存在,区域 2 是否会处于活动状态。
    • 两个区域都是活动的,都是暴露的,只是通过不同的名称服务器。根据您查询的名称服务器,您将得到不同的答案。
    • @DusanBajic 我认为你错过了我所说的暴露的意思。只有第一个区域通过域名公开。
    【解决方案2】:

    据我所知,哪个托管区域处于活动状态,这意味着返回其记录集以对域进行查询,这取决于在域中注册的名称服务器。因此,为了使我的第二个区域处于活动状态,我必须更新 Route 53 中的域名服务器,以与所需托管区域的名称服务器相对应。

    【讨论】:

    • 您以含糊的方式使用“活动”一词。 Internet 只知道如何查询您的权威名称服务器,因此任何其他托管区域都不会在 Internet 看到它的意义上“活跃”,这是真的。但从 Route 53 的角度来看,第二个托管区域并不是真正处于非活动状态——记录是可用的,但没有人要求它们中的任何一个……互联网不知道向这些不同的名称服务器发送查询。
    • @Michael-sqlbot 我想我已经尽可能清楚地说明了(稍微编辑了答案)。我要求的是非常具体的内容,即区域如何与相关域相关联,其他技术方面并不那么相关。
    • 嗨@aknuds1,我可以检查一下我是否理解正确。您对两个托管区域使用相同的名称服务器,并且两个托管区域中的记录都正常工作?或者您是否更改为设置记录以侦听第二个托管区域中的名称服务器,而第一个托管区域中没有? (我也开始使用 Terraform 并考虑配置一个 cloudfront、acm 和一个单独的托管区域,以便它与项目的其他方面解耦)
    【解决方案3】:

    域名、命名空间和托管区域如何连接?

    假设您从 GoDaddy 购买了一个新名称 - example.com。然后你在你的 EC2 机器上设置你的网站,它的 IP 为100.0.0.10。要将example.com 指向您的网络服务器,您需要首先选择一个DNS 解析器。 AWS 提供了一个 - Route53。 DNS 解析器将example.com 之类的名称转换为100.0.0.10 之类的IP 地址。

    AWS Route53 有一个Hosted Zones 的概念。您需要为example.com 创建一个托管区域。然后 Route53 会给你nameservers(一堆不同的 URL,AWS 给你 4 个)。您将使用这些名称服务器并返回到 GoDaddy,并且有一个部分可以放置这些名称服务器。这告诉 GoDaddy 将请求发送到哪里

    我们为什么要这样做^^^? 当您从 GoDaddy 购买名称时,GoDaddy 成为您的注册者,即它向 DNS 当局注册了您的名称。因此,每当有人向 DNS 当局请求 example.com 时,他们都会将该请求转发给 GoDaddy。所以 GoDaddy 需要知道将请求发送到哪里。这些域名服务器会告诉 GoDaddy 确切的信息。

    请求到达AWS Route53后,知道example.com这个域名需要去100.0.0.10

    如果我创建 2 个具有相同域名 example.com 的托管区域会怎样?

    托管区域只不过是 Route53 为域定义一组路由规则的方式。 如果您有 2 个具有相同域名的托管区域,您将拥有 2 组命名空间。对于 AWS,每组有 4 个命名空间,所以总共有 8 个命名空间。

    所以现在取决于您为 GoDaddy 提供哪些命名空间。您可以将其设置为 A,在这种情况下,您的第二个托管区域将不会收到任何流量。您可以给它设置 B,在这种情况下,您的第一个托管区域将不会收到任何流量。或者,您可以将集合 A 和集合 B 混合给它,在这种情况下,GoDaddy 将向集合 A 发送一些请求,向集合 B 发送一些请求,但不能同时发送两者。

    【讨论】:

    • 我们可以发送的混合物有限制吗?即如果我们把它们全部放 8 个。这就是我尝试过的 - 我有一个带有 NS1-4 的旧托管区域,添加到我的域提供商 NS 中。另一个带有 NS5-8 的新托管区域,我继续在 NS1-4 下添加新的托管区域。但到目前为止,该域无法正常工作。 ERR_NAME_NOT_RESOLVED 所以我认为没有任何请求被发送到设置 B。
    • 域提供商如何确定从混合中发送到哪个请求?我以为他们会一一发给其他人,如果一个人没有记录,直到他们得到回复的人。抱歉,这里的问题似乎是基本的,相对较新。
    • @unacorn 我认为在收到响应之前不会一一发送请求。 GoDaddy 将选择一个命名空间 URL 并将请求发送给它。之后,GoDaddy 不再参与,也不关心请求是否得到满足。出于这个原因,您的所有域名服务器都必须始终工作。
    猜你喜欢
    • 2020-03-29
    • 2023-03-26
    • 1970-01-01
    • 2015-07-24
    • 2021-05-15
    • 1970-01-01
    • 2016-06-28
    • 2018-01-11
    相关资源
    最近更新 更多