Convert an IP address to the corresponding domain name
Tested on |
Debian (Lenny) |
Objective
To convert an IPv4 or IPv6 address to the corresponding domain name (if there is one)
Scenario
Suppose that a network service has logged connection attempts from the IPv4 address 192.168.0.137. In order to more easily identify the machine to which this address belongs, you wish to convert it to a domain name.
Similarly for the IPv6 address 2001:db8::89.
Method
Query the hosts
database using the getent
command:
getent hosts 192.168.0.137
The request will be routed through the Name Service Switch (NSS). This is able to resolve addresses from the Domain Name System (DNS), from the hosts file (/etc/hosts
), or using other mechanisms such as LDAP and NIS where appropriate.
If a matching domain is found then it is written to stdout
preceded by the address:
192.168.0.137 www.example.com
If nothing was found then getent
exits without writing anything to stdout
(but with a non-zero return code). The method works equally well for IPv6 addresses:
getent hosts 2001:db8::89
Alternatives
Sometimes you may want to bypass the Name Service Switch and query the relevant directory service directly. This might be preferable to using getent
if (for example) you wished to check that the DNS had been configured correctly, without any risk of being misled by the hosts
file or the Name Service Cache Daemon (nscd
).
See also
Further reading
- getent, Ubuntu manpage repository
- Name Service Switch, Wikipedia (as of April 2011)