Rate this page

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