一、背景
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服务器解析时候跨境递归的频率。
四、参考文档
路由子域的流量:
Route 53的NS记录创建子域:
https://docs.aws.amazon.com/zh_cn/Route53/latest/DeveloperGuide/ResourceRecordTypes.html#NSFormat
全文完。