Using host

(redirected from Openbsd.Host)

Overview

host(1) is a useful utility for performing DNS lookup.

Usage

Forward DNS lookup

Suppose you want to find the IP address of example.com:

$ host example.com
example.com has address 192.168.1.1
example.com has IPv6 address 2001:db8::
example.com mail is handled by 10 example.com.

host(1) will not only provide the name's IPv4 address, but it will also gives you the IPv6 address and mail servers for a name.

Reverse DNS (rDNS) Lookup

If you know an IP address, but don't know the name associated with it, you can perform rDNS lookup:

$ host 192.168.1.1
1.1.168.192.in-addr.arpa domain name pointer example.com.

Notice that when you perform reverse DNS lookup, the suffix in-addr.arpa is attached. Also, the four numbers end up reversed: the last number shows up first, and the first number shows up last. This happens because in an IP address, the least significant number is last; whereas in DNS, the least significant subdomain shows up first.

(Remember, a subdomain is a name that is grouped underneath another name. For example, if the domain name is example.com, one subdomain might be mail.example.com; another subdomain might be www.example.com)

$ host 2001:db8::
0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa domain name pointer example.com.

The same happens for IPv6; the last digit shows up first, and the first digit shows up last.

Query types

host(1) can show a specific query type with the -t option. Query types include NS (NameServer records), MX (Mail eXchange records), and TXT (TeXT records).

For example, to show all the nameservers of example.com, type:

$ host -t ns example.com
example.com name server ns1.example.com.
example.com name server ns2.example.com.

To show the mail servers, type:

$ host -t mx example.com
example.com mail is handled by 10 mail.example.com.

To show the TXT records, type:

$ host -t txt example.com
example.com descriptive text "v=spf1 a mx ip4:192.168.1.1 -all"

Here, we see the TXT record is used to provide SPF information for mail servers.

Troubleshooting

Using host(1), you can test if your DNS records have been set properly. If you recently added a DNS record, use host(1) on that name to see if it resolves properly.

For example, suppose you added a new TXT record for example.com. Rather than rely on the default nameservers from resolv.conf (which may be holding stale DNS records), you can explicitly query the nameserver ns1.example.com by providing it to host:

$ host -t txt example.com ns1.example.com
example.com descriptive text "v=spf1 -all"

If your records have changed, make sure to flush your old DNS cache before running host. How to do this depends on how you have configured resolv.conf, whether you have setup resolvd, unwind, or unbound.