获取负责特定主机的DNS服务器列表的正确方法是什么?
我使用以下步骤:获取负责特定主机的DNS服务器列表的正确方法是什么?,dns,cname,Dns,Cname,我使用以下步骤: 查询主机的记录,一些服务器在authority部分返回NS记录,所以我从该部分提取它们(如果有的话) 查询NS记录,从答案部分提取 问题在于“子域”(CNAME),例如: >挖掘www.microsoft.com A ;; ANSWER SECTION: www.microsoft.com. 696 IN CNAME toggle.www.ms.akadns.net. toggle.www.ms.akadns.net. 119 IN
>挖掘www.microsoft.com A
;; ANSWER SECTION:
www.microsoft.com. 696 IN CNAME toggle.www.ms.akadns.net.
toggle.www.ms.akadns.net. 119 IN CNAME g.www.ms.akadns.net.
g.www.ms.akadns.net. 263 IN CNAME lb1.www.ms.akadns.net.
lb1.www.ms.akadns.net. 31 IN A 65.55.12.249
>挖掘www.microsoft.com NS
;; ANSWER SECTION:
www.microsoft.com. 619 IN CNAME toggle.www.ms.akadns.net.
toggle.www.ms.akadns.net. 42 IN CNAME g.www.ms.akadns.net.
g.www.ms.akadns.net. 186 IN CNAME lb1.www.ms.akadns.net.
;; AUTHORITY SECTION:
akadns.net. 174 IN SOA internal.akadns.net. hostmaster.akamai.com. 1304057105 90000 90000 90000 180
;; AUTHORITY SECTION:
akadns.net. 176 IN SOA internal.akadns.net. hostmaster.akamai.com. 1304057402 90000 90000 90000 180
>dig lb1.www.ms.akadns.net A
;; ANSWER SECTION:
lb1.www.ms.akadns.net. 79 IN A 65.55.12.249
>dig lb1.www.ms.akadns.net NS
;; ANSWER SECTION:
www.microsoft.com. 619 IN CNAME toggle.www.ms.akadns.net.
toggle.www.ms.akadns.net. 42 IN CNAME g.www.ms.akadns.net.
g.www.ms.akadns.net. 186 IN CNAME lb1.www.ms.akadns.net.
;; AUTHORITY SECTION:
akadns.net. 174 IN SOA internal.akadns.net. hostmaster.akamai.com. 1304057105 90000 90000 90000 180
;; AUTHORITY SECTION:
akadns.net. 176 IN SOA internal.akadns.net. hostmaster.akamai.com. 1304057402 90000 90000 90000 180
如您所见,没有返回NS记录。如何克服这个问题?你的算法错了。这是正确的 对于目标域名
T
的每个连续较短的超域S
,从T
本身开始:
S
上执行NS
查找。如果答案不是非空的资源记录集,请转至步骤3。否则,您将拥有一组中间域名D[]
D[]中的每个名称执行A
和AAAA
查找。这将为您提供一组IP地址。你有你的答案结束
S
上执行SOA
查找。如果答案是一个非空的资源记录集,那么您将要跨越一个管理边界,因为迄今为止没有发现任何非空的NS
资源记录集。您可以根据您想要了解的内容选择“异常终止”请记住,您必须对自己的DNS服务器进行查询,而不是对外部内容DNS服务器进行查询,以便获得一个而不是部分内容DNS服务器。还要记住,在检查响应时,必须遵循
CNAME
链。对的响应请访问www.microsoft.com。例如,上面的NS
查询是一个CNAME
链,导致lb1.www.ms.akadns.net的NS
资源记录集为空。
谢谢!已经采用了类似的算法,但现在我知道如何正确地进行。