解析 VPC 与您的网络之间的 DNS 查询 - Amazon Route 53
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

解析 VPC 与您的网络之间的 DNS 查询

使用 Amazon VPC 创建 VPC 时,Route 53 解析程序 会自动回答针对 EC2 实例 (ec2-192-0-2-44.compute-1.amazonaws.com) 的本地 VPC 域名的 DNS 查询,并记录在私有托管区域 (acme.example.com) 中 。对于所有其他域名,解析程序 针对公有名称服务器执行递归查找。

您还可以通过配置转发规则在 解析程序 和网络上的 DNS 解析程序之间集成 DNS 解析。您的网络可以包含可从 VPC 访问的任何网络,如下所示:

  • VPC 本身

  • 另一个对等 VPC

  • 使用 AWS Direct Connect、VPN 或网络地址转换 (NAT) 网关连接到 AWS 的本地网络

在开始转发查询之前,您需要在连接的 VPC 中创建 解析程序 入站和/或出站终端节点。这些终端节点为入站或出站查询提供路径:

入站终端节点:您网络上的 DNS 解析程序可以通过此终端节点将 DNS 查询转发到 Route 53 解析程序。

这样,您的 DNS 解析程序就可以轻松解析 AWS 资源(例如 EC2 实例)的域名,或 Route 53 私有托管区域中的记录。有关更多信息,请参阅您网络上的 DNS 解析程序如何将 DNS 查询转发到 Route 53 解析程序

出站终端节点:解析程序 通过此终端节点有条件地将查询转发到网络上的解析程序

要转发选定的查询,您可以创建解析程序规则,指定要转发的 DNS 查询的域名(例如 example.com),以及希望将查询转发到您网络上的 DNS 解析程序的 IP 地址。如果查询与多个规则匹配(example.com、acme.example.com),解析程序会选择匹配最具体的规则 (acme.example.com) 并将查询转发到该规则中指定的 IP 地址。有关更多信息,请参阅Route 53 解析程序如何将 DNS 查询从您的 VPC 转发到您的网络

与 Amazon VPC 相似,解析程序是区域性的。在您拥有 VPC 的每个区域,您可以选择将查询从 VPC 转发到网络(出站查询)和/或从网络转发到 VPC(入站查询)。

注意

当您创建 解析程序 终端节点时,无法指定将实例租赁属性设置为 dedicated 的 VPC。有关更多信息,请参阅在为专用实例租赁配置的 VPC 中使用解析程序

要使用入站或出站转发,您在 VPC 中创建一个 解析程序 终端节点。作为终端节点的定义的一部分,您指定您希望将入站 DNS 查询转发到的 IP 地址或您希望出站查询源自的 IP 地址。对于您指定的每个 IP 地址,解析程序 会自动创建 VPC 弹性网络接口。

下图显示了从网络上的 DNS 解析程序到 Route 53 解析程序的 DNS 查询的路径。


			概念图形,显示从网络上的 DNS 解析程序到 Route 53 解析程序的 DNS 查询的路径。

下图显示了从您的其中一个 VPC 中的 EC2 实例到您的网络上的 DNS 解析程序的 DNS 查询的路径。


			概念图形,显示从您的网络到 Route 53 解析程序的 DNS 查询的路径。

有关 VPC 网络接口的概览,请参阅 Amazon VPC 用户指南中的弹性网络接口

主题

您网络上的 DNS 解析程序如何将 DNS 查询转发到 Route 53 解析程序

在 AWS 区域中,如果想要将 DNS 查询从您的网络转发到 Route 53 解析程序,请执行以下步骤:

  1. 您在 VPC 中创建一个 Route 53 解析程序 入站终端节点,并指定您的网络上的解析程序将 DNS 查询转发到的 IP 地址。

    对于为入站终端节点指定的每个 IP 地址,解析程序 在您创建入站终端节点的 VPC 中创建一个 VPC 弹性网络接口。

  2. 您可配置网络上的解析程序,将针对相应域名的 DNS 查询转发到您在入站终端节点中指定的 IP 地址。有关更多信息,请参阅创建入站和出站终端节点的注意事项

