如何测试委派的子域是否正确解析?

3 分钟阅读
0

问题

简短描述

当您的顶级域有一个父区域(例如 **example.com)**配置了 Amazon Route 53 或第三方 DNS 提供商,您可以通过 Route 53 或第三方 DNS 提供商为子域设置委派集(例如 www.example.com)。

如果您对子域使用单独的委派集,则可以具有以下配置:

  • 使用 Route 53 的一个顶级域和一个子域
  • 一个使用第三方 DNS 服务的顶级域和一个使用 Route 53 的子域
  • 一个使用 Route 53 的顶级域和一个委派给第三方 DNS 服务的子域

解决方法

按照您的配置的解决方法执行。

使用 Route 53 的一个顶级域和一个子域

1.    使用命令 dig +trace 检查您的子域是否正确解析。

2.    确保您在子域的托管区域下有您选择的记录类型。对于此测试用例,在子域区域下有 www.example.com 的 A 记录。记下要针对所需记录类型进行 dig 的输出:

dig <record type> <desired subdomain record>

示例输出:

$ dig www.example.com
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48170
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.example.com.                IN         A
;; ANSWER SECTION:
www.example.com.     60          IN         A          127.0.0.1

3.    如果 DNS 查找失败,则使用 digdig +trace 输出沿着 DNS 链确定查找在哪里失败。

示例输出:

$dig +trace www.example.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.56.amzn1 <<>> +trace www.example.com
;; global options: +cmd
.                                   518400 IN         NS        G.ROOT-SERVERS.NET.
.....
.                                   518400 IN         NS        F.ROOT-SERVERS.NET.
;; Received 228 bytes from 169.xxx.xxx.xxx#53(169.xxx.xxx.xxx) in 21 ms
com.                            172800 IN         NS        c.gtld-servers.net.
.....
com.                            172800 IN         NS        i.gtld-servers.net.
;; Received 498 bytes from 199.xxx.xxx.xxx #53(199.xxx.xxx.xxx) in 198 ms
.example.com.   172800          IN         NS        ns-xxx.awsdns-xx.com.
.example.com.   172800          IN         NS        ns-xxx.awsdns-xx.net.
.example.com.   172800          IN         NS        ns-xxx.awsdns-xx.co.uk.
.example.com.   172800          IN         NS        ns-xxx.awsdns-xx.org.
;; Received 207 bytes from 192.xxx.xxx.xxx #53(192.xxx.xxx.xxx) in 498 ms
www.example.com.     172800 IN         NS        ns-xxx.awsdns-xx.com.
www.example.com.     172800 IN         NS        ns-xxx.awsdns-xx.net.
www.example.com.     172800 IN         NS        ns-xxx.awsdns-xx.co.uk.
www.example.com.     172800 IN         NS        ns-xxx.awsdns-xx.org.
;; Received 175 bytes from 205.xxx.xxx.xxx #53(205.xxx.xxx.xxx) in 345 ms
www.example.com.     900      IN         SOA      ns-xxx.awsdns-xx.com. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400
$ dig www.example.com.com
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22072
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
www.example.com.com.          IN         A
;; AUTHORITY SECTION:
www.example.com.com. 60       IN         SOA      ns-xxx.awsdns-xx.com. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400

4.    检查输出以确定失败原因:

dig 返回 NOERROR 状态,但不含 ANSWER 部分,dig +trace 输出仅包含顶级域的名称服务器:

您的委派子域的 NS 记录在您的顶级域的托管区域中缺失。此外,根域下的子域的记录类型(例如,MX 记录而不是 A 记录)是错误的。在顶级域的托管区域下使用正确的名称服务器为您的子域创建 NS 记录。

在顶级域的托管区域下删除子域的非 NS 记录。然后,在子域的托管区域下放置非 NS 记录。

dig 返回 NXDOMAIN 状态,dig +trace 输出仅包含顶级域的名称服务器:

您的委派子域的 NS 记录在您的顶级域的托管区域下缺失。

在顶级域的托管区域下使用正确的名称服务器创建 NS 记录。

dig +trace 返回委派的子域的名称服务器,而 dig 返回 NOERROR 状态,但不含 ANSWER 部分:

托管区域包含您的委派子域的错误类型的记录。在子域的托管区域下存在一个 TXT 记录,而不是您的子域的 A 记录。

在子域的托管区域下为委派的子域创建新的 A 记录。

dig +trace 返回委派子域的名称服务器,但 dig 返回错误“连接超时;无法访问服务器”:

在您的顶级域的托管区域下,您的委派子域的 NS 记录中的 Route 53 名称服务器不正确。使用 dig @ 命令对照委派子域的名称服务器之一确认 DNS 查找发生此问题。不正确的名称服务器返回 REFUSED 状态。

使用正确的名称服务器为您的子域的托管区域修改 NS 记录。

5.    如果对照其他 DNS 服务器的查找成功,则本地冲突解决程序可能存在缓存问题。

dig @ 命令与另一个解析程序以及您的域名一起使用来绕过本地解析程序。例如,此查找使用 Google 的公有解析程序:

dig @8.8.8.8 www.example.com 

直接对照顶级域的托管区域的权威 AWS 名称服务器之一执行查找:

dig @ns-***.awsdns-**.com www.example.com

一个使用第三方 DNS 服务的顶级域和一个使用 Route 53 的子域

1.    确认子域的名称服务器是否在父区域中正确配置。

2.    如果不正确,请查找您的子域的托管区域的 NS 记录,然后使用第三方 DNS 提供程序将它们添加到顶级域的托管区域或区域文件中。

3.    使用 dig @ 确保子域使用其托管区域名称服务器之一进行解析**:**

dig @ns-***.awsdns-**.com www.example.com

注意:如果 DNS 解析失败,请参阅DNS 查找失败的故障排除部分确定和修复失败的原因。

一个使用 Route 53 的顶级域和一个委派给第三方的子域

1.    确认子域的名称服务器是否在父区域中正确配置。

2.    如果不正确,请在 Route 53 的顶级域的托管区域下添加 NS 记录

3.    将 dig @ 与您的第三方 DNS 服务的权威名称服务器一起使用来确保子域正确解析:

dig @<Third party Name Server assigned for www.example.com> www.example.com

注意:如果 DNS 解析失败,请参阅DNS 查找失败的故障排除部分确定和修复失败的原因。

相关信息

如何为通过 Amazon Route 53 托管的域创建子域?

AWS 官方
AWS 官方已更新 5 年前