如果我有一个像 2001:4860:4860::8888 这样的 IP 地址
如何获得 foo.ip6.arpa 格式的完全限定域?
编辑:到目前为止,这两种解决方案都给了我 google-public-dns-a.google.com - 也许反向 DNS 是错误的名称。为此,我希望输出类似于 8.8.8.8.0...etc.ip6.arpa
使用 dnspython。
from dns import resolver,reversename
addr=reversename.from_address("2001:4860:4860::8888")
str(resolver.query(addr,"PTR")[0])
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创建了一个带有一些扩展和修复的 fork,只要这些修复尚未合并回原始代码,您就可以使用它。
您当然也可以使用内置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
端口,你会得到主机名。