解析程序解析源自您网络的 DNS 查询的方式如下:

  1. 您网络上的 Web 浏览器或其他应用程序提交对域名的 DNS 查询,此查询转发到解析程序。

  2. 您网络上的解析程序将查询转发到入站终端节点内的 IP 地址。

  3. 入站终端节点将查询转发到解析程序。

  4. 解析程序获取 DNS 查询中相应域名的值,这可以在内部获取,也可以通过对公有名称服务器执行递归查找。

  5. 解析程序将值(通常为 IPv4 IP 地址)返回到入站终端节点。

  6. 入站终端节点将值返回到您网络上的解析程序。

  7. 您网络上的解析程序将值返回到应用程序。

  8. 应用程序使用解析程序返回的值提交 HTTP 请求,例如,对Amazon S3存储桶中对象的请求。

创建入站终端节点不会更改解析程序的行为,它仅仅提供从 AWS 网络外的位置到达解析程序的路径。

Route 53 解析程序如何将 DNS 查询从您的 VPC 转发到您的网络

对于来自某个 AWS 区域的一个或多个 VPC 中 EC2 实例的 DNS 查询,如果您要将查询转发到您的网络,请执行以下步骤。

  1. 在 VPC 中创建 Route 53 解析程序出站终端节点并指定多个值:

    • 希望 DNS 查询在到达您网络上解析程序之前经过的 VPC。

    • 您希望 解析程序 从中转发 DNS 查询的 VPC 中的 IP 地址。对于您网络上的主机,这些是 DNS 查询源自的 IP 地址。

    • VPC 安全组

    对于您为出站终端节点指定的每个 IP 地址,解析程序 在您指定的 VPC 中创建一个 Amazon VPC 弹性网络接口。有关更多信息,请参阅创建入站和出站终端节点的注意事项

  2. 您创建一个或多个规则,规则指定您希望解析程序转发到您网络上解析程序的 DNS 查询的域名。您还可以指定解析程序的 IP 地址。有关更多信息,请参阅使用规则控制将哪些查询转发到您的网络

  3. 您可以将每条规则与要将 DNS 查询转发到您的网络的 VPC 关联。

使用规则控制将哪些查询转发到您的网络

规则控制 Route 53 解析程序将哪些 DNS 查询转发到您网络上的 DNS 解析程序,以及解析程序自身应答哪些查询。

您可以通过多种方法分类规则。一种方法是按照规则的创建者分类:

  • 自动定义规则 – 解析程序自动创建自动定义的规则,并将规则与您的 VPC 关联。大多数这些规则应用到解析程序应答其查询的 AWS 特定的域名。有关更多信息,请参阅解析程序 为其创建自动定义规则的域名

  • 自定义规则 – 您可以创建自定义规则并将规则与 VPC 关联。目前,您只能创建一种类型的自定义规则,即条件转发规则,也称为转发规则。转发规则导致解析程序将来自 VPC 的 DNS 查询转发到您网络上 DNS 解析程序的 IP 地址。

    如果您为自动定义规则的同一个域创建转发规则,解析程序根据转发规则中的设置,将对该域名的查询转发到您网络上的 DNS 解析程序。

另一种方法是按照规则执行的操作来分类:

  • 条件转发规则 – 希望将对指定域名的 DNS 查询转发到您网络上的 DNS 解析程序时,可创建条件转发规则(也称为转发规则)。

  • 系统规则 – 系统规则会导致解析程序选择性覆盖转发规则中定义的行为。创建了系统规则时,解析程序会解析对指定子域的 DNS 查询,如果没有系统规则,就会由您网络上的 DNS 解析程序解析。

    默认情况下,转发规则会应用到一个域名及其所有子域。如果您希望将对某个域的查询转发到您网络上的解析程序,但不想为某些子域转发查询,则为这些子域创建系统规则。例如,如果您为 example.com 创建一个转发规则,但不希望转发针对 acme.example.com 的查询,则可以创建系统规则,为域名指定 acme.example.com。

  • 递归规则 – 解析程序 会自动创建名为 Internet 解析程序的递归规则。此规则使 Route 53 解析程序 充当您未为其创建自定义规则以及 解析程序 未为其创建自动定义规则的任何域名的递归解析程序。有关如何覆盖此行为的更多信息,请参阅本主题下文中的“将所有查询转发到您的网络”。

您可以创建应用到特定域名(您的域名或大部分 AWS 域名)、应用到公共 AWS 域名或者应用到所有域名的自定义规则。

