These files were pulled from the 1.6.3 release tarball. This new version builds against OpenSSL version 1.1 which will be the default in the new Debian Stable which is due to be released RealSoonNow (tm).
37 lines
1.2 KiB
ReStructuredText
37 lines
1.2 KiB
ReStructuredText
.. _example_reverse_lookup:
|
|
|
|
Reverse DNS lookup
|
|
==================
|
|
|
|
Reverse DNS lookup involves determining the hostname associated with a given IP
|
|
address.
|
|
This example shows how reverse lookup can be done using unbound module.
|
|
|
|
For the reverse DNS records, the special domain in-addr.arpa is reserved.
|
|
For example, a host name for the IP address ``74.125.43.147`` can be obtained
|
|
by issuing a DNS query for the PTR record for address
|
|
``147.43.125.74.in-addr.arpa.``
|
|
|
|
Source code
|
|
-----------
|
|
|
|
::
|
|
|
|
#!/usr/bin/python
|
|
import unbound
|
|
|
|
ctx = unbound.ub_ctx()
|
|
ctx.resolvconf("/etc/resolv.conf")
|
|
|
|
status, result = ctx.resolve(unbound.reverse("74.125.43.147") + ".in-addr.arpa.", unbound.RR_TYPE_PTR, unbound.RR_CLASS_IN)
|
|
if status == 0 and result.havedata:
|
|
print "Result.data:", result.data.domain_list
|
|
elif status != 0:
|
|
print "Resolve error:", unbound.ub_strerror(status)
|
|
|
|
In order to simplify the python code, unbound module contains the
|
|
:meth:`unbound.reverse` function which reverses the hostname components.
|
|
This function is defined as follows::
|
|
|
|
def reverse(domain):
|
|
return '.'.join([a for a in domain.split(".")][::-1])
|