如何将子域名的权限委托给AWS Route53私有托管区?
我来帮你捋清楚实现这个需求的具体步骤和关键注意事项,刚好之前处理过类似的场景,完全符合你提到的「仅允许用Route53私有区、不用给每个工作站配置DNS、连不上VPC时解析失败也接受」的要求:
第一步:创建对应的Route53私有托管区
打开AWS Route53控制台,创建一个以你要委托的子域为名称的私有托管区(比如你要托管dev.yourcompany.com,就用这个域名创建)。创建时一定要关联所有需要访问这个子域的VPC——如果有多个VPC都需要解析这个子域,记得全部选上。第二步:在公域DNS托管区添加NS记录委托权限
找到管理你的主域名(比如yourcompany.com)的公域DNS托管区(不管是Route53公域区还是其他第三方DNS服务商),添加一条NS记录:- 记录名称填你的子域(比如
dev) - 记录值填你刚创建的Route53私有托管区的NS服务器地址(在Route53私有区的详情页面里能看到4个左右的NS地址,全部填进去)
- 注意:别选别名记录,就用普通的NS记录类型
- 记录名称填你的子域(比如
关键逻辑说明
Route53私有托管区的NS地址默认是不会被公网解析到的——只有当请求来自关联的VPC内部,或者通过VPN、VPC对等连接等能接入该VPC的网络环境时,DNS请求才会被Route53私有区处理。
对于不在公司网络的移动工作站,当他们请求子域时,公域DNS会返回私有区的NS地址,但这些NS地址在公网不可达,所以解析会失败,这正好符合你预期的「能连VPC时正常解析,连不上就失败」的效果。额外注意点
如果你的工作站是通过AWS VPN/Direct Connect连接公司VPC的,只要他们的DNS设置是指向VPC默认DNS服务器(或者能转发DNS请求到VPC DNS的内部服务器),就能正常解析这个私有子域;不用单独给每个工作站配置特殊的DNS服务器。
备注:内容来源于stack exchange,提问作者flickerfly

