我尝试获取 TLD 的名称服务器com
,这是启用时的成功输出dnscrypt-proxy
,执行的命令是dig com. ns
:
挖掘成功
结果如下dig @a.root-servers.net com. ns
:
挖掘无答案部分
这是使用在线挖掘界面的输出,命令是dig NS +noadditional +noquestion +nocomments +nocmd +nostats com. @a.root-servers.net
关联
;; Truncated, retrying in TCP mode.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
在线挖掘界面告诉我可以a.root
给我一个答案,但我无法在我的系统中复制它。
答案1
根据您所展示的意外结果,我感觉您正在dig
一个没有“干净”的网络路径的环境中运行,该路径允许您将 DNS 查询发送到任何您想要的地方;某些东西会拦截并处理查询。
您的dig
输出(如下所述)使我根据以下发现得出上述结论:
; <<>> DiG 9.18.1-1-Debian <<>> @a.root-servers.net com. ns
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50284
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;com. IN NS
;; Query time: 12 msec
;; SERVER: 2001:503:ba3e::2:30#53(a.root-servers.net) (UDP)
;; WHEN: Wed Jun 15 18:15:11 WIB 2022
;; MSG SIZE rcvd: 32
正如您在问题中提到的那样,人们本应在针对其中一个根服务器的此查询部分中看到
com
委托记录。但不知何故,您的环境中并非如此。NS
AUTHORITY
根服务器肯定不提供递归服务,但你仍然会收到以下响应
ra
(可用递归) 标志已设置。查询显然是发送到地址
2001:503:ba3e::2:30
(即 的 IP 地址a.root-servers.net
),但上述行为与根服务器的行为不符。这让我得出这样的结论:在您的网络中,其他东西会拦截并回答此类查询。
您可能想要尝试以下查询:
dig @a.root-servers.net version.bind CH TXT
dig @a.root-servers.net id.server CH TXT
哪个可能给出一些提示,说明实际答案是什么。