在多账户 AWS 环境中为混合网络设置 DNS 解析 - AWS 规范指引

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在多账户 AWS 环境中为混合网络设置 DNS 解析

Anvesh Koganti,Amazon Web Services

Summary

此模式为在包含多个 Amazon Web Services(AWS)账户的混合网络环境中设置 DNS 解析提供了全面的解决方案。它支持通过 Amazon Route 53 Resolver 端点在本地网络和 AWS 环境之间进行双向 DNS 解析。此模式提供两种解决方案,可在多账户、集中式架构中启用 DNS 解析:

  • 基本设置不使用 Route 53 Profiles,有助于为复杂性较低的中小规模部署优化成本。

  • 增强设置使用 Route 53 Profiles 来简化操作,最适用于规模更大或更复杂的 DNS 部署场景。

注意

实施前请查看限制部分,了解服务限制和配额。做出决定时,请综合考虑管理开销、成本、运营复杂性及团队专业能力等因素。

先决条件和限制

先决条件

  • 一种 AWS 多账户环境,其中包含跨共享服务和工作负载账户部署的亚马逊虚拟私有云(Amazon VPC)(最好遵循账户结构 AWS 最佳实践通过 AWS Control Tower 进行设置)。

  • 您的本地网络与 AWS 环境之间现有的混合连接(AWS Direct Connect 或 AWS Site-to-Site VPN)。

  • Amazon VPC 对等互连 AWS Transit Gateway,或用于第 3 层网络之间 VPCs连接的 AWS 云 WAN。(应用程序流量需要此连接。 DNS 解析不需要。 DNS 解析独立于两者之间的网络连接 VPCs。)

  • 在本地环境中运行的 DNS 服务器。

限制

  • Route 53 Resolver 端点、规则和配置文件是区域结构,可能需要 AWS 区域 对全球组织进行多个复制。

  • 有关 Route 53 Resolver、私有托管区及 Profiles 的服务配额的完整列表,请参阅 Route 53 文档中的配额

架构

目标技术堆栈

  • Route 53 出站和入站端点

  • 用于条件转发的 Route 53 Resolver 规则

  • AWS Resource Access Manager (AWS RAM)

  • Route 53 私有托管区

目标架构

出站和入站端点

下图显示了从本地 AWS 到内部的 DNS 解析流程。这是针对域名托管在本地场景的出站解析的连接配置。以下是设置所涉及流程的高层级概述。有关详细信息,请参阅操作说明部分。

  1. 在共享服务 VPC 中部署 Route 53 Resolver 出站端点。

  2. 在共享服务账户中为本地托管的域名创建 Route 53 Resolver 规则(转发规则)。

  3. VPCs 在托管需要解析本地托管域名的资源的其他账户中共享规则并将其关联。根据您的使用案例,可以通过不同的方式完成此操作,具体将在本部分后续内容中说明。

AWS 到本地环境 DNS 解析流程中的入站和出站端点

设置连接后,出站解析所涉及的步骤如下:

  1. 亚马逊弹性计算云 (Amazon EC2) 实例通过 VPC+2 地址向 VPC 的 Route 53 解析器发送 DNS 解析请求。db.onprem.example.com

  2. Route 53 解析器检查解析器规则,并使用出站终端节点将请求转发到本地 DNS 服务器 IPs 。

  3. 出站终端节点将请求转发到本地 DNS IPs。流量通过共享服务 VPC 与本地数据中心之间已建立的混合网络连接进行传输。

  4. 本地 DNS 服务器向出站端点返回响应,出站端点再将该响应转发回 VPC 的 Route 53 Resolver。解析器将响应返回给 EC2 实例。

下图显示了从本地环境到的 DNS 解析流程 AWS。这是针对域名托管在 AWS场景的入站解析的连接配置。以下是设置所涉及流程的高层级概述。有关详细信息,请参阅操作说明部分。

  1. 在共享服务 VPC 中部署 Resolver 入站端点。

  2. 在共享服务账户中创建私有托管区(集中式方法)。

  3. 将私有托管区与共享服务 VPC 关联。共享这些区域并将其与跨账户关联以进行 VPC-to-VPC DN VPCs S 解析。根据您的使用案例,可以通过不同的方式完成此操作,具体将在本部分后续内容中说明。

