如何测试委派的子域是否正确解析?
问题
简短描述
当您的顶级域有一个父区域(例如 **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 查找失败,则使用 dig 和 dig +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 查找失败的故障排除部分确定和修复失败的原因。
相关信息

相关内容
- 已提问 1 个月前lg...
- 已提问 4 个月前lg...
- 已提问 3 个月前lg...
- 已提问 4 个月前lg...
- 已提问 4 个月前lg...
- AWS 官方已更新 4 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 3 个月前
- AWS 官方已更新 2 年前