将对特定域名的查询转发到您的网络

要将对特定域名(例如 example.com)的查询转发到您的网络,您可以创建规则并指定该域名。您也可在要将查询转发到的网络上,指定 DNS 解析程序的 IP 地址。然后,您可以将每条规则与要将对其的 DNS 查询转发到您网络的 VPC 关联。例如,您可以为 example.com、example.org 和 example.net 创建单独的规则。然后,您可以将规则与 AWS 区域中的 VPC 任意组合。

将对 amazonaws.com 的查询转发到您的网络

域名 amazonaws.com 为 AWS 资源的公共域名,例如 EC2 实例和 S3 存储桶。如果要将对 amazonaws.com 的查询转发到您的网络,请创建规则,为域名指定 amazonaws.com,然后为规则类型指定 Forward (转发)

注意

解析程序不会自动转发对部分 amazonaws.com 子域的 DNS 查询,即使您为 amazonaws.com 创建了规则。有关更多信息,请参阅解析程序 为其创建自动定义规则的域名。有关如何覆盖此行为的更多信息,请参阅下文中的“将所有查询转发到您的网络”。

将所有查询转发到您的网络

如果您要将所有查询转发到您的网络,可以创建规则,为域名指定“.”(句点),然后将规则与要将对其的所有 DNS 查询转发到您网络的 VPC 关联。解析程序仍不会将所有 DNS 查询转发到您的网络,因为在 AWS 之外使用 DNS 解析程序会破坏一些功能。例如,一些内部 AWS 域名中存在无法从 AWS 外部访问的内部 IP 地址范围。有关当您创建“.”规则时对其查询不会转发到您网络的域名列表,请参阅解析程序 为其创建自动定义规则的域名

如果您要尝试将对所有域名的 DNS 查询转发到网络,包括默认情况下会从转发中排除的域名,您可以创建“.”规则并执行以下操作之一:

重要

如果将所有域名转发到您的网络,包括解析程序在您创建“.”规则时排除的域名,一些功能可能会停止工作。

解析程序如何确定查询中的域名是否与任何规则匹配

Route 53 解析程序将 DNS 查询中的域名,与关联到发起查询的 VPC 的规则中的域名进行比较。在下列情况中,解析程序视为域名匹配:

  • 域名完全匹配

  • 查询中的域名是规则中域名的子域

例如,如果规则中的域名为 acme.example.com,解析程序将 DNS 查询中的以下域名视为匹配:

  • acme.example.com

  • zenith.acme.example.com

以下域名不匹配:

  • example.com

  • nadir.example.com

如果查询中的域名与多条规则中的域名匹配(例如,example.com 和 www.example.com),解析程序将使用包含最具体的域名 (www.example.com) 的规则来路由出站 DNS 查询。

解析程序如何确定将 DNS 查询转发到哪里

当运行在 VPC 中 EC2 实例上的应用程序提交 DNS 查询时,Route 53 解析程序执行以下步骤:

  1. 解析程序检查规则中的域名。

    如果查询中的域名与规则中的域名匹配,解析程序将查询转发到您在创建出站终端节点时指定的 IP 地址。出站终端节点随后将查询转发到您网络上解析程序的 IP 地址,您在创建规则时指定该地址。

    有关更多信息,请参阅解析程序如何确定查询中的域名是否与任何规则匹配

  2. 解析程序根据“.”规则中的设置来转发 DNS 查询。

    如果查询中的域名与任何其他规则中的域名均不匹配,解析程序会根据自动定义的“.”(句点)规则中的设置转发查询。“.”规则适用于除了几个 AWS 内部域名和私有托管区域中记录名称之外的所有域名。在查询中的域名与自定义转发规则中的任何名称不匹配时,此规则会导致解析程序将 DNS 查询转发到公有名称服务器。如果要将所有查询转发到您网络上的 DNS 解析程序,您可以创建自定义转发规则,为域名指定“.”,为 Type (类型) 指定 Forwarding (转发),然后指定这些解析程序的 IP 地址。

  3. 解析程序将响应返回到提交查询的应用程序。

在多个区域中使用规则

Route 53 解析程序是区域性服务,因此您在一个 AWS 区域中创建的对象仅在该区域中可用。要在多个区域中使用同一个规则,您必须在各个区域中创建该规则。

