How to find DNS servers using the dig command
Dig or dig command is a command-line tool for querying domain information on Domain Name System (DNS) servers. Originally called Domain Information Groper, the command is part of BIND, a group of networking tools maintained by the Internet Systems Consortium (ISC).
The dig
command is commonly used for network and domain troubleshooting, and also other DNS operations. It’s also a multiplatform and an alternative to the discontinued nslookup
.
In this guide, you’ll query records from a specific domain and from several domains in the same request; select which DNS server to use for the query; find out the latency (in milliseconds); what are the IPs associated with the domains queried; and track the entire process of resolving nameservers, from the root to the last authoritative nameserver (which maintains the domain records).
1. Installing the dig command
By default, the dig command is installed on most versions of macOS and some Linux distributions, but it isn’t installed on Windows and most Linux distributions.
Installing dig on Windows
- Download the Current-Stable, ESV version of BIND from the ISC downloads page.
- Extract the entire contents of the compressed file
BIND9.18.14.tar.xz
into a dedicated folder. - Run the
BINDInstall.exe
file as an administrator. - Select the Tools Only checkbox to install only the
dig
,host
,nslookup
, andnsupdatetools
.
You can still use BIND with Windows. However, support for OS was removed in a 2021 update.
Installing dig on Linux distributions
To install the command on Debian-based distributions such as Ubuntu, PopOS, and Kali Linux:
- Open the terminal.
- Run
sudo apt-get install dnsutils
.For other Linux distributions, see the developer documentation.
- Run
dig -v
to check the installed version.
2. Using the dig command
To perform a query with the dig
command:
- Open the terminal (Command Line Prompt, Power Shell, or Git Bash for Windows systems).
- Run
dig azion.com
(swapazion.com
for the domain you want to query).
It’s also possible to perform a query of several domains in the same request:
- Create a text file to store the domains of interest. Example:
domains.txt
. -
Inside the file, separate the domains by line. Example:
azion.com google.com github.com
- Open the terminal.
- Run
dig domains.txt
.
The answer to these commands consists of four sections: Header, OPT PSEUDOSECTION, ANSWER SECTION, and footer.
There’s relevant information in all sections of the response. However, this guide will focus on the last two sections: ANSWER SECTION and footer.
The ANSWER SECTION is where the DNS records should appear. In the footer section, you find the latency time, in milliseconds, in addition to which DNS server was used to solve the request.
By default, the dig
command uses a list of DNS servers stored locally on your machine.
If you want to use a specific DNS list, such as Google’s (8.8.8.8
, 8.8.4.4
, 2001:4860::4860::8888
, and 2001:4860:4860::8844
), for example, use the @
+ IP tag in the list.
Here’s an example of the command:
dig @8.8.8.8 azion.com
or dig @8.8.8.8 domains.txt
To track the entire DNS server path, add the +trace
option to the command. See an example:
dig azion.com +trace
The +trace
option is an instruction to return the full path that the DNS server took to resolve the query.
This response is quite different from the simple request and presents all DNS servers involved in the resolution of a domain, passing through the Top-Level Domain (TLD) servers until reaching the last authoritative server.
Checking the latency of a web application with the dig command is one of the ways of validating Azion’s Edge Computing service. For example, you can compare the latency of your application, served by cloud and by Azion Edge Computing platform.
Didn’t find what you were looking for? Open a support ticket.