通过子域名授权的方式实现海外和国内分别使用Route53服务解析的方案

一、背景

1、使用单一域名按国家解析的挑战

有的客户希望在国内和海外采用单一域名运行,例如将域名部署在AWS全球的Route53服务上,并设置按照不同国家解析到不同Region的记录。此时,由于域名解析完全位于海外的DNS,国内的解析效果可能较差,存在解析不出来、同步延迟大等问题。如果由此将域名解析完全部署在中国区的Route53服务上,对国内用户体验良好,但是对海外用户又有解析失败概率提高的可能。

由此可采取授权子域名解析的办法。请看如下详细解释。

2、授权子域名解析

假设顶级域名是abc.com,那么可以将顶级域名的解析部署在AWS海外Route53服务商。然后,创建子域cn.abc.com,将子域的解析配置在AWS中国区Route53服务上进行解析。

在此场景下,海外Route53和国内Route53的配置zone是完全独立的,二者不需要相互同步自域名配置,只是子域名授权额关系。

3、原理说明

请参考如下思维导图。

接下来我们来验证这个配置。

二、配置验证

1、在海外托管顶级域名

首先正常的配置一个海外域名,托管到海外的Route53上。这个过程略。

2、在中国区Route53创建Zone并且获得NS记录

接下来在中国区Route53创建一个Zone文件,并获得6个NS记录。如下截图。

由此即可获得中国区Route53为子域名cn.abc.com生成的NS记录。将其复制下来,接下来去海外区域配置。

3、海外顶级域名的zone下增加子域名授权

进入海外区域Route53,找到顶级域名abc.com对应的zone,然后在其中增加新的解析记录,输入子域名是cn,类型是NS,然后粘贴中国区生成出来的6个NS地址。如下截图。

配置海外区域完成。

三、海外和国内分别解析测试

1、海外顶级域名的解析测试

在海外Route53的顶级域名的zone下,增加解析记录,例如blog.abc.com。然后在全球任意一个地方测试解析结果是否正确。测试结果如下截图。

从以上截图中可以看出,响应blog.abc.com解析的是海外Route53的4个DNS服务器。由此表示顶级域名下的子域名解析在海外Route53上完成。

2、国内子域名的解析测试

在国内Route53的子域名zone下,增加解析记录,例如demo1.cn.abc.com,然后在全球任意一个地方测试解析结果是否正确。

从以上截图中可以看出,响应demo1.cn.abc.com解析的是中国区Route53的6个DNS服务器。由此表示顶级域名下的子域名解析在中国区Route53上完成。

3、进一步优化解析

当海外和国内都测试正常后,为了进一步优化解析,可以将海外Route53上子域名NS记录的TTL有效期从创建记录时候Route53默认的300秒,修改为1天。由此可进一步降低DNS服务器解析时候跨境递归的频率。

四、参考文档

路由子域的流量:

https://docs.aws.amazon.com/zh_cn/Route53/latest/DeveloperGuide/dns-routing-traffic-for-subdomains.html

Route 53的NS记录创建子域:

https://docs.aws.amazon.com/zh_cn/Route53/latest/DeveloperGuide/ResourceRecordTypes.html#NSFormat

全文完。