获取负责特定主机的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

我使用以下步骤:

  • 查询主机的记录,一些服务器在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      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
    资源记录集为空。

    谢谢!已经采用了类似的算法,但现在我知道如何正确地进行。