VPC 中的 DNS 属性 - Amazon Virtual Private Cloud

VPC 中的 DNS 属性

域名系统 (DNS) 是 Internet 中名称使用的标准,以将名称解析到各自相应的 IP 地址。DNS 主机名是可以唯一并绝对区分计算机的名称;它由主机名和域名组成。DNS 服务器会将 DNS 主机名称解析到其相应的 IP 地址。

公有 IPv4 地址可实现 Internet 间的通信,而私有 IPv4 地址可实现实例网络内的通信。有关更多信息,请参阅IP 寻址

Amazon 为您的 VPC 提供了一个 DNS 服务器(Amazon Route 53 Resolver)。要使用您自己的 DNS 服务器,请为您的 VPC 创建一组新的 DHCP 选项。有关更多信息,请参阅Amazon VPC 中的 DHCP 选项集

Amazon DNS 服务器

Amazon DNS 服务器是 Amazon Route 53 Resolver 服务器。此服务器允许 DNS 使用需要通过 VPC 互联网网关进行通信的实例。

Amazon DNS 服务器不驻留在 VPC 中的特定子网或可用区内。此服务器位于地址 169.254.169.253(预留 IP 地址以 VPC IPv4 网络范围“+2”为基础)和 fd00:ec2::253。例如,10.0.0.0/16 网络中的 Amazon DNS 服务器位于 10.0.0.2。对于包含多个 IPv4 CIDR 块的 VPC,DNS 服务器的 IP 地址位于主要 CIDR 块中。

当您将实例启动到 VPC 中时,我们会为该实例提供一个私有 DNS 主机名。如果该实例配置了一个公有 IPv4 地址并且启用了 VPC DNS 属性,我们还会提供一个公有 DNS 主机名。

私有 DNS 主机名的格式取决于您在启动 EC2 实例时如何配置它。有关私有 DNS 主机名类型的更多信息,请参阅 EC2 实例命名

您的 VPC 中的 Amazon DNS 服务器用于解析您在 Route 53 中的私有托管区域中指定的 DNS 域名。有关私有托管区域的更多信息,请参阅 Amazon Route 53 开发人员指南 中的使用私有托管区域

规则和注意事项

使用 Amazon DNS 服务器时,适用以下规则和注意事项。

  • 您无法使用网络 ACL 或安全组筛选进出 Amazon DNS 服务器的流量。

  • 使用 Hadoop 框架的服务(如 Amazon EMR)要求实例解析自己的完全限定域名 (FQDN)。这种情况下,如果 domain-name-servers 选项设置为自定义值,则 DNS 解析可能会失败。要确保正确解析 DNS,请考虑在您的 DNS 服务器添加条件转发服务器,将针对域 region-name.compute.internal 的查询转发到 Amazon DNS 服务器。有关更多信息,请参阅 Amazon EMR 管理指南中的设置 VPC 以托管集群

  • Windows Server 2008 禁止使用位于链路本地地址范围(169.254.0.0/16)内的 DNS 服务器。

  • Amazon Route 53 Resolver 只支持递归 DNS 查询。

DNS 主机名

当您启动实例时,实例始终会收到一个私有 IPv4 地址和一个与其私有 IPv4 地址对应的私有 DNS 主机名。如果您的实例具有公有 IPv4 地址,则该实例 VPC 的 DNS 属性决定实例是否接收与公有 IPv4 地址对应的公有 DNS 主机名。有关更多信息,请参阅VPC 中的 DNS 属性

启用 Amazon 提供的 DNS 服务器后,DNS 主机名按如下方式分配和解析。

私有 IP DNS 名称(仅 IPv4)

您可以使用私有 DNS 名称(仅限 IPv4)主机名在同一 VPC 中的实例之间进行通信。您可以解析其他 VPC 中其他实例的私有 IP DNS 名称(仅限 IPv4)主机名,只要这些实例位于同一 AWS 区域,并且其他实例的主机名位于 RFC 1918: 10.0.0.0 - 10.255.255.255 (10/8 prefix)172.16.0.0 - 172.31.255.255 (172.16/12 prefix)192.168.0.0 - 192.168.255.255 (192.168/16 prefix) 定义的私有地址空间范围内。

私有资源 DNS 名称

