1

我正在尝试使用 DNS Python 在 SOA 中查找 FQDN。从那里,我试图隔离和提取 SOA 的 dns 服务器名称,但我无法找到正确的对象。

这就是我进行故障排除的地方。我觉得我可以接近 answer.response.additional,但它仍然不是独立服务器名称。

对此有何建议?谢谢!

代码:

        import dns.resolver

        FQDN = 'testhostname.awesomedomain.com'

        answer = dns.resolver.query(FQDN, 'SOA', raise_on_no_answer=False)
        
        if answer.rrset is None:
            print(answer.response.authority[0].to_text())
            soa_data = answer.response.authority[0].to_text()
        else:
            print(answer)
            soa_data = answer
        
        rr = answer.response.authority[0]
        print(f"RR is {rr}")
        print(f"DataType is {rr.rdtype}")
        print(f"DNS SOA Type is {dns.rdatatype.SOA}")
        print(f"Target 1 is {rr.target}")
        print(f"Target 2 is {answer.canonical_name}")
        print(f"Target 3 is {answer.qname}")
        print(f"Target 4 is {answer.rdclass}")
        print(f"Target 5 is {answer.response}")
        print(f"Target 6 is {answer.response.additional}")
        print(f"Target 7 is {answer.response.additional.name}")

4

1 回答 1

0

这是管理员如何从命令行获取信息的方法。希望它有所帮助,但您必须自己制作脚本。

步骤 1。查询您的 DNS 服务器(或您允许使用的任何递归DNS 服务器)以获取给定主机名的 A(IPv4,默认)或 AAAA (IPv6) 记录。在以下示例中,我使用了www.ibm.com.

CLI 命令:dig www.ibm.com.

答案(为简洁起见,删除了一些行)

;; QUESTION SECTION:
;www.ibm.com.                   IN      A

;; ANSWER SECTION:
www.ibm.com.            3599    IN      CNAME   www.ibm.com.cs186.net.
www.ibm.com.cs186.net.  43199   IN      CNAME   outer-ccdn-dual.ibmcom.edgekey.net.
outer-ccdn-dual.ibmcom.edgekey.net. 21600 IN CNAME outer-ccdn-dual.ibmcom.edgekey.net.globalredir.akadns.net.
outer-ccdn-dual.ibmcom.edgekey.net.globalredir.akadns.net. 900 IN CNAME e2874.dscx.akamaiedge.net.
e2874.dscx.akamaiedge.net. 20   IN      A       92.123.17.145

;; AUTHORITY SECTION:
dscx.akamaiedge.net.    4000    IN      NS      n2dscx.akamaiedge.net.
dscx.akamaiedge.net.    4000    IN      NS      n6dscx.akamaiedge.net.

;; ADDITIONAL SECTION:
n2dscx.akamaiedge.net.  4000    IN      A       23.212.110.6
n6dscx.akamaiedge.net.  4000    IN      A       2.23.97.125

我们看到,名称是别名等的别名 (CNAME),它解析为e2874.dscx.akamaiedge.net.FQDN。这次我们不关心IP地址。我们对 AUTHORITY SECTION 很感兴趣。有该 FQDN 所属的区域/域:dscx.akamaiedge.net..

第 2 步:现在从第 1 步请求域的 SOA 记录。

CLI 命令:dig -t soa dscx.akamaiedge.net.

;; QUESTION SECTION:
;dscx.akamaiedge.net.           IN      SOA

;; ANSWER SECTION:
dscx.akamaiedge.net.    1000    IN      SOA     n0dscx.akamaiedge.net. hostmaster.akamai.com. 1611089512 1000 1000 1000 1800

还有你的 SOA。

请注意,检索到的 SOA 恰好与ibm.com. 域的 SOA 不同,因为名称是别名。我希望我确实正确理解了您对您正在寻找的 SOA 的评论。

于 2021-01-19T21:01:22.480 回答