

# 了解 Amazon DNS
<a name="AmazonDNS-concepts"></a>

身为 Amazon 架构师或管理员，您会遇到的一种基本联网组件是 Amazon DNS 服务器，也称为 Route 53 Resolver。此 DNS 解析器服务原生集成到您所在 Amazon 区域的每个可用区中，可为虚拟私有云（VPC）中的域名解析提供可靠且可扩展的解决方案。在本节中，您会了解到 Amazon DNS 服务器的 IP 地址、Amazon DNS 服务器可以解析的私有 DNS 主机名以及管理着 Amazon DNS 服务器使用的规则。

**Topics**
+ [Amazon DNS 服务器](#AmazonDNS)
+ [规则和注意事项](#amazon-dns-rules)
+ [EC2 实例的 DNS 主机名称](#vpc-dns-hostnames)
+ [VPC 中的 DNS 属性](#vpc-dns-support)
+ [DNS 配额](#vpc-dns-limits)
+ [私有托管区域](#vpc-private-hosted-zones)

## Amazon DNS 服务器
<a name="AmazonDNS"></a>

Route 53 Resolver（也称“Amazon DNS 服务器”或“AmazonProvidedDNS”）是一种 DNS 解析程序服务，内置于 Amazon 区域内的每个可用区中。Route 53 Resolver 位于 `169.254.169.253`（IPv4）、`fd00:ec2::253`（IPv6）以及预置到“VPC\$12”的主要私有 IPV4 CIDR 范围。例如，如果您 VPC 的 IPv4 CIDR 为 `10.0.0.0/16`、IPv6 CIDR 为 `2001:db8::/32`，则可通过 `169.254.169.253`（IPv4）、`fd00:ec2::253`（IPv6）或 `10.0.0.2`（IPv4）访问 Route 53 Resolver。VPC 内的资源使用[链路本地地址](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/using-instance-addressing.html#link-local-addresses)进行 DNS 查询。这些查询会私下传输到 Route 53 Resolver，但在网络上不可见。在仅限 IPv6 子网中，只要“AmazonProvidedDNS”是 DHCP 选项集中的域名服务器，便仍可访问 IPv4 链路本地地址（169.254.169.253）。

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

私有 DNS 主机名的格式取决于您在启动 EC2 实例时如何配置它。有关私有 DNS 主机名类型的更多信息，请参阅《*Amazon EC2 用户指南*》中的 [Amazon EC2 实例主机名类型](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/ec2-instance-naming.html)。

您的 VPC 中的 Amazon DNS 服务器用于解析您在 Route 53 中的私有托管区域中指定的 DNS 域名。有关私有托管区域的更多信息，请参阅 *Amazon Route 53 开发人员指南* 中的[使用私有托管区域](https://docs.amazonaws.cn/Route53/latest/DeveloperGuide/hosted-zones-private.html)。

## 规则和注意事项
<a name="amazon-dns-rules"></a>

使用 Amazon DNS 服务器时，适用以下规则和注意事项。
+ 您无法使用网络 ACL 或安全组筛选进出 Amazon DNS 服务器的流量。
+ 使用 Hadoop 框架的服务（如 Amazon EMR）要求实例解析自己的完全限定域名 (FQDN)。这种情况下，如果 `domain-name-servers` 选项设置为自定义值，则 DNS 解析可能会失败。要确保正确解析 DNS，请考虑在您的 DNS 服务器添加条件转发服务器，将针对域 `region-name.compute.internal` 的查询转发到 Amazon DNS 服务器。有关更多信息，请参阅 *Amazon EMR 管理指南*中的[设置 VPC 以托管集群](https://docs.amazonaws.cn/emr/latest/ManagementGuide/emr-vpc-host-job-flows.html)。
+ Amazon Route 53 Resolver 只支持递归 DNS 查询。

## EC2 实例的 DNS 主机名称
<a name="vpc-dns-hostnames"></a>

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

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

**私有 IPv4 DNS 名称**  
实例的私有 IPv4 DNS 主机名解析为私有 IPv4 地址。您可以使用私有 IPv4 DNS 主机名，在同一 VPC 中或连接的 VPC 中的实例之间进行通信。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[私有 IPv4 地址](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/using-instance-addressing.html#concepts-private-addresses)。

**公有 IPv4 DNS 名称**  
实例的公有 IPv4 DNS 主机名解析为（该实例网络外）的公有 IPv4 地址或（该实例网络内）的私有 IPv4 地址。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[公有 IPv4 地址](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/using-instance-addressing.html#concepts-public-addresses)。

要通过 VPC 对等连接将公有 IPv4 DNS 名称解析为私有 IPv4 地址，必须启用对等连接的 DNS 解析功能。有关更多信息，请参阅[实现对 VPC 对等连接的 DNS 解析](https://docs.amazonaws.cn/vpc/latest/peering/vpc-peering-dns.html)。

**私有资源 DNS 名称**  
基于 RBN 的 DNS 名称，它可以解析为此实例选择的 A 和 AAAA DNS 记录。此 DNS 主机名在双堆栈和仅 IPv6 子网中的实例的实例详细信息中可见。有关 RBN 的更多信息，请参阅《Amazon EC2 用户指南》**中的 [EC2 实例主机名类型](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/ec2-instance-naming.html)。

## VPC 中的 DNS 属性
<a name="vpc-dns-support"></a>

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

要检查是否为 VPC 启用了这些属性，请参阅[查看和更新 VPC 的 DNS 属性](vpc-dns-updating.md)。


| 属性 | 描述 | 
| --- | --- | 
| enableDnsHostnames |  确定 VPC 是否支持将公有 DNS 主机名分配给具有公有 IP 地址的实例。 除非 VPC 是默认 VPC，否则此属性的默认值为 `false`。请注意下面此属性的**规则和注意事项**。  | 
| enableDnsSupport |  确定 VPC 是否支持通过 Amazon 提供的 DNS 服务器进行 DNS 解析。 如果此属性是 `true`，对 Amazon 提供的 DNS 服务器的查询成功。有关更多信息，请参阅 [Amazon DNS 服务器](#AmazonDNS)。 此属性的默认值为 `true`。请注意下面此属性的**规则和注意事项**。  | 

**规则和注意事项**
+ 如果两个属性都设置为 `true`，则会发生以下情况：
  + 具有公有 IP 地址的实例会收到对应的公有 DNS 主机名。
  + Route 53 Resolver 服务器可以解析 Amazon 提供的私有 DNS 主机名。
+ 如果至少将某个属性设置为 `false`，将出现以下情况：
  + 具有公有 IP 地址的实例不会收到对应的公有 DNS 主机名。
  + Route 53 Resolver 无法解析 Amazon 提供的私有 DNS 主机名。
  + 如果 [DHCP 选项集](VPC_DHCP_Options.md)中存在自定义域名，则实例会收到自定义私有 DNS 主机名。如果未使用 Route 53 Resolver 服务器，您的自定义域名服务器必须正确解析主机名。
+ 如果您使用在 Amazon Route 53 中的私有托管区域中定义的自定义 DNS 域名，或者使用具有接口 VPC 端点的私有 DNS (Amazon PrivateLink)，则必须将 `enableDnsHostnames` 和 `enableDnsSupport` 属性设置为 `true`。
+ Route 53 Resolver 可以将私有 DNS 主机名解析为全部地址空间内的私有 IPv4 地址，包括您的 VPC 的 IPv4 地址范围不在 [RFC 1918](https://tools.ietf.org/html/rfc1918) 指定的私有 IPv4 地址范围内的情况。但是，如果您在 2016 年 10 月之前创建了 VPC，并且您的 VPC 的 IPv4 地址范围不在这些地址范围内，则 Route 53 Resolver 将无法解析私有 DNS 主机名。要支持这种情况，请联系 [Amazon Web Services 支持](https://www.amazonaws.cn/contact-us/)。

## DNS 配额
<a name="vpc-dns-limits"></a>

对于使用[本地链路](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/using-instance-addressing.html#link-local-addresses)地址的服务，每秒数据包数（PPS）限制为 1024 个。此限制是 Route 53 Resolver DNS 查询、[实例元数据服务（IMDS）](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html)请求、[Amazon Time Service 网络时间协议（NTP）](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/set-time.html)请求和 [Windows 许可服务（适用于基于 Microsoft Windows 的实例）](https://www.amazonaws.cn/windows/resources/licensing/)请求的总和。无法提高此配额。

由 Route 53 Resolver 支持的每秒 DNS 查询数量因查询类型、响应大小和所用协议而异。有关可扩展 DNS 架构的更多信息和建议，请参阅[具有 Active Directory 的 Amazon 混合 DNS](https://d1.awsstatic.com/whitepapers/aws-hybrid-dns-with-active-directory.pdf) 技术指南。

如果您达到配额，Route 53 Resolver 将拒绝流量。达到配额的部分原因可能是 DNS 节流问题，或者是使用 Route 53 Resolver 网络接口的实例元数据查询。有关如何解决 VPC DNS 节流问题的信息，请参阅[如何确定我对 Amazon 提供的 DNS 服务器的 DNS 查询是否由于 VPC DNS 节流而失败](https://repost.aws/knowledge-center/vpc-find-cause-of-failed-dns-queries)。有关实例元数据检索的更多信息，请参阅《*Amazon EC2 用户指南*》中的[检索实例元数据](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html)。

## 私有托管区域
<a name="vpc-private-hosted-zones"></a>

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

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

私有托管区域不支持 VPC 外的传递关系；例如，您不能使用资源的自定义私有 DNS 名称从 VPN 连接的另一端访问资源。

**重要**  
如果您使用在 Amazon Route 53 中的私有托管区域中定义的自定义 DNS 域名，则必须将 `enableDnsHostnames` 和 `enableDnsSupport` 属性设置为 `true`。