如果我的IP地址如2001:4860:4860 :: 8888
如何以foo.ip6.arpa格式获取完全限定的域名?
编辑:到目前为止,这两个解决方案都给了我google-public-dns-a.google.com - 也许反向DNS是错误的名称。为此,我希望输出类似于8.8.8.8.0 ... etc.ip6.arpa
答案 0 :(得分:6)
使用dnspython。
from dns import resolver,reversename
addr=reversename.from_address("2001:4860:4860::8888")
str(resolver.query(addr,"PTR")[0])
答案 1 :(得分:3)
IPy提供了您想要的方法:
>>> from IPy import IP
>>> ip = IP('127.0.0.1')
>>> ip.reverseName()
'1.0.0.127.in-addr.arpa.'
适用于IPv4和IPv6,尽管原始IPy对IPv6有一些错误。我在https://github.com/steffann/python-ipy创建了一个包含一些扩展和修复的分支,只要修补程序没有合并回原始代码,您就可以使用它。
您当然也可以使用内置的socket
模块:
>>> import socket
>>> socket.getnameinfo(('2001:4860:4860::8888', 0), 0)
('google-public-dns-a.google.com', '0')
>>> socket.getnameinfo(('127.0.0.1', 0), 0)
('localhost', '0')
您需要提供主机+端口元组,但您可以为端口提供0
,然后您将获得主机名。