创建规则的 AWS 账户可以与其他 AWS 账户共享规则。有关更多信息,请参阅 与其他 AWS 账户共享转发规则,并使用共享规则

解析程序 为其创建自动定义规则的域名

解析器自动创建自动定义的系统规则,这些规则定义默认情况下如何解析所选域的查询:

  • 对于私有托管区域以及特定于 Amazon EC2 的特定域名(例如 compute.amazonaws.com 和 compute.internal),自动定义的规则可确保如果您为不太具体的域名(例如 "."(点)或 "com")创建条件转发规则,则私有托管区域和 EC2 实例将会继续解析。

  • 对于公开预留的域名(例如 localhost 和 10.in-addr.arpa),DNS 最佳实践建议在本地应答查询,而不是转发到公有名称服务器。请参阅 RFC 6303,本地服务的 DNS 区域

注意

如果为 "."(点)或 "com" 创建条件转发规则,我们建议您还为 amazonaws.com 创建系统规则。(系统规则会导致 解析程序 在本地解析特定域和子域的 DNS 查询。) 创建此系统规则可以提高性能,减少转发到网络的查询数量,并减少 解析程序 费用。

如果要覆盖自动定义的规则,可以为相同的域名创建条件转发规则。

解析程序创建以下自动定义规则。

私有托管区域的规则

对于您关联到 VPC 的每个私有托管区域,解析程序创建一条规则并将其与 VPC 关联。如果您将私有托管区域与多个 VPC 关联,解析程序将规则与相同的 VPC 关联。

规则的类型为 Forward (转发)

各种 AWS 内部域名的规则

此部分中内部域名的所有规则的类型为 Forward (转发)。解析程序将对这些域名的 DNS 查询转发到 VPC 的授权名称服务器。

注意

在您为 VPC 将 enableDnsHostnames 标志设置为 true 时,解析程序创建大多数这些规则。解析程序甚至在您不使用解析程序终端节点时创建规则。

在将 VPC 的 enableDnsHostnames 标记设置为 true 时,解析程序创建以下自动定义规则并将其与 VPC 关联:

  • Region-name.compute.internal,例如,eu-west-1.compute.internal。us-east-1 区域不使用此域名。

  • Region-name.compute.amazon-domain-name,例如,eu-west-1.compute.amazonaws.com 或 cn-north-1.compute.amazonaws.com.cn。us-east-1 区域不使用此域名。

  • ec2.internal。只有 us-east-1 区域使用此域名。

  • compute-1.internal。只有 us-east-1 区域使用此域名。

  • compute-1.amazonaws.com。只有 us-east-1 区域使用此域名。

在为 VPC 将 enableDnsHostnames 标志设置为 true 时,以下自动定义规则针对解析程序创建的规则的反向 DNS 查找。

  • 10.in-addr.arpa

  • 16.172.in-addr.arpa 到 31.172.in-addr.arpa

  • 168.192.in-addr.arpa

  • 254.169.254.169.in-addr.arpa

  • 每个 VPC 的 CIDR 范围的规则。例如,如果某个 VPC 的 CIDR 范围是 10.0.0.0/23,解析程序创建以下规则:

    • 0.0.10.in-addr.arpa

    • 1.0.10.in-addr.arpa

当您将 VPC 的 enableDnsHostnames 标记设置为 true 时,对于与 localhost 相关的域,还会创建以下自动定义的规则并与 VPC 关联:

  • localhost

  • localdomain

  • 127.in-addr.arpa

  • 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa

  • 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa

在将 VPC 与另一个 VPC 建立对等关系时,解析程序创建以下自动定义规则并将其与您的 VPC 关联:

  • 对等 VPC 的 IP 地址范围的反向 DNS 查找,例如 0.192.in-addr.arpa

    如果您将 IPv4 CIDR 块添加到 VPC,解析程序为新 IP 地址范围添加自动定义规则。

  • 如果另一个 VPC 处于其他区域,则为以下域名:

    • Region-name.compute.internal。us-east-1 区域不使用此域名。

    • Region-name.compute.amazon-domain-name。us-east-1 区域不使用此域名。

    • ec2.internal。只有 us-east-1 区域使用此域名。

    • compute-1.amazonaws.com。只有 us-east-1 区域使用此域名。

