Let's look at some DNS clients in Linux - (dig, nslookup, host)
dig (domain information groper)
We use dig to query DNS servers in a detailed way.
It queries name servers and retrieves A, MX, NS, TXT, CNAME records.
Syntax: dig [@server] [flags] <domain> [type]
$ dig serhatsari.dev
; <<>> DiG 9.18.30-0ubuntu0.22.04.2-Ubuntu <<>> serhatsari.dev
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6670
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;serhatsari.dev. IN A
;; ANSWER SECTION:
serhatsari.dev. 225 IN A 172.67.200.166
serhatsari.dev. 225 IN A 104.21.90.130
;; Query time: 1 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sun Apr 27 00:58:02 +03 2025
;; MSG SIZE rcvd: 75
Here are some useful ways to use dig:
dig gmail.com mx
: query specific record types like mx, ns, a, soa.
dig @8.8.8.8 serhatsari.dev
: change the nameserver.
dig @8.8.8.8 +trace yahoo.com.hk
: shows the trace of the DNS query.
dig . NS
: shows the nameservers for the root zone.
dig com. NS
: shows the nameservers for com TLD.
dig -x 8.8.8.8
: -x is useful for reverse DNS lookups.
(owner of the domain should set up a PTR record to make this work)
nslookup (name server lookup)
We use nslookup to query DNS to obtain domain name or IP address mappings or other DNS records.
It is simpler than dig but less detailed.
Syntax: nslookup [flags] [domain] [server]
$ nslookup serhatsari.dev
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: serhatsari.dev
Address: 104.21.90.130
Name: serhatsari.dev
Address: 172.67.200.166
Name: serhatsari.dev
Address: 2606:4700:3033::6815:5a82
Name: serhatsari.dev
Address: 2606:4700:3033::ac43:c8a6
Here are some useful ways to use nslookup:
nslookup -type=mx gmail.com
: query specific record type using -type flag.
nslookup google.com 1.1.1.1
: query a specific dns server.
nslookup 8.8.8.8
: perform reverse DNS lookup.
host: the simplest one
Simple alternative to nslookup and dig. It resolves domain names to IP address and vice versa.
Syntax: host [flags] <name> [server]
$ host serhatsari.dev
serhatsari.dev has address 104.21.90.130
serhatsari.dev has address 172.67.200.166
serhatsari.dev has IPv6 address 2606:4700:3033::6815:5a82
serhatsari.dev has IPv6 address 2606:4700:3033::ac43:c8a6
serhatsari.dev mail is handled by 43 route3.mx.cloudflare.net.
serhatsari.dev mail is handled by 68 route2.mx.cloudflare.net.
serhatsari.dev mail is handled by 77 route1.mx.cloudflare.net.
Here are some useful ways to use host:
host -t mx gmail.com
: you can query for specific record type.
host serhatsari.dev 8.8.8.8
: you can use different nameserver.