基于 RBN 的 DNS 名称,它可以解析为此实例选择的 A 和 AAAA DNS 记录。此 DNS 主机名在双堆栈和仅 IPv6 子网中的实例的实例详细信息中可见。有关 RBN 的更多信息,请参阅 EC2 实例主机名类型

公有 IPv4 DNS

对于 us-east-1 区域,公有(外部)IPv4 DNS 主机名采用 ec2-public-ipv4-address.compute-1.amazonaws.com 形式,对于其他区域,则采用 ec2-public-ipv4-address.region.compute.amazonaws.com 形式。Amazon DNS 服务器将公有 DNS 主机名解析为该实例在所在网络外的公有 IPv4 地址及其在所在网络内的私有 IPv4 地址。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南 中的公有 IPv4 地址和外部 DNS 主机名

VPC 中的 DNS 属性

以下 VPC 属性决定了为您的 VPC 提供的 DNS 支持。如果两项属性均启用,则如果在创建时为启动到 VPC 内的实例分配了公有 IPv4 地址或弹性 IP 地址,则该实例会接收公有 DNS 主机名。如果您为之前未启用两项属性的 VPC 启用这两项属性,则已经启动至该 VPC 的实例将接收公有 DNS 主机名(如果它们具有公有 IPv4 地址或弹性 IP 地址)。

要检查是否为 VPC 启用了这些属性,请参阅查看和更新 VPC 的 DNS 属性

属性 说明
enableDnsHostnames

确定 VPC 是否支持将公有 DNS 主机名分配给具有公有 IP 地址的实例。

如果两个 DNS 属性都是 true,VPC 中的实例会获得公有 DNS 主机名。

此属性的默认值为 false,除非 VPC 是默认 VPC 或 VPC 。使用 VPC 控制台向导创建

enableDnsSupport

确定 VPC 是否支持通过 Amazon 提供的 DNS 服务器进行 DNS 解析。

如果此属性是 true,对 Amazon 提供的 DNS 服务器的查询成功。有关更多信息,请参阅Amazon DNS 服务器

此属性的默认值为 true,无论 VPC 的创建方式如何。

规则和注意事项

适用以下规则。

  • 如果两个属性都设置为 true,则会发生以下情况:

    • 具有公有 IP 地址的实例会收到对应的公有 DNS 主机名。

    • Amazon Route 53 Resolver 服务器可以解析 Amazon 提供的私有 DNS 主机名。

  • 如果至少将某个属性设置为 false,将出现以下情况:

    • 具有公有 IP 地址的实例不会收到对应的公有 DNS 主机名。

    • Amazon Route 53 Resolver 无法解析 Amazon 提供的私有 DNS 主机名。

    • 如果 DHCP 选项集中存在自定义域名,则实例会收到自定义私有 DNS 主机名。如果您未使用 Amazon Route 53 Resolver 服务器,您的自定义域名服务器必须正确解析主机名。

  • 如果您使用在 Amazon Route 53 中的私有托管区域中定义的自定义 DNS 域名,或者使用具有接口 VPC 终端节点的私有 DNS (AWS PrivateLink),则必须将 enableDnsHostnamesenableDnsSupport 属性设置为 true

  • Amazon Route 53 Resolver 可以将私有 DNS 主机名解析为全部地址空间内的私有 IPv4 地址,包括您的 VPC 的 IPv4 地址范围不在 RFC 1918 指定的私有 IPv4 地址范围内的情况。但是,如果您在 2016 年 10 月之前创建了 VPC,并且您的 VPC 的 IPv4 地址范围不在这些地址范围内,则 Amazon Route 53 Resolver将无法解析私有 DNS 主机名。要支持这种情况,请联系 AWS Support

DNS 配额

每个 EC2 实例可以每秒为每个网络接口向 Route 53 Resolver(具体说就是 .2 地址,例如,10.0.0.2 和 169.254.169.253)发送 1024 个数据包。无法提高此配额。由 Route 53 Resolver 支持的每秒 DNS 查询数量因查询类型、响应大小和所用协议而异。有关可扩展 DNS 架构的更多信息和建议,请参阅具有 Active Directory 的 AWS 混合 DNS 技术指南。

