解析 VPC 与您的网络之间的 DNS 查询 - Amazon Route 53

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

Resolver 包含您配置的端点,用于应答与本地环境之间的 DNS 查询。

注意

不支持将私有 DNS 查询从本地 DNS 服务器转发到任何 VPC CIDR + 2 地址,这可能会导致结果不稳定。我们建议您改用 Resolver 入站端点。

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

  • VPC 本身

  • 另一个对等 VPC

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

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

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

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

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

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

与 Amazon VPC 一样,Resolver 也是区域性的。在您拥有 VPC 的每个区域,您可以选择将查询从 VPC 转发到网络(出站查询)和/或从网络转发到 VPC(入站查询)。

不能在不属于自己的 VPC 中创建解析程序端点。只有 VPC 拥有者才能创建诸如入站终端节点等 VPC 级资源。

注意

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

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

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

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

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

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

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

主题

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

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

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

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

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

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

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

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

  3. 入站端点将查询转发到 Resolver。

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

  5. 解析程序将值返回到入站端点。

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

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

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

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

Route 53 Resolver 端点如何将 DNS 查询从您的 VPC 转发到您的网络

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

  1. 在 VPC 中创建 Route 53 Resolver 出站端点并指定多个值:

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

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

    • VPC 安全组

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

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

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

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

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

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

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

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

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

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

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

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

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

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

您可以创建应用到特定域名(您的域名或大部分 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 (转发)

注意

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

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

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

但是,可以禁用反向 DNS 的自动定义系统规则,从而允许“.”规则将所有反向 DNS 查询转发到您的网络。有关如何关闭自动定义规则的更多信息,请参阅 解析程序中反向 DNS 查询的转发规则

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

重要

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

Resolver 如何确定查询中的域名是否与任何规则匹配

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

  • 域名完全匹配

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

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

  • acme.example.com

  • zenith.acme.example.com

以下域名不匹配:

  • example.com

  • nadir.example.com

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

Resolver 如何确定将 DNS 查询转发到哪里

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

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

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

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

  2. Resolver 端点根据“.”规则中的设置来转发 DNS 查询。

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

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

在多个区域中使用规则

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

创建规则的 AWS 账户可以与其它 AWS 账户共享规则。有关更多信息,请参阅 与其它 AWS 账户共享解析程序规则,并使用共享规则

Resolver 为其创建自动定义规则的域名

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

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

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

注意

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

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

您还可以禁用某些自动定义的规则。有关更多信息,请参阅 解析程序中反向 DNS 查询的转发规则

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

私有托管区域的规则

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

规则的类型为 Forward (转发)

各种 AWS 内部域名的规则

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

注意

当您将 VPC 的 enableDnsHostnames 标记设置为 true 时,Resolver 将创建大部分规则。即使您没有使用 Resolver 端点,Resolver 也会创建规则。

在将 VPC 的 enableDnsHostnames 标记设置为 true 时,Resolver 将创建以下自动定义规则并将其与 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.rproxy.goskope.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 时,以下自动定义规则针对 Resolver 创建的规则的反向 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,则 Resolver 会创建以下规则:

    • 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 连接时,并且在启用 DNS 支持的情况下,Resolver 会创建以下自动定义规则并将其与您的 VPC 关联:

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

    如果您将 IPv4 CIDR 块添加到 VPC, Resolver 将为新 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 区域使用此域名。

所有其他域的规则

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

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

在 AWS 区域中创建入站和出站 Resolver 端点之前,请考虑以下问题。

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

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

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

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

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

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

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

有关更多信息,请参阅 Amazon Route 53 的最佳实践

入站端点和私有托管区域

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

VPC 对等连接

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

共享子网中的 IP 地址

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

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

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

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

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

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

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

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

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

选择用于端点的协议

端点协议决定如何将数据传输到入站端点和从出站端点传输数据。不需要加密 VPC 流量的 DNS 查询,因为网络上的每个数据包流都要根据规则单独授权,以便在传输和传送其之前验证正确的源和目标。未经传输实体和接收实体特别授权,信息基本上不可能在实体之间任意传递。如果将数据包路由到目标,但没有与之匹配的规则,则该数据包将被丢弃。有关更多信息,请参阅 VPC 功能

可用的协议包括:

  • Do53:端口 53 上的 DNS。使用 Route 53 Resolver 中继数据,无需额外加密。虽然外部各方无法读取数据,但可以在 AWS 网络内查看该数据。使用 UDP 或 TCP 发送数据包。Do53 主要用于 Amazon VPC 内部和之间的流量。

  • DoH:通过加密的 HTTPS 会话传输数据。DoH 可提升安全性,其中未经授权的用户无法解密数据,并且除预期接收方外,任何人都无法读取数据。

  • DOH-FIPS:通过符合 FIPS 140-2 加密标准的加密 HTTPS 会话传输数据。仅入站端点支持 有关更多信息,请参阅 FIPS PUB 140-2

对于入站端点,可以按以下方式应用协议:

  • 结合使用 Do53 和 DoH。

  • 结合使用 Do53 和 DoH-FIPS。

  • 单独使用 Do53。

  • 单独使用 DoH。

  • 单独使用 DoH-FIPS。

  • 无,即视为 Do53。

对于出站端点,可以按以下方式应用协议:

  • 结合使用 Do53 和 DoH。

  • 单独使用 Do53。

  • 单独使用 DoH。

  • 无,即视为 Do53。

另请参阅 创建或编辑入站端点时指定的值创建或编辑出站端点时指定的值

在为专用实例租赁配置的 VPC 中使用 Resolver

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

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

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