使用dnspython
库,我有这个简单的代码,给定DNS IP,我可以查询域名。我需要获取DNS服务器的区域名称。例如,如果代替8.8.8.8
我为名为192.168.4.5
的区域设置了私有IP com
,并且相关服务器为a.com
。
如何查询我所在区域的DNS IP,我如何获得com
?
import dns.resolver
resolver = dns.resolver.Resolver()
resolver.nameservers = ['8.8.8.8']
def myQuery(domain, records):
for r in records:
try:
response = resolver.query(domain, r)
for rData in response:
domainIP = str(rData)
print(domainIP)
break # we only need one IP
except Exception as e:
print(e)
myQuery("google.com","A")
答案 0 :(得分:1)
听起来你正在进行反向IP查找。
你有IP,但你想要这个名字。如果是这样,您正在寻找PTR类型记录(https://en.wikipedia.org/wiki/Reverse_DNS_lookup)。 PTR记录如下所示:
5.4.168.192.in-addr.arpa。
您不必知道,因为有一个名为reversername的dns-python辅助函数会为您生成IP地址的名称。以下是8.8.8.8的反向IP查找示例:
>>> from dns import reversename, resolver
>>>
>>> rev_name = reversename.from_address('8.8.8.8')
>>> reversed_dns = str(resolver.query(rev_name,"PTR")[0])
>>> print reversed_dns
google-public-dns-a.google.com.
为了让它在您的私人服务器上运行,您需要确保您或您的系统在使用DNS注册您的计算机时添加/创建PTR记录。假设您的DNS中有PTR记录,那么这应该对您有用:
from dns import reversename, resolver
rev_name = reversename.from_address('192.168.4.5')
reversed_dns = str(resolver.query(rev_name,"PTR")[0])
print(reversed_dns)