亚马逊AWS官方博客
基于Amazon Route 53多区域混合 DNS 部署最佳实践
DNS 可为互联网提供域名解析服务,对任何网络应用都十分关键。无论是部署于企业的私有云、公有云还是混合云环境下的 IT 基础设施,通常都会依赖 DNS 记录来完成服务之间或对外的访问。在一个完整的混合云环境中,不仅需要考虑网络层的连通性、可用性等,还需要满足应用在混合云环境下的 DNS 解析需求。
本文将针对一个典型的企业级混合 DNS 环境进行分析,并分别介绍在亚马逊云科技单区域和多区域的场景下使用 Amazon Route 53 构建混合 DNS 部署的最佳实践架构。
混合云场景下的 DNS 解析需求
在传统企业级数据中心 DNS 架构中,从安全角度通常会有以下要求:
- 通常采用水平分割(split-horizon)DNS 模式进行部署,即内网和公网均使用同一个域名(例如 example.com),但返回不同的解析结果。其中公网 DNS 系统位于互联网,负责数据中心服务(例如www.example.com)正常对外解析,此时返回公网IP 地址。而内部 DNS 系统承担两项工作,除了对数据中心服务(例如 www.example.com)提供解析服务并返回私网 IP 地址,另一工作是负责当内部服务要查询公网域名时,其把查询任务转发到公网的 DNS 服务器,然后由公网 DNS 服务器完成查询任务。由于把 DNS 系统分内外两部分,互联网上用户只能看到公网 DNS 系统中的服务器,而看不见内部的服务器,而且只有内外 DNS 服务器之间交换 DNS 查询信息,从而保证了系统的安全性。
- 所有 DNS 解析记录能够集中存储进行查询,并能够通过策略阻止或允许针对特定域名的查询。在单数据中心的网络环境里,管理员可将所有服务器的 DNS 地址指向数据中心 DNS 服务器来进行统一的日志收集和策略控制。在多云的环境里,通常会优先考虑使用云原生的 DNS 防火墙产品来进行安全控制。截止本文发布之时, 亚马逊云科技的 Route 53 DNS 防火墙产品在中国区还不可用,为了满足安全需求,往往考虑将云上的 DNS 解析请求统一转发至数据中心 DNS 服务器完成控制和解析。
当从私有数据中心扩展至混合云环境时,除了数据中心已经存在的 DNS 系统,还需充分考虑云上 DNS 系统特点,来设计安全、可靠的混合 DNS 环境:
- 数据中心和云上应用如何以一种安全的方式访问云上服务域名(例如:亚马逊云科技 S3/SNS/SQS 等服务以 amazonaws.com.cn 后缀结尾的域名)。
- 云上托管私有域名(Route 53 私有托管区域)如何能够正确解析。
- 数据中心和云上的 DNS 信息如何进行交互,并相互解析。
- 跨 VPC 如何实现 DNS 解析的一致性。
基于以上分析结果,分别从数据中心和云上两个角度分析混合云环境下对于 DNS 解析的具体需求。
数据中心视角:数据中心服务器对于 DNS 解析的需求
图一:数据中心服务器的 DNS 解析
如图一所示,位于数据中心的服务器1,需要通过 DNS 实现以下多种类型域名的正确解析:
- 公共域名(例如 www.amazon.com):对于公共域名的解析,统一由数据中心 DNS 服务器负责将 DNS 解析请求转发给外部 DNS 服务器 (例如 8.8.8.8)完成解析,以满足企业内部针对 DNS 的安全需求。
- 公司对外域名(例如 www.example.com):对于采用水平分割(split-horizon)DNS 架构的企业,此类域名应直接通过数据中心 DNS 服务器进行解析,并返回服务对内私网 IP 地址。
- 亚马逊云科技服务域名(以 amazonaws.com.cn 后缀结尾域名地址):亚马逊云科技服务域名默认解析为公网 IP,出于安全需求,需要考虑以私有网络的方式访问云上资源,为了实现这种目标需要使用对应服务的 VPC 接口类型终端节点。当服务器1访问云上的托管服务资源时(例如 S3,SNS,SQS 等)可通过解析为内网的亚马逊云科技原生服务终端节点实现云上服务资源的访问。
- Route 53 私有托管区域(PHZ)域名(例如 server2.dev.awscloud.example):PHZ 用于托管云上服务器的私有域名,因此服务器1需要能够解析所有 PHZ 中托管的域名,并返回相对应的私有 IP 地址。
- 数据中心私有 DNS 域名(例如 server1.example.com):数据中心内的 DNS 域名将由数据中心的 DNS 服务器直接进行解析,并返回相对应的私有 IP 地址。
云上视角:云中应用服务器对于 DNS 解析的需求
图二:云上服务器的 DNS 解析
如图二所示,为了满足云上服务器2 的 DNS 的解析需求,需要能够正确解析以下域名:
- 公共域名(例如 www.amazon.com):对于公共域名的解析,需要将 DNS 解析请求统一转发至数据中心 DNS 服务完成解析,以满足企业内部针对 DNS 的安全需求。
- 公司对外域名(例如 www.example.com):对于采用水平分割(split-horizon)DNS 架构的企业,此类域名应通过内网进行访问。由于服务器2位于云上 VPC 私有网络,需要统一将解析请求转发至内网 DNS 服务器进行解析,并返回服务对内私网 IP 地址。
- 数据中心私有 DNS 域名(例如 server1.example.com):由于服务器1部署在数据中心,相对应域名也托管在数据中心 DNS 服务器。此场景下的解析请求,将由转发至数据中心 DNS 服务器完成解析,并返回服务器私网 IP 地址。
- 亚马逊云科技服务域名(以 amazonaws.com.cn后缀结尾域名地址):当服务器2需要访问云上的托管服务资源时(例如 S3,SNS,SQS 等),由于安全需求,不允许通过公网直接进行访问。此场景下需要通过 VPC 的私有 DNS 完成解析,并返回对应的私有 IP 进行访问。
- Route 53 私有托管区域(PHZ)域名(例如 server2.dev.awscloud.example):PHZ 用于托管云上服务器的私有域名,服务器2需要能够解析所有 PHZ 中托管的域名,并返回相对应的私有 IP 地址。
部署架构
DNS 的解析离不开基础网络架构的支撑,一个完善的DNS 方案通常需要结合实际的网络架构进行设计。以下是基于亚马逊云科技典型的网络部署场景,分别介绍在单区域和多区域的环境里设计满足以上 DNS 解析需求的混合 DNS 部署方案。
网络环境
- 多 VPC 部署架构:在实际的业务场景中,由于 VPC 可以提供更好的隔离性,企业通常采用多 VPC 的部署模式将云上工作负载进行隔离,并通过亚马逊云科技中转网关服务(Transit Gateway)来提供 VPC 之间互联能力,简化多 VPC 网络的连接和管理。此部分详细内容可参考 [3]。
- 集中式 VPC 接口终端节点:同时为了提高网络安全性并简化针对 VPC 接口终端节点的管理,一般采用集中 VPC 接口终端节点的部署模式,将区域所需要的 VPC 接口终端节点(例如 SNS、SQS 等)集中部署在 “共享服务 VPC”中。在这样的混合网络中,任何客户端(无论是位于数据中心还是云上)访问位于北京区域的亚马逊云科技托管的服务(例如 SNS、SQS),都会通过集中部署的 VPC 接口终端节点从内部网络进行安全的访问,提高网络安全性,此部分详细内容可参考 [2]。网关终端节点不在本文范围之内,您可参考 [7] 进一步了解。
- 分布式解析 Route 53 私有托管区域:Route 53 私有托管区域(包括用户自定义的 PHZ dev.awscloud.example 和 qa.awscloud.example,以及为 VPC 接口终端节点创建的 PHZ)用来托管云上服务的私有域名,并与所有 VPC 进行关联避免 DNS 多次转发,使云上服务器能直接通过 VPC 内的 DNS 进行解析。
- 集中式 Route 53 Resolver 入站终端节点和出站终端节点: 通常每个亚马逊云科技区域,只需要一套 Route 53 Resolver 入站终端节点和出站终端节点(位于“共享服务 VPC“),用来和数据中心 DNS 服务器相互转发 DNS 查询信息。
单区域的混合 DNS 方案
通过Route 53 Resolver 能够创建规则来控制 VPC 内的 DNS 查询。为了满足上述定义的企业级 DNS 安全需求,需创建三条自定义 Route 53 Resolver 规则,同样也需要关联所有 VPC,确保其作用在各个 VPC 内的 DNS。这三条规则将共同作用决定哪些 DNS 解析请求转发到数据中心 DNS 服务器,哪些 DNS 解析请求由 Route 53 Resolver 直接进行解析。
- awscloud.example:根据 Route 53 Resolver 规则最长匹配原则,该条系统规则将优先于 “.” (图中所示的条件转发规则)。从而确保针对 Route 53 私有托管区域(dev.awscloud.example 和 qa.awscloud.example)域名的解析请求,由 Route 53 Resolver 服务完成对 PHZ 域名的解析。
- amazonaws.com.cn:根据 Route 53 Resolver 规则最长匹配原则,该条系统规则将优先于 “.” (图中所示的条件转发规则)。从而确保针对亚马逊云科技服务的域名(图示中的 SNS 和 SQS),由 Route 53 Resolver 解析成对应的 VPC 接口终端节点的私有 IP。
- . (点):根据 Route 53 Resolver 规则最长匹配原则,该条件转发规则优先级最低。该条规则确保针对以上其他域名的解析,将转发给数据中心 DNS 完成。
以下是单区域混合 DNS 部署架构:
图三:单区域混合 DNS 部署架构
上述部署架构能够满足前面章节提到的混合 DNS 解析需求,其关键服务的 DNS 解析路径如下:
- 数据中心服务器 server1 解析 app2.dev.awscloud.example:数据中心 DNS 服务器 → Route 53 Resolver 入站终端节点 → 由 Route 53 Resolver 在 PHZ 中解析查到记录并返回 app2 私有 IP。
- 数据中心服务器 server1 解析 sns---cn-north-1.amazonaws.com.rproxy.goskope.com.cn:数据中心 DNS 服务器 → Route 53 Resolver 入站终端节点 → 由 Route 53 Resolver 在 PHZ 中解析查到记录并返回 SNS VPC 接口终端节点私有 IP。
- 云上服务器 app2 解析 app3.qa.awscloud.example:Spoke VPC 2 的 Amazon DNS 服务器 → 由 Route 53 Resolver 在 PHZ 中解析查到记录并返回 app3 私有 IP。
- 云上服务器 app2 解析sns---cn-north-1.amazonaws.com.rproxy.goskope.com.cn:Spoke VPC 2 的 Amazon DNS 服务器 → 由 Route 53 Resolver 在 PHZ 中解析查到记录并返回 SNS VPC 接口终端节点私有 IP。
- 云上服务器 app2 解析www.amazon.com:Spoke VPC 2 的Amazon DNS 服务器 → 由 Route 53 Resolver 根据现有规则,匹配 .(点)条件转发规则 → Route 53 出站终端节点 → 数据中心 DNS 服务器完成解析并返回对应公网 IP。
- 云上服务器 app2 解析 www.example.com:Spoke VPC 2 的 Amazon DNS 服务器 → 由 Route 53 Resolver 根据现有规则,匹配 .(点)条件转发规则 → Route 53 出站终端节点 → 数据中心 DNS 服务器完成解析并返回私网 IP。
- 云上服务器 app2 解析 server1.example.com:Spoke VPC 2 的 Amazon DNS 服务器 → 由 Route 53 Resolver 根据现有规则,匹配 .(点)条件转发规则 → Route 53 出站终端节点 → 数据中心 DNS 服务器完成解析并返回私网 IP。
多区域的混合 DNS 方案
从单区域混合 DNS 环境扩展至亚马逊云科技多个区域时,在相同的 DNS 安全需求下,需要结合 Route 53 相关服务的区域属性,对混合 DNS 环境做进一步升级,以满足多区域网络环境的要求:
- Route 53 私有托管区域(PHZ)是没有区域属性的服务。在多区域的环境下,需要确保现有 PHZ 关联至新扩展区域的所有 VPC。
- Route 53 Resolver 服务是有区域属性的服务,其中包括 Route 53 Resolver 规则、入站终端节点及出站终端节点等 Route 53 Resolver 相关服务。
- 针对 Route 53 Resolver 规则,需要在新增区域部署同样的一套规则,并关联至新增区域所有的 VPC。
- 针对 Route 53 Resolver 出站终端节点,由于其需要与新增区域 Route 53 Resolver 条件转发规则相关联,因此也需要在新增区域部署。
- 针对 Route 53 Resolver 入站终端节点,此架构下其主要用于接收数据中心 DNS 转发过来的 DNS 请求,通过北京区域的入站终端节点已经可以进行正常解析查询。因此可以选择性的在新增区域部署,以提高整体网络的冗余度。
- VPC 和 VPC Endpoint是有区域属性的服务。通过区域内的 VPC 接口终端节点,只能访问该区域所在的亚马逊云科技服务终端节点。因此在新增区域中,需要部署对应的 VPC 接口终端节点;同时考虑跨区域访问的需求,还需考虑网络的联通性,确保跨区域的访问请求能正常路由至对端区域的 VPC 接口终端节点。关于跨区域的网络联通,可以通过 VPC 对等连接或者中转网关实现,详细可参考 [2]。
以下是从单区域扩展至多区域混合 DNS 部署架构:
图四:多区域混合 DNS 部署架构
图四是扩展至亚马逊云科技两个区域之后的混合 DNS 部署架构图,上述单区域下的 DNS 解析路径仍保持不变,针对新增区域(宁夏区域)内的资源,相关的 DNS 解析路径为:
- 数据中心服务器 server1 解析 sns---cn-northwest-1.amazonaws.com.rproxy.goskope.com.cn:数据中心 DNS 服务器 → (北京区域)Route 53 Resolver 入站终端节点 → 由 Route 53 Resolver 在 PHZ 中解析查到记录并返回部署于宁夏区域的 SNS VPC 接口终端节点私有 IP。
- 云上服务器 app2 解析 sns---cn-northwest-1.amazonaws.com.rproxy.goskope.com.cn:(北京区域)Spoke VPC 2 的 Amazon DNS 服务器 → 由 Route 53 Resolver 在 PHZ 中解析查到记录并返回部署于宁夏区域的 SNS VPC 接口终端节点私有 IP。
- 云上服务器 app5 解析 server1.example.com:(宁夏区域)Spoke VPC 5 的 Amazon DNS 服务器 → 由 Route 53 Resolver 根据现有规则,匹配 .(点)条件转发规则 → (宁夏区域)Route 53 出站终端节点 → 数据中心 DNS 服务器完成解析并返回私网 IP。
总结
以上针对一个典型的混合 DNS 用户场景,介绍了企业级混合 DNS 环境的功能、安全方面的需求。并结合亚马逊云科技 Route 53 Resolver 的入站终端节点、出站终端节点、系统规则、条件转发规则以及私有托管区域等功能,详细介绍了单区域、多区域下部署的典型架构。
如您需要详细了解亚马逊云科技 Route 53 相关组件功能,来进一步提升您的混合 DNS 环境的扩展、安全等能力,您还可参考以下文档继续阅读:
- [1]: Route 53 介绍:https://docs.aws.amazon.com/zh_cn/Route53/latest/DeveloperGuide/Welcome.html
- [2]: 集中式VPC 接口终端节点部署:https://docs.aws.amazon.com/zh_cn/whitepapers/latest/building-scalable-secure-multi-vpc-network-infrastructure/centralized-access-to-vpc-private-endpoints.html
- [3]: 多VPC 网络架构:https://docs.aws.amazon.com/whitepapers/latest/building-scalable-secure-multi-vpc-network-infrastructure/transit-gateway.html
- [4]: 使用Route 53 Resolver 简化多账户环境下 DNS 的管理:https://aws.amazon.com/blogs/security/simplify-dns-management-in-a-multiaccount-environment-with-route-53-resolver/
- [6]: 基于Route 53 和中转网关的混合云环境下的集中式 DNS 管理:https://aws.amazon.com/blogs/networking-and-content-delivery/centralized-dns-management-of-hybrid-cloud-with-amazon-route-53-and-aws-transit-gateway/
- [7]: 如何选择访问Amazon S3 的终端节点策略https://aws.amazon.com/blogs/architecture/choosing-your-vpc-endpoint-strategy-for-amazon-s3/