Active Directory 域服务与 Amazon Route 53 集成




任何曾经使用过 Microsoft Active Directory 域服务 (AD DS) 和加入域的工作负载的人,都应该深知正确的 DNS 解析对于系统的正常运行至关重要。即使您没有直接处理过 AD DS 工作负载,但如果您正在阅读这篇文章,您也可能在您的职业生涯中听说过由 DNS 导致的某些停机事故,这些事故凸显了 DNS 在现代架构中的重要性。在本文中,我们将探讨将 Amazon Route 53 与 AD DS 集成的最佳实践。
简介
在 AD DS 加入的系统之间,正确的 DNS 解析尤为关键。AD DS 使用 DNS 进行服务发现,使客户端系统能够找到它们运行所需的特定 AD DS 服务,如域控制器或全局编录服务器。为了识别目标服务,客户端系统会向配置的 DNS 服务器查询相关的 SRV 资源记录。此外,SRV 记录本身通过动态 DNS 更新在其配置的 DNS 服务器上创建和更新。另一个需要注意的功能是,根据应用程序的不同,当客户端系统尝试连接时,可能需要反向 DNS 记录来验证主机名。这一切都使得 DNS 的解析和注册正常工作至关重要。
过去,为了确保域加入系统的 DNS 注册和解析能够正常工作,客户通常会为其虚拟私有云 (VPCs) 创建一个 DHCP(动态主机配置协议)选项集,该选项集直接指向基于 Windows DNS 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。然后,他们会在这些 DNS 服务器上使用条件转发器,将对 Route 53 托管区的请求转发到 Amazon Route 53 Resolver(以前称为 VPC 解析器,有时也指运行 AD DS DNS 服务的 EC2 实例本地 .2 解析器)。尽管这种配置易于理解,但它绕过了分布式 VPC 解析器,并将一个 VPC 或一组 VPC 的所有 DNS 请求集中到单个实例上,从而导致了许多关于可扩展性和可用性方面的低效和挑战。您可以在图 1 中看到这种方法的展示。然而,自从 2019 年引入 Route 53 解析器端点和规则以来,客户可以在不引入这些问题的情况下,将他们的 AD DS DNS 与 Route 53 解析器集成。

混合云环境通常指一个或多个 VPC 通过私有 IP 连接到一个或多个传统网络,如通过 VPN 或 DirectConnect 连接的本地网络。Route 53 解析器端点能够在混合云网络中创建一致的 DNS 视图,因此 DNS 解析可以从本地流向 VPC 或从 VPC 流向本地。入站端点允许您的本地 DNS 解析器通过私有链路将部分或全部 DNS 查询转发到 VPC 中的 Route 53 解析器。出站端点和转发规则允许您配置 Route 53 解析器,从而将某些查询转发回本地网络的解析器。与 Active Directory 的情况相同,我们需要集成的 DNS 解析器有时运行在同一个 VPC 中。
使用 Route 53 解析器端点解析 Active Directory 域服务
在本文中,我们描述了一个简单的环境,其中单个 AD DS 域支持三个 VPC:prod、dev 和 shared services。然而,这些概念可以轻松扩展以支持现实世界环境的复杂性。所有基于亚马逊云科技可用区的域名为 aws.example.com,所有在 AD DS DNS 基础设施上托管的区域的域名为 ad.example.com。在共享服务 VPC 的每个可用区中都有一个 AD 服务器。此环境如图 2 所示。

解决方案概述
在此环境中,我们使用默认的 DHCP 选项集设置,使给定 VPC 中的资源可以使用由亚马逊提供的 DNS,其称为 AmazonProvidedDNS。在此配置中,资源通过链路本地 IPv4 地址 169.254.169.253 或 VPC CIDR +2 或 IPv6 地址 fd00:ec2::253 连接到 Route 53 解析器。默认情况下,Route 53 解析器自动回答以下 DNS 查询:
- EC2 实例的本地 VPC 域名(如 ip-192-168-2-44.us-west-2.compute.internal)。
- 私有托管区中的记录(如 aws.example.com)。
- 对于公共域名,Route 53 解析器对互联网上的公共名称服务器执行递归查找。
然而,通过使用解析器端点和规则,您还可以配置您的 Route 53 解析器将 DNS 查询转发到您的云 AD DS DNS 服务器。我们配置了一个出站端点,用于处理从我们的 VPC 到 AD DS 的 IP 地址的 AD 完全限定域名 (FQDN) 的 DNS 查询转发。这是通过配置一个解析器规则来实现的,该规则将对 ad.example.com 域的任何查询定向到相应的 AD DS DNS 服务器 IP 地址。
创建出站端点
1. 在 Route 53 控制台中,从左侧菜单中选择 “Outbound endpoints”,然后选择 “Create outbound endpoint”。
2. 指定您的 AD DS 域所在的 VPC:“shared services”。
3. 选择或创建一个安全组,该组允许所有来自和发往 0.0.0.0/0 和 ::/0 的入站和出站流量。(可以创建更具体的规则,但这将引入连接跟踪,从而减少可以通过端点处理的请求数量。有关安全组连接跟踪的更多信息,请参阅 Amazon EC2 用户指南)。
4. 选择 “Endpoint Type”(IPv4、IPv6 或 Dual-stack),并在 “Protocols for this endpoint” 中选择该端点使用的协议。
Do53 是默认的 Route 53 端点协议。在该协议中,数据传输不需要额外的加密。