所有其他域的规则

解析程序创建一个“.”(句点)规则,应用到未在本主题前文指定的所有域名中。“.”的类型为 Recursive (递归),这意味着规则会导致解析程序充当递归解析程序。

创建入站和出站终端节点的注意事项

在 AWS 区域中创建入站和出站解析程序终端节点之前,请考虑以下问题。

主题

每个 AWS 区域中的入站和出站终端节点的数量

当您希望将 AWS 区域中的 VPC 的 DNS 与您的网络的 DNS 集成时,您通常需要一个 解析程序 入站终端节点(用于要转发到 VPC 的 DNS 查询)和一个出站终端节点(用于要从您的 VPC 转发到您的网络的查询)。您可以创建多个入站终端节点和多个出站终端节点,但一个终端节点足以处理任一方向的 DNS 查询。请注意以下几点:

  • 对于每个 解析程序 终端节点,您可以在不同的可用区中指定两个或更多 IP 地址。终端节点中的每个 IP 地址每秒可处理大量 DNS 查询。(有关针对终端节点中每个 IP 地址当前每秒处理的最大查询数,请参阅Route 53 解析程序 的配额)。 如果您需要 解析程序 处理更多查询,则可以向现有终端节点添加更多 IP 地址,而不是添加其他终端节点。

  • 解析程序 定价基于终端节点中的 IP 地址数以及终端节点处理的 DNS 查询数。每个终端节点包含至少两个 IP 地址。有关 解析程序 定价的更多信息,请参阅 Amazon Route 53 定价

  • 每个规则指定了 DNS 查询转发自的出站终端节点。如果您在 AWS 区域中创建了多个出站终端节点,并且您希望将部分或全部 解析程序 规则与每个 VPC 关联,则需要创建这些规则的多个副本。

对入站和出站终端节点使用相同的 VPC

您可以在同一 VPC 中或在同一区域的不同 VPC 中创建入站和出站终端节点。

入站终端节点和私有托管区域

如果您希望 解析程序 使用私有托管区域中的记录解析入站 DNS 查询,请将私有托管区域与您创建入站终端节点的 VPC 关联。有关将私有托管区域与 VPC 关联的信息,请参阅使用私有托管区域

VPC 对等

您可在一个 AWS 区域中为入站或出站终端节点使用任意 VPC,无论您选择的 VPC 是否与其他 VPC 有对等关系。有关更多信息,请参阅 Amazon Virtual Private Cloud VPC 对等互联

共享子网中的 IP 地址

创建入站或出站终端节点时,只有在当前账户创建了 VPC 时,才能在共享子网中指定 IP 地址。如果另一个账户创建 VPC 并与您的账户共享 VPC 中的子网,则您无法在该子网中指定 IP 地址。有关共享子网的更多信息,请参阅 Amazon VPC 用户指南中的使用共享 VPC

网络与您创建终端节点的 VPC 之间的连接

您的网络与您在创建终端节点的 VPC 之间必须具有以下连接之一:

在共享规则时,您还会共享出站终端节点

在创建规则时,您可以指定您希望 解析程序 用来将 DNS 查询转发到您的网络的出站终端节点。如果您与另一个 AWS 账户共享该规则,您还间接共享您在规则中指定的出站终端节点。如果您使用多个 AWS 账户在某个 AWS 区域中创建 VPC,则可以执行以下操作:

  • 在该区域中创建一个出站终端节点。

  • 使用一个 AWS 账户创建规则。

  • 与在该区域中创建 VPC的所有 AWS 账户共享规则。

这样,您就可以使用该区域中的一个出站终端节点将 DNS 查询从多个 VPC 转发到您的网络,即使 VPC 是使用不同的 AWS 账户创建的。

在为专用实例租赁配置的 VPC 中使用解析程序

当您创建 解析程序 终端节点时,无法指定将实例租赁属性设置为 dedicated 的 VPC。解析程序不在单租户硬件上运行。

您仍然可以使用解析程序来解析源自 VPC 中的 DNS 查询。创建至少一个将实例租赁属性设置为 default 的 VPC,并在您创建入站和出站终端节点时指定该 VPC。

当您创建转发规则时,可以将其与任何 VPC 关联,不论实例租约属性的设置如何。