如何从根 DNS 服务器进行完整的 A 记录解析

如何从根 DNS 服务器进行完整的 A 记录解析

我有一个假设情况,但一直找不到真正的答案。假设我们有一台从未上网过的计算机。该计算机还处于没有提供 DNS 服务的网络上。让我们假设谷歌公共 DNS 之类的东西不存在。

现在我们假设这台计算机唯一拥有的是根 DNS 服务器的名称和解析地址,就像这样

现在这台计算机想知道 superuser.com 的 IP 地址。如果只拥有根服务器的 IP 地址,计算机如何查询根服务器以最终获得 superuser.com 的已解析 A 记录?

我尝试过,但总是会遇到一个需要使用我所知道的现有 DNS 服务器来解析 A 记录。例如,如果我打开命令提示符并开始尝试解析 google.ca(针对根服务器),我最终会得到:

服务方:
ns1.google.com
google.ca
ns2.google.com
google.ca

... 等等等等。所以基本上在这一点上,我必须解析 nsX.google.com 才能查询它以获取 google.ca 的 A 记录,但是,考虑到这种情况,我没有可以查询 nsX.google.com 地址的服务器。如果我尝试从根服务器解析 ns1.google.com,我最终会回到同一个地方。

简短版本:除了根服务器提供的信息外,我该如何解析域名的 A 记录而不使用任何其他信息?提前致谢。:)

答案1

你的情况一点也不罕见;每次启动一个功能齐全的递归解析器 - 例如 BIND9 或 Unbound,甚至是我在笔记本电脑上运行的副本 - 它都只从根区域“提示”列表开始,然后自行从那里下降。

(您说“想象一个没有 Google 公共 DNS 的世界”。有没有想过 Google 公共 DNS本身解析所有域名?

但对 DNS 查询的回复可能不仅仅是直接回答。具体来说,如果域的权威名称服务器同一个域名,那么它们的地址副本(又称粘合记录)也将由父域名保存。

com.因此,当您向名称服务器查询 时www.google.com,它们不仅会说它由 托管,还会在同一回复消息中ns1.google.com为您提供 的 IP 地址!ns1.google.com

事实上,你应该早就知道这一点了,使用com.顶级域名。当你查询根域名服务器时,它们会告诉你,所有的域名com.都托管在m.gtld-servers.net. 他们会给你它的 IP 地址。你可以自己看看根区域文件保存此信息。

例如:

$ dig@198.41.0.4 www.google.com. A
;; 操作码:QUERY,状态:NOERROR,id:61096
;; 标志: qr rd; 查询: 1,答案: 0,授权:13,附加:16

;; 问题部分:
;www.google.com。在

;; 权威部分:
com. 172800 IN NS m.gtld-servers.net。
com. 172800 IN NS l.gtld-servers.net。
com. 172800 IN NS k.gtld-servers.net。
...

;; 附加部分:
m.gtld-servers.net.172800 位于 192.55.83.30
l.gtld-servers.net.172800 位于 192.41.162.30
k.gtld-servers.net.172800 位于 192.52.178.30
...

继续使用其中一个com.名称服务器:

$ dig@192.55.83.30 www.google.com. A
;; 操作码:QUERY,状态:NOERROR,id:46406
;; 标志: qr rd; 查询: 1,答案: 0,权限:4,附加:5

;; 问题部分:
;www.google.com。在

;; 权威部分:
google.com。172800 IN NS ns2.google.com。
google.com。172800 IN NS ns1.google.com。
google.com。172800 IN NS ns3.google.com。
google.com。172800 IN NS ns4.google.com。

;; 附加部分:
ns2.google.com.172800 在 216.239.34.10
ns1.google.com.172800 IN A 216.239.32.10
ns3.google.com.172800 在 216.239.36.10
ns4.google.com.172800 在 216.239.38.10

继续使用其中一个google.com.名称服务器:

$ dig@216.239.34.10 www.google.com. A
;; 操作码:QUERY,状态:NOERROR,id:7744
;; 标志: qr氨基酸第 rd;查询:1,答案:5,权限:0, 附加:0

;; 问题部分:
;www.google.com。在

;; 答案部分:
www.google.com.300 IN A 173.194.32.50
www.google.com.300 IN A 173.194.32.49
www.google.com.300 IN A 173.194.32.52
www.google.com.300 IN A 173.194.32.48
www.google.com.300 IN A 173.194.32.51

aa我们最终收到了针对我们要求的同一名称的权威答复( )。

相关内容