亚马逊AWS官方博客

基于 Route53 构建混合 DNS 系统

1、构建混合DNS的需求分析

混合云即融合了云资源和本地数据中心,是当前云计算发展过程中的一种模式和阶段,也是很多用户选择的一种业务部署方式。出于如信息保密、行业合规、市场细分等因素或考虑,有些企业更愿意将数据存放在本地数据中心,但是同时又希望可以获得云端的计算资源、网络资源。混合云在企业上云之初往往被广泛的采用。

真正的混合云不仅仅局限于用户数据中心和云端资源的私有网络互通,跨越用户本地网络和云端网络的统一域名解析也是混合云的重要一环。

为什么需要混合DNS系统

如图一所示,AWS为用户提供了DirectConnect、Site-to-Site VPN等服务帮助用户在本地数据中心和AWS之间建立私有网络连接,实现本地数据中心和AWS间流量的安全通信。为了服务的灵活性、弹性扩展等考虑,用户越来越多的使用域名方式实现服务间访问调用。正如我们了解的,AWS端使用Route53提供的私有域名系统实现AWS资源的域名解析,而用户本地数据中心往往自行维护私有的域名系统。两边的域名系统都已良好的为本端服务,但是相互独立,当涉及到两端服务互访调用时,却难以实现私有域名的解析。

图一 混合云场景示意

为了实现跨越AWS和本地数据中心的DNS混合解析,客户可以自行在AWS端搭建代理服务,负责在AWS Route53和本地数据中DNS服务器间转发DNS解析请求,如图二所示:

图二 客户自建混合DNS系统示意

这种方式下,用户在AWS端启动1台EC2作为DNS代理,并为代理配置转发规则:解析AWS端资源的请求转发到Route53,解析本地数据中心域名的请求转达本地NDS服务器。同时需要将AWS端资源DNS服务器指向到代理服务器,在本地DNS服务器中添加转发规则:将解析AWS端域名的请求转发到代理服务器。

从上面描述中不难看出,整套混合方案完全由用户自己维护。因此也带来了一些性能、可靠性的问题,同时维护整个方案的正常运转也给用户带来了巨大的工作量。

2、Route53 Resolver功能介绍

AWS 于 2018 年 11 月发布了针对混合云的 Amazon Route 53 Resolver。Route 53通过入站终端节点和出站终端节点实现DNS请求的转发,用户可以通过组合使用两种终端节点快速实现混合DNS系统。

2.1入站终端节点

入站终端节点可以看做是Route 53扩展到您指定的VPC中的一个或多个弹性网络接口,用于接收来自用户本地数据中心的DNS请求。

我们举个例子,用户在AWS云端拥有一个域名为cloud.acd.com的私有托管域,并在自己的VPC中配置了Route 53的两个入站终端节点:10.10.1.5和10.10.2.5。有了这两个终端节点地址后,用户可以在本地DNS服务器中配置规则,即请求cloud.acd.com域名的请求转到10.10.1.5或10.10.2.5。这样就实现了本地数据中心解析AWS端的私有域名。具体实现过程参见图三:

图三 Route 53入站终端节点示意

 

  • 本地数据中服务器发起一个DNS请求,解析cloud.acd.com,并将请求发送到本地DNS服务器
  • 本地数据中心DNS服务器识别出请求的域名为cloud.acd.com,根据规则转发给AWS入站终端节点10.10.1.5或10.10.2.5
  • DNS请求通过DirectConnect或Site-to-Site VPN达到入站终端节点,入站终端节点将请求转发给Route 53
  • Route 53解析到对应的IP,并将响应报文按照原路径返回

2.2出站终端节点

同理,出站终端节点也可以看做是Route 53扩展到您指定的VPC中的一个或多个弹性网络接口,Route 53可以通过出站终端节点将解析本地数据中心私有域名的请求转发到数据中心DNS服务器中。

还是以上一节中的场景,用户在本地数据中心DNS服务器中维护了internal.acd.com域名。并在VPC中配置了两个出站终端节点:10.10.1.10和10.10.2.10。这里可以在Route 53中配置转发规则:解析internal.acd.com的请求可以通过出站终端节点转到本地数据中心DNS服务器172.16.50.5或172.16.51.5.具体实现过程参加图四:

图四 出站终端节点示意

  • AWS云端EC2请求解析internal.acd.com,并将请求发送到云端DNS服务器Route 53
  • Route 53检查转发规则,发现解析域名为internal.acd.com,根据规则将请求通过出站终端节点发送到本地数据中心DNS服务器
  • 请求包经由DirectConnect或Site-to-Site VPN达到本地数据中心DNS服务器
  • 本地数据中心DNS服务器解析到响应的IP,并将响应宝按照原路径返回给EC2

 

3、配置示例及效果验证

1)在Route 53中配置入站终端节点,分别指定subnet-1和subnet-2,并指定IP地址10.1.5和10.10.2.5

2)配置出站终端节点,分别指定subnet-1和subnet-2,并指定IP地址10.1.10和10.10.2.10

3)配置转发规则,将解析域名internal.acd.com的请求通过出站终端节点转发到本地数据中心DNS服务器172.16.50.5和172.16.51.5


4)在本地数据中心DNS服务器中添加转发规则,将解析cloud.acd.com域名的请求转发到入站终端节点10.10.1.5和10.10.2.5

5)在本地数据中心服务器中测试ping test.cloud.acd.com,可以正常联通AWS端EC2

4、小结

本文重点介绍了Route 53 Resolver实现的技术原理,通过原理我们不难看出,相比较用户自己搭建代理的方式,使用Route 53 Resolver能够更加快捷的为用户构建混合DNS系统。同时,由于完全托管,用户不需要再为性能、扩展性和维护便利性担忧,可以把更多精力放在业务创新中。

 

本篇作者

张涛

AWS 解决方案架构师,AWS的云计算方案架构的咨询和设计,同时致力于AWS云服务在国内和全球的应用和推广。加入AWS之前曾就职于H3C、网易等公司,拥有丰富的企业IT信息化经验。