如果您达到配额,Route 53 Resolver 将拒绝流量。达到配额的部分原因可能是 DNS 限制问题,或者是使用 Route 53 Resolver 网络接口的实例元数据查询。有关如何解决 VPC DNS 限制问题的信息,请参阅如何确定对 Amazon 提供的 DNS 服务器的 DNS 查询是否由于 VPC DNS 限制而失败。有关实例元数据检索的更多信息,请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》中的检索实例元数据

查看您的 EC2 实例的 DNS 主机名称

您可以使用 Amazon EC2 控制台或命令行查看运行实例或网络接口的 DNS 主机名。

为与实例关联的 VPC 启用了 DNS 选项时,公有 DNS (IPv4)私有 DNS 字段可用。有关更多信息,请参阅VPC 中的 DNS 属性

实例

使用控制台查看实例的 DNS 主机名称

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择实例

  3. 从列表中选择您的 实例。

  4. 在详细信息窗格中,Public DNS (IPv4)Private DNS 字段显示 DNS 主机名 (如适用)。

使用命令行查看实例的 DNS 主机名

您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon VPC

网络接口

使用控制台查看网络接口的私有 DNS 主机名

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Network Interfaces

  3. 从列表中选择网络接口。

  4. 在详细信息窗格中,私有 DNS (IPv4) 字段显示私有 DNS 主机名。

使用命令行查看网络接口的 DNS 主机名

您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon VPC

查看和更新 VPC 的 DNS 属性

您可以通过 Amazon VPC 控制台查看并更新您的 VPC 中的 DNS 支持属性。

使用控制台描述和更新 VPC 的 DNS 支持

  1. 通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/

  2. 在导航窗格中,选择 Your VPCs

  3. 选中该 VPC 的复选框。

  4. 查看 Details (详细信息) 中的信息。在此示例中,已同时启用 DNS hostnames (DNS 主机名)DNS resolution (DNS 解析)

    
              “DNS Settings (DNS 设置)”选项卡
  5. 要更新这些设置,请选择 Actions (操作),然后选择 Edit DNS Hostnames (编辑 DNS 主机名)Edit DNS Resolution (编辑 DNS 解析)。系统提示时,请选择或清除 Enable (启用),然后选择 Save changes (保存更改)

使用命令行说明 VPC 的 DNS 支持

您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon VPC

使用命令行更新 VPC 的 DNS 支持

您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon VPC

私有托管区域

要使用自定义 DNS 域名(如 example.com)而不是使用私有 IPv4 地址或AWS提供的私有 DNS 主机名来访问您的 VPC 中的资源,您可以在 Route 53 中创建一个私有托管区域。私有托管区域就是一个容器,其中包含的信息说明您希望如何在一个或多个 VPC 中为某个域及其子域路由流量而不将您的资源公开到 Internet。您可以创建 Route 53 资源记录集,用来确定 Route 53 将如何响应对您的域及其子域的查询。例如,如果您希望将对 example.com 的浏览器请求路由到您 VPC 中的某个 Web 服务器,可以在您的私有托管区域中创建一条 A 记录并指定该 Web 服务器的 IP 地址。有关创建私有托管区域的更多信息,请参阅 Amazon Route 53 开发人员指南 中的使用私有托管区域

要使用自定义 DNS 域名访问资源,必须连接到您的 VPC 中的实例。在您的实例中,您可通过使用 ping 命令来测试是否可从私有托管区域中的资源的自定义 DNS 名称访问该资源;例如,ping mywebserver.example.com。(您必须确保您的实例的安全组规则允许入站 ICMP 流量才能使 ping 命令正常运行。)

您可以从通过 ClassicLink 链接到您的 VPC 的 EC2-Classic 实例访问私有托管区域,前提是您为 VPC 启用了 ClassicLink DNS 支持。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南 中的启用 ClassicLink DNS 支持。否则,私有托管区域不支持 VPC 外的传递关系;例如,您不能使用资源的自定义私有 DNS 名称从 VPN 连接的另一端访问资源。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南 中的 ClassicLink 限制

重要

如果您使用在 Amazon Route 53 中的私有托管区域中定义的自定义 DNS 域名,则必须将以下 enableDnsHostnamesenableDnsSupport 属性设置为 true