With the huge amount of new TLDs being released over the past few years, the built-in
whois client in Linux can't seem to keep its builtin WHOIS server database up-to-date. Here, we'll look at an easy way to determine the registry's WHOIS server, and query it from the shell. Then generate our own
whois.conf file to make future lookups seamless.
If you're short on time, jump to the end of the article for a link to the updated
whois.conffile containing up-to-date WHOIS servers for the new gTLDs
Determining the correct server
Likely, you've come across a few domains that you've tried to query due to a DNS problem, or to check the registration info, and you came across a message similar to this:
jacob@minorin:~$ whois mori.moe No whois server is known for this kind of object.
This is because the GNU
whois program on most Linux distros comes with the WHOIS server list compiled into the binary. The good news is that you can create a
/etc/whois.conf file, which contains a list of regular expressions that correspond to WHOIS servers. However, if you don't want to muck around with this, we can use the
whois-servers.net DNS entries to determine the correct WHOIS server.
jacob@minorin:~$ dig +short CNAME moe.whois-servers.net whois.nic.moe.
Yay! Now that we have the WHOIS server, we can use the
-h flag in whois to query that server directly. Also, before we move on, it's important to note that "official" source for WHOIS server information is
whois.iana.org. For most TLDs, IANA will return an attribute titled whois. Example:
jacob@minorin:~$ whois org -h whois.iana.org | grep whois whois: whois.pir.org
Moving on to the query:
jacob@minorin:~$ whois mori.moe -h whois.nic.moe Domain Name: MORI.MOE Domain ID: D389770-MOE Sponsoring Registrar: BR domain Inc. Sponsoring Registrar IANA ID: 1898 Registrar URL (registration services): http://www.brdomain.jp Domain Status: clientTransferProhibited
You can combine the two if you're lazy and don't want to re-type or copy/paste the server name, like so:
jacob@minorin:~$ whois mori.moe -h `dig +short CNAME moe.whois-servers.net`
For 3rd level registrations, such as
amazon.co.uk, you would query the WHOIS server for the top-level domain (such as
ukin this example) in most cases -- however, there are certain 2nd level domains that have their own WHOIS server. If you can't find the domain in the TLD registry's database, do a WHOIS query to IANA for the 2nd level domain to determine if it has its own WHOIS server (eg.
whois co.il -h whois.iana.org)
Creating a whois.conf file
For a more elegant solution, you can add the entries for each of the new TLD WHOIS servers to the
/etc/whois.conf file. By default, this file doesn't exist, so you'll probably have to create it.
To automate this process, I wrote a simple PHP script which fetches the official list from IANA to enumerate all (public) TLDs, then iterates through the list to determine WHOIS server information from
whois.iana.org for each of the TLDs. It then uses this information to generate a shiny new
whois.conf file and a JSON file that can be used for other purposes.
yc_whoisgen (PHP source, plain text)
As of this writing (15 Mar 2015), there are over 800 top-level domains. You can simply add new entries to your
whois.conf as you encounter them, or utilize the script above to generate a new list for yourself. Linked below is updated
whois.conf generated by
whois.conf (plain text, 07 Mar 2017) — copy to
An excerpt from an example
whois.conf file showing the regular expression to match a domain on the left, and the WHOIS server where the lookup should be routed on the right side.
\.blue$ whois.afilias.net \.moe$ whois.nic.moe \.wtf$ whois.donuts.co \.ninja$ whois.unitedtld.com
To get started looking up new gTLD domains, you can go ahead and grab the updated config that I've generated above and copy it to
/etc/whois.conf. You can also check out the IANA Root Zone Database, if you're still curious about TLDs, or the IANA Official list of TLDs.
Checking out the new whois.conf in vim