- 最新
- 投票最多
- 评论最多
【以下的回答经过翻译处理】 您提及的这个方案是可行的。为了理解这个方案背后的原理,我们需要一些DNS相关的背景知识来帮助您更好理解。
DNS是一个分层分布式数据库系统。在层次结构的顶部是顶级域名(TLD, Top level domain)。我们以example.com为例进行说明(如RFC2606中所述)。
.com是example.com的顶级域名。当客户端(比如您的Web浏览器)想要打开example.com时,它需要知道将请求发送到哪个地址。所以首先会是查询根服务器(Root servers),找出哪些名称服务器负责example.com。您可以使用dig命令查看这一点。我们先查找.com顶级域名的SOA(授权起始)记录。
$ dig com
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50969
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;com. IN A
;; AUTHORITY SECTION:
com. 900 IN SOA a.gtld-servers.net. nstld.verisign-grs.com. 1666967668 1800 900 604800 86400
上面的响应结果告诉我们a.gtld-servers.net是.com TLD的SOA授权起始。我们可以查询该主机,了解从哪台域名服务器可以查询example.com的信息。
$ dig @a.gtld-servers.net example.com
; <<>> DiG 9.10.6 <<>> @a.gtld-servers.net example.com
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43068
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 1
;; QUESTION SECTION:
;example.com. IN A
;; AUTHORITY SECTION:
example.com. 172800 IN NS a.iana-servers.net.
example.com. 172800 IN NS b.iana-servers.net.
上述结果显示a.iana-servers.net是example.com的名称服务器。这意味着example.com被根名称服务器(层次结构的顶端)委托给a.iana-servers.net名称服务器(NS字段显示这是一个NS记录)。如果我们想知道在哪里找到example.com,我们需要直接询问该名称服务器。
$ dig @a.iana-servers.net example.com
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58415
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; QUESTION SECTION:
;example.com. IN A
;; ANSWER SECTION:
example.com. 86400 IN A 93.184.216.34
现在我们得到了结果:example.com的IP地址是93.184.216.34。将名称指向IPv4地址的DNS记录被称为A记录。
如果example.com域名的所有者想要创建一个名为"test.example.com"的子域名,他们可以为这个子域名创建指向其他名称服务器的NS记录,来进一步委托。然后,您可以查询这些名称服务器,以找到test.example.com子域中主机的记录。
有了这个背景基础,我们现在可以看到它是如何与Route 53一起工作的。
假设您有两个账户:A账户和B账户。在A账户中,存在域名(example.com)。在B账户中,您想要配置子域名test.example.com。首先,您需要委托该域名。在B账户中,在Route 53中创建一个名为"test.example.com"的新托管区域。Route 53将自动为新的托管区域创建四个NS记录。之后,在A账户中委托该域名,创建一个新的NS记录。使用test.example.com作为名称,并输入Route 53给您的四个NS记录作为值。通过这种方式,您将test.example.com从A账户委托给B账户。
在成功委托了test.example.com后,您就可以在B账户中的Route 53中创建新的DNS记录了。您可以申请您的ACM证书,然后在Route 53中创建CNAME记录进行验证。因为test.example.com已经正确的委托了,ACM将能够查找到该CNAME记录,验证了您可以拥有该域名。验证完成后,ACM将颁发证书。
看起来有很多步骤,但我们可以使用CloudFormation或Terraform等工具实现整个过程的自动化。
如果您想深入了解DNS,建议您直接查阅RFC 1591。如果您倾向轻量化的阅读材料,AWS有一篇很好的关于这个主题的文章。
相关内容
- AWS 官方已更新 2 年前
- AWS 官方已更新 10 个月前
- AWS 官方已更新 3 年前
- AWS 官方已更新 2 年前