本地环境到 AWS DNS 解析流程中的入站和出站端点。

设置连接后,入站解析所涉及的步骤如下:

  1. 本地资源向本地 DNS 服务器发送针对 ec2.prod.aws.example.com 的 DNS 解析请求。

  2. 本地 DNS 服务器通过混合网络连接,将该请求转发至共享服务 VPC 中的 Resolver 入站端点。

  3. 借助 VPC Route 53 Resolver,Resolver 入站端点在关联的私有托管区中查找该请求,并获取相应的 IP 地址。

  4. 这些 IP 地址被发送回本地 DNS 服务器,再由本地 DNS 服务器将响应返回给本地资源。

此配置使本地资源能够通过入站端点将查询路由到相应的 AWS 私有托管区域,从而解析私有域名。在此架构中,私有托管区集中部署在共享服务 VPC 中,支持由单个团队进行集中式 DNS 管理。这些区域可以与许多区域相关联 VPCs ,以解决 VPC-to-VPC DNS 解析用例。或者,您可能希望将 DNS 域的所有权和管理委托给每个人 AWS 账户。在这种情况下,每个账户管理各自的私有托管区,并将每个区域与中央共享服务 VPC 关联,以实现与本地环境的统一解析。这种分散式方法不在此模式的范围之内。有关更多信息,请参阅跨多个账户扩展 DNS 管理以及 VPCs Amazon VPC 的混合云 DNS 选项白皮书。

使用 Resolver 端点建立基本的 DNS 解析流程时,您需要确定如何管理跨 AWS 账户的 Resolver 规则和私有托管区的共享与关联。您可以通过两种方式来解决这个问题:通过使用 AWS RAM 共享解析器规则和直接私有托管区域关联进行自我管理共享(如基本设置部分所述),或者通过 Route 53 配置文件(如增强设置部分所述)。具体选择取决于您组织的 DNS 管理偏好和运维需求。以下架构图说明了一个扩展的环境,该环境包括多个 VPCs 跨不同账户的环境,这代表了典型的企业部署。

基本设置

在基本设置中,在多账户 AWS 环境中实现混合 DNS 解析时使用 AWS RAM 共享解析器转发规则和私有托管区域关联,以管理本地和 AWS 资源之间的 DNS 查询。此方法使用连接到本地网络的共享服务 VPC 中的集中式 Route 53 Resolver 端点,高效处理入站和出站 DNS 解析。

  • 要进行出站解析,需要在 Shared Services 账户中创建解析器转发规则,然后使用 AWS RAM与其他 AWS 账户 人共享。此类共享仅限同一区域内的账户。然后,目标账户可以将这些规则与其关联起来, VPCs 并使这些规则中的资源 VPCs 能够解析本地域名。

  • 对于入站解析:在共享服务账户中创建私有托管区,并将其与共享服务 VPC 关联。然后,可以使用 Rout VPCs e 53 API 或 AWS Command Line Interface (AWS CLI) 将这些区域关联到其他账户中。 AWS SDKs然后,关联中的资源 VPCs 可以解析私有托管区域中定义的 DNS 记录,从而在您的 AWS 环境中创建统一的 DNS 视图。

下图显示此基本设置中的 DNS 解析流程。

在多账户 AWS 环境中使用基本设置进行混合 DNS 解析。

当您使用的 DNS 基础设施规模有限时,此设置能良好运行。但随着环境规模的扩大,管理难度会逐渐增加。随着规模的扩展,管理私有托管区域和解析器规则的共享和关联方式的运营开 VPCs 销会显著增加。此外,服务配额(例如每个私有托管区的 300 个 VPC 关联限制)可能会成为大规模部署的限制因素。而增强设置可应对这些挑战。

增强设置

Route 53 Profiles 为管理跨多个 AWS 账户的混合网络中的 DNS 解析提供了简化的解决方案。您无需单独管理私有托管区域和解析器规则,而是可以将 DNS 配置分组到一个容器中,便于在一个区域中的多个账户之间共享 VPCs 和应用。此配置既保留了共享服务 VPC 中集中式 Resolver 端点的架构,又显著简化了 DNS 配置的管理流程。