5. 在不同的可用区中指定两个 IP 地址,您的解析器在将 DNS 查询转发到您的 AD 解析器的过程中,会将这些查询转发到这些 IP 地址。您的环境所需的端点数量将取决于查询量。每个出站端点 IP 的配额为每秒最多 10,000 个 UDP 查询 (QPS)。有关配额和规模的更多信息,请参阅 Amazon Route 53 开发者指南。
为了实现冗余,至少需要两个 IP 地址,并且通常应部署在不同的可用区中。

创建解析器规则
1. 在 Route 53 控制台中,从左侧菜单中选择 “Rules”,然后选择 “Create rule”。
2. 为您的 Active Directory DNS 名称域(如 ad.example.com)创建一个转发规则。
3. 将应该从其中转发这些 DNS 查询的 VPC(prod、dev 和 shared services)关联起来。
4. 指定在上一步中创建的出站端点,该端点将接收并将 DNS 查询路由到您选择的 AD DNS 服务器的 IP 地址。

5. 指定每个可用区中 AD DNS 服务器的目标 IP 地址,用于转发查询。

6. 按照前面的步骤为相应的 in-addr.arpa 域创建第二个转发规则,以处理反向 DNS。由于您希望从 AD DS 为所有 10.0.0.0/8 和 2001:db8:: 反向区域提供服务,因此请使用 10.in-addr.arpa 和 8.b.d.0.1.0.0.2.ip6.arpa。
考虑到我们的 dev、prod 和 shared services VPC 的 CIDR 块分别为 10.0.0/16、10.0.1.0/16 和 10.2.0.0/16,因此 10.in-addr.arpa 域将比在 Route 53 中自动创建的反向区域更不具体,因此您需要在 Route 53 中为您的 VPC 禁用自动创建反向区域。这同样适用于您的 IPv6 域。



在 VPC 上禁用自动定义的反向 DNS 解析
1. 在 Route 53 控制台中,从左侧菜单中选择 “VPC”,然后选择每一个 VPC。
2. 滚动到页面底部并取消选中“在此 VPC 上启用自动定义的反向 DNS 解析” (“Enable autodefined reverse DNS resolution on this VPC”)。
这也可以通过编程方式完成,或者您可以使用 Route 53 配置文件在大规模环境中管理这些设置。您可以通过“网络与内容传递”板块的博文 在可扩展的多账户亚马逊云科技环境中使用 Amazon Route 53 配置文件 了解更多信息。

启用混合 DNS 解析
现在您已配置 Route 53 将 ad.example.com 域的 DNS 查询转发到 AD DS DNS 服务器,您需要确保直接使用 AD DS DNS 服务器进行 DNS 解析的系统(即运行在亚马逊云科技之外的系统)能够解析 Route 53 中的私有托管区查询 (aws.example.com)。您可以通过添加入站 Route 53 解析器端点并在 AD DS DNS 服务器上配置条件转发器来实现这一点。

创建入站解析器端点
1. 在 Route 53 控制台中,从左侧菜单中选择 “Inbound endpoints”,然后选择 “Create inbound endpoint”。
2. 选择 AD DS DNS 服务器所在的 VPC:“shared services”。
3. 选择将在其中创建端点的子网。为了实现高可用性,请在多个可用区中创建端点。入站端点的规格考虑因素与出站端点相同。
4. 选择或创建一个安全组,允许来自和发往 0.0.0/0 和 ::/0 的所有入站和出站流量。
5. 审核并创建入站端点。


更新本地 DNS 设置
1. 在 DNS Manager 控制台中,连接到 AD DS DNS 服务器。
2. 选择 “Conditional Forwarders”,然后从下拉菜单中选择 “New Conditional Forwarder”。
3. 输入要转发的域 (aws.example.com) 以及在上一节中创建的入站 Route 53 解析器端点的 IP 地址。
4. 选择 “Ok” 以保存条件转发器。

完成这些配置后,当客户端对 aws.example.com 区域中的记录执行 DNS 查找时,查询将按以下方式转发:
1. 客户端查询 AD DS DNS 服务器以获取 aws.example.com。
2. AD DS DNS 服务器具有指向 Route 53 入站端点的 aws.example.com 条件转发器。
3. Route 53 入站端点接收查询并对私有托管区进行解析。
4. 响应返回到 AD DS DNS 服务器,然后返回到客户端。
此设置允许加入 AD DS 的资源无缝解析 Route 53 中的私有托管区,无论 AD DS 环境是部署在亚马逊云科技中还是通过 Direct Connect 或 VPN 连接。Route 53 解析器规则和端点实现了 AD DS DNS 与云托管的 DNS 命名空间之间的灵活集成。
清理
将所有 VPC 与转发规则解除关联,确保每个规则都与其附加的每个 VPC 解除关联。在验证所有规则已解除关联后,请继续删除转发规则。在确认成功删除所有转发规则后,导航到解析器端点,将每个解析器端点与其关联的 VPC 解除关联。在解除关联过程完成后,逐个删除解析器端点。
总结
在本文中,我们探讨了使用 Amazon Route 53 解析器端点和规则,将本地或云托管的 AD DS DNS 基础设施与 Amazon Route 53 私有托管区集成的最佳实践。此集成允许在 AD DS 域加入的资源之间实现高效且可扩展的 DNS 解析和注册,无论这些资源是部署在亚马逊云科技中还是通过 Direct Connect 或 VPN 连接。本文中概述的解决方案减少了运营开销,并提供了比传统方法更高的可扩展性和可用性。