The dig
utility is very handy for troubleshooting name resolution issues or to find out information about an IP or a domain name. Here are some useful command examples.
Lookup for a domain
# dig google.com
; <<>> DiG 9.3.4-P1.2 <<>> google.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24311
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 217 IN A 216.58.209.238
;; Query time: 0 msec
;; SERVER: 62.210.64.50#53(62.210.64.50)
;; WHEN: Tue Oct 25 11:10:01 2016
;; MSG SIZE rcvd: 44
Lookup for a specific record
You can specify record type using the appropriate prefix:
# dig <prefix> google.com
A
for A recordsMX
for MX recordsNS
for NameServer recordsCNAME
for cname recordsTXT
for SPF, DKIM and everything that goes inside TXT records
Short answer
If you want just the answer without any comments, you can use the +short
option:
# dig A google.com +short
216.58.209.238
You can also enable or disable each output sections, using the appropriate paramaters. For example to get only the ANSWER SECTION
:
# dig A google.com +noall +answer
google.com. 299 IN A 74.125.140.139
google.com. 299 IN A 74.125.140.101
google.com. 299 IN A 74.125.140.100
google.com. 299 IN A 74.125.140.138
google.com. 299 IN A 74.125.140.113
google.com. 299 IN A 74.125.140.102
Use a Specific DNS server
To test the answer from a specific DNS server you can use the @
parameter:
# dig A @8.8.8.8 google.com
; <<>> DiG 9.3.4-P1.2 <<>> A @8.8.8.8 google.com
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28263
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 299 IN A 74.125.140.100
google.com. 299 IN A 74.125.140.113
google.com. 299 IN A 74.125.140.138
google.com. 299 IN A 74.125.140.139
google.com. 299 IN A 74.125.140.102
google.com. 299 IN A 74.125.140.101
;; Query time: 8 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Oct 25 11:15:23 2016
;; MSG SIZE rcvd: 124
Reverse lookup
You can check the PTR records by doing a reverse lookup:
# dig -x 91.189.94.40
; <<>> DiG 9.3.4-P1.2 <<>> -x 91.189.94.40
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21503
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 0
;; QUESTION SECTION:
;40.94.189.91.in-addr.arpa. IN PTR
;; ANSWER SECTION:
40.94.189.91.in-addr.arpa. 3600 IN PTR ovinnik.canonical.com.
;; AUTHORITY SECTION:
94.189.91.in-addr.arpa. 3600 IN NS ns1.canonical.com.
94.189.91.in-addr.arpa. 3600 IN NS ns2.canonical.com.
94.189.91.in-addr.arpa. 3600 IN NS ns3.canonical.com.
;; Query time: 15 msec
;; SERVER: 62.210.64.50#53(62.210.64.50)
;; WHEN: Tue Oct 25 11:43:36 2016
;; MSG SIZE rcvd: 132