下图显示增强设置中的 DNS 解析流程。

在多账户 AWS 环境中,使用增强设置和 Route 53 Profiles 进行混合 DNS 解析。

使用 Route 53 Profiles,您可将私有托管区关联、Resolver 转发规则以及 DNS 防火墙规则整合到单个可共享单元中。您可以在 Shared Services 帐户中创建个人资料并使用与成员帐户共享 AWS RAM。共享配置文件并将其应用于目标时 VPCs,服务会自动处理所有必要的关联和配置。这样可显著降低 DNS 管理的运营开销,并为不断增长的环境提供出色的可扩展性。

自动化和扩展

使用 Terraform 等 CloudFormation 基础设施即代码 (IaC) 工具自动配置和管理 Route 53 Resolver 端点、规则、私有托管区域和配置文件。将 DNS 配置与持续集成和持续交付(CI/CD)管道集成,以确保配置的一致性、可重复性,并实现快速更新。

工具

AWS 服务

  • AWS Resource Access Manager (AWS RAM) 可帮助您安全地共享资源, AWS 账户 从而减少运营开销并提供可见性和可审计性。

  • Amazon Route 53 Resolver以递归方式响应来自 AWS 资源的 DNS 查询,默认情况下全部 VPCs可用。您可以创建 Resolver 端点和条件转发规则,以解析本地数据中心和您的数据中心之间的 DNS 命名空间。 VPCs

  • Amazon Route 53 私有托管区是一个容器,其中包含的信息说明您希望 Route 53 如何响应某个域及其子域的 DNS 查询。

  • Amazon Route 53 配置文件允许您以简化的方式在许多 VPCs 不同 AWS 账户 版本中应用和管理与 DNS 相关的 Route 53 配置。

最佳实践

本节提供了优化 Route 53 Resolver 的一些最佳实践,这些实践是 Route 53 最佳实践的一部分。有关完整列表,请参阅 Amazon Route 53 的最佳实践

避免使用解析器端点进行循环配置

  • 设计您的 DNS 架构,通过精心规划 VPC 关联来防止递归路由。当 VPC 托管入站端点时,请避免将其与可能产生循环引用的 Resolver 规则相关联。

  • 当您在账户之间共享 DNS 资源以保持干净的路由路径时,请 AWS RAM 策略性地使用。

有关更多信息,请参阅 Route 53 文档中的避免 Resolver 端点出现循环配置

Resolver 端点扩展

  • 对于每秒查询量(QPS)需求较高的环境,请注意,端点中每个 ENI 的 QPS 上限为 10,000。 ENIs 可以向终端节点添加更多内容以扩展 DNS QPS。

  • Amazon CloudWatch 提供InboundQueryVolumeOutboundQueryVolume指标(参见CloudWatch 文档)。建议您设置监控规则,当阈值超过特定值(例如 10,000 QPS 的 80%)时提醒您。

  • 为 Resolver 端点配置有状态安全组规则,以防止在高流量场景下,连接跟踪限制导致 DNS 查询被限流。要详细了解安全组中连接跟踪的工作原理,请参阅亚马逊 EC2 文档中的亚马逊 EC2 安全组连接跟踪

有关更多信息,请参阅 Route 53 文档中的 Resolver 端点扩展

为 Resolver 端点提供高可用性

  • 创建入站端点,采用至少两个可用区中的 IP 地址以实现冗余。

  • 预调配额外的网络接口,以确保维护或流量激增期间的可用性。

有关更多信息,请参阅 Route 53 文档中的 Resolver 端点的高可用性

操作说明

Task说明所需技能

部署入站端点。

Route 53 Resolver 使用入站端点接收来自本地 DNS 解析器的 DNS 查询。有关说明,请参阅 Route 53 文档 VPCs 中的将入站 DNS 查询转发给您。记下入站端点 IP 地址。

AWS 管理员、云管理员

部署出站端点。

Route 53 解析器使用出站端点向本地 DNS 解析器发送 DNS 查询。有关说明,请参阅 Route 53 文档中的将出站 DNS 查询转发到您的网络。记下输出端点 ID。

