1
#code like this
import dns
import dns.resolver
import dns.name
import dns.message
import dns.query

request = dns.message.make_query("google.com",dns.rdatatype.NS)
response = dns.query.udp(request,"216.239.32.10")
print response.authority

但它是空的

然后在使用“nslookup google.com 216.239.32.10”时

可以得到

服务器:216.239.32.10 地址:216.239.32.10#53

名称:google.com 地址:216.58.221.238 明明是权威回答,为什么我使用dnspython时获取不到权威部分?

4

2 回答 2

1

你确定吗?

c:\srv>nslookup google.com 216.239.32.10
Server:  ns1.google.com
Address:  216.239.32.10

Name:    google.com
Addresses:  2a00:1450:400f:805::200e
          178.74.30.16
          178.74.30.49
          178.74.30.37
          178.74.30.24
          178.74.30.26
          178.74.30.59
          178.74.30.57
          178.74.30.48
          178.74.30.46
          178.74.30.27
          178.74.30.53
          178.74.30.35
          178.74.30.20
          178.74.30.42
          178.74.30.31
          178.74.30.38

c:\srv>python
Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import dns
>>> import dns.resolver, dns.name
>>> import dns.message, dns.query
>>> r = dns.message.make_query('google.com', dns.rdatatype.NS)
>>> resp = dns.query.udp(r, '216.239.32.10')
>>> print resp.authority
[]
>>> print resp
id 63079
opcode QUERY
rcode NOERROR
flags QR AA RD
;QUESTION
google.com. IN NS
;ANSWER
google.com. 345600 IN NS ns3.google.com.
google.com. 345600 IN NS ns4.google.com.
google.com. 345600 IN NS ns2.google.com.
google.com. 345600 IN NS ns1.google.com.
;AUTHORITY
;ADDITIONAL
ns3.google.com. 345600 IN A 216.239.36.10
ns4.google.com. 345600 IN A 216.239.38.10
ns2.google.com. 345600 IN A 216.239.34.10
ns1.google.com. 345600 IN A 216.239.32.10
>>>
于 2016-01-25T09:43:45.653 回答
0

我也遇到了同样的问题。事实证明,一些 DNS 解析器没有回复权限或附加部分(使用 Wireshark 检查数据包)。

将 IP 地址更改为127.0.1.1Python 代码中的,并确保您配置的 DNS 解析器未指向您的原始解析器(检查cat /etc/resolv.conf)。

您应该在结果中看到权威部分。

于 2018-08-08T23:50:10.647 回答