The dig
command in Linux and Unix systems is a simple tool for performing DNS lookups from the queried name server. It stand for Domain Information Groper and can be helpful in troubleshooting DNS issues.
In the case of .gm domain registrants, dig
can be handy in finding out if the .gm domain you want is taken or not. I find the NIC Gambia website unavailable sometimes or simply slow, making it impossible to use their domain name search form. In addition, the registry lacks a Whois server as well.
To use dig, you need a Linux computer with root or sudo access and of course a terminal. You can use it on Windows computers but this guide focuses on Linux.
First check if dig
is installed on your system by running the command:
dig -v
If it is installed, you will see a terminal output showing the dig
version you have installed. If it is not installed you will get an output saying ‘command not found’ and you can go ahead an install dig
on your system.
Debian/Ubuntu
For Debian or a distribution based on the Debian family, use this command:
sudo apt-get install dnsutils
Centos/Redhat
For a CentOS/RedHat system or any of the CentOS offshoot such as AlmaLinux or Rocky Linux, use this command:
sudo yum install bind-utils
Alpine Linux
And on an Alpine machine, you can run the following command.
apk add bind-tools
Now you just need to wait for the installation to finish and you can start using dig
to perform DNS lookups.
First lets have a look at the dig syntax so that we know what is what.
dig [DNS_Server] [name] [type]
The firs part of the line is the dig command as you may already know by now. This is followed by the [DNS_Server] your query is directed to. This is optional and if you don’t tell dig to use a specific server, it will resort to using the DNS servers listed in your system’s /etc/resolv.conf file. If no server is found in that file, the program will use the local host. The [name] is the domain name/hostname you are looking up. This can be an IP address if you want. And finally, [type]. This part tells dig to fetch you a particular DNS record, for example, NS. It is also optional and if not specified, dig will perform a query for an A record.
Lets perform a lookup.
dig @8.8.8.8 gamdns.gm NS
Here we use Google’s public DNS server 8.8.8.8 to perform our query. The @ symbol tells dig this is the server we are directing our query to. The domain we are looking up for is gamdns.gm and the type is NS, which means name server.
We have the following out.
; <<>> DiG 9.11.3-1ubuntu1.17-Ubuntu <<>> @8.8.8.8 gamdns.gm NS
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19900
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;gamdns.gm. IN NS
;; ANSWER SECTION:
gamdns.gm. 3538 IN NS ns2.gamdns.com.
gamdns.gm. 3538 IN NS ns1.gamdns.com.
gamdns.gm. 3538 IN NS ns3.gamdns.com.
gamdns.gm. 3538 IN NS ns4.gamdns.com.
;; Query time: 18 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Wed Jul 27 07:18:45 BST 2022
;; MSG SIZE rcvd: 120
The first line of the output shows us dig version and the the query we just made. About three lines below that is the ‘HEADER’ section, which shows the information it received from the server. The ‘flags’ tells us the answer format.
The ‘OPT PSEUDOSECTION’ shows more advance data such as Extended DNS if used, flags and UDP packet size.
The QUESTION section display the query information we sent. Next is the ANSWER portion which contain the NS records of gamdns.gm.
The last section contains the stats, which tells us how long the query took, the DNS sever used in the lookup, the timestamp and size of the reply from the DNS server.
If you don’t fancy seeing all that output, you can use the +short option in your query which output a terse answer instead of the default output. Lets run the same command again with the +short this time.
dig +short @8.8.8.8 gamdns.gm NS
The output for that command is:
ns2.gamdns.com.
ns4.gamdns.com.
ns3.gamdns.com.
ns1.gamdns.com.
This gives you a much cleaner output which is all you need most of the time. Have a look at the manual pages for dig, it has multiple option which you may find useful.
Doing a .gm domain search with dig
Now that we have an understanding of how dig works, lets look at how we can use it to know if a .gm domain name is taken or is available for registration. The dig command is not the ideal tool you would use to search for domains to register but in the absence of a Whois server from NIC Gambia, we can improvise with a hack.
Lets run our command again, this time with a domain we know is not registered, example.gm. Per RFC2606, example is a reserved word for documentation.
dig +short @8.8.8.8 example.gm NS
After running this you will notice no output and you just return to the command prompt. All you do now is us that command replacing example with the actual domain you want to check and register.