AWS 管理员、云管理员
Task说明所需技能

为 AWS上托管的域名创建私有托管区。

此区域保存 AWS托管域(例如prod.aws.example.com)中应从本地环境解析的资源的 DNS 记录。有关说明,请参阅 Route 53 文档中的创建私有托管区

创建私有托管区时,必须将 VPC 与同一账户拥有的托管区相关联。为此,请选择共享服务 VPC。

AWS 管理员、云管理员

基本设置:将私有托管区域与其他 VPCs 账户相关联。

如果使用的是基本设置(请参阅架构部分):

要使成员账户中的资源 VPCs 能够解析此私有托管区域中的 DNS 记录,您必须将您的资源 VPCs 与托管区域关联。您必须授权关联,然后通过编程方式完成关联。有关说明,请参阅 Route 53 文档中的将 Amazon VPC 与您使用不同的 AWS 账户创建的私有托管区相关联

AWS 管理员、云管理员

增强设置:配置和共享 Route 53 Profiles。

如果使用的是增强设置(请参阅架构部分):

  1. 创建 Route 53 Profile 并将相关的私有托管区与之关联。有关说明,请参阅 Route 53 文档中的创建 Route 53 Profiles

  2. 用于 AWS RAM 与成员帐户共享个人资料,然后将共享的个人资料与目标相关联 VPCs。有关说明,请参阅 Route 53 文档 VPCs中的共享 R oute 53 配置文件和将 Route 53 配置文件关联到

注意

根据组织的结构和 DNS 要求,您可能需要为不同的账户或工作负载创建和管理多个配置文件。

AWS 管理员、云管理员
Task说明所需技能

为本地托管的域名创建转发规则

此规则将指示 Route 53 Resolver 将本地域名(例如 onprem.example.com)的任何 DNS 查询转发给本地 DNS 解析器。要创建此规则,您需要本地 DNS 解析器的 IP 地址和出站端点 ID。有关说明,请参阅 Route 53 文档中的创建转发规则

AWS 管理员、云管理员

基本设置:共享转发规则并将其与您在其他账户 VPCs 中的账户关联。

如果使用的是基本设置:

要使转发规则生效,您必须将该规则与您在其他账户 VPCs 中共享和关联。然后,Route 53 Resolver 在解析域名时会将此规则纳入考量。有关说明,请参阅 Route 53 文档中的与其他人共享解析器规则 AWS 账户 和使用共享规则和将转发规则与 VPC 关联

AWS 管理员、云管理员

增强设置:配置和共享 Route 53 Profiles。

如果使用的是增强设置:

  1. 如果您在之前的步骤中已经创建了 Route 53 Profile,则可以使用相同的配置文件。如果尚未创建,请先创建 Route 53 Profile,并将相关的 Resolver 转发规则与其关联。有关说明,请参阅 Route 53 文档中的创建 Route 53 Profiles

  2. 用于 AWS RAM 与成员帐户共享个人资料,然后将共享的个人资料与目标关联 VPCs。有关说明,请参阅 Route 53 文档 VPCs中的共享 R oute 53 配置文件和将 Route 53 配置文件关联到

注意

根据组织的结构和 DNS 要求,您可能需要为不同的账户或工作负载创建和管理多个配置文件。

AWS 管理员、云管理员
Task说明所需技能

在本地 DNS 解析器中配置条件转发。

要 AWS 从本地环境发送 DNS 查询以进行解析,您必须在本地 DNS 解析器中配置条件转发以指向入站终端节点 IP 地址。这指示 DNS 解析器将 AWS托管域(例如prod.aws.example.com)的所有 DNS 查询转发到入站终端节点 IP 地址,由 Route 53 解析器进行解析。

网络管理员
Task说明所需技能

测试从本地环境 AWS 到本地环境的 DNS 解析。

从已关联转发规则的 VPC 中的实例,对本地托管域名(例如 db.onprem.example.com)执行 DNS 查询。

网络管理员

测试从本地环境到的 DNS 解析 AWS。

在本地服务器上,对 AWS托管域执行 DNS 解析(例如,对于ec2.prod.aws.example.com)。

网络管理员

相关资源