Getting DIG to work on Windows
As a network engineer, there are a number of tools that are absolutely critical to my job, that I use on a daily basis. One of those tools named “dig”, is included as part of the BIND package from the Internet Systems Consortium (ISC). For those not familiar with “dig”, it is a command line query tool used to troubleshoot DNS issues.
Due to my need to support a number of specialty applications, I run a Windows PC as my main work laptop. This is unfortunate as Microsoft’s command line diagnostic tools (such as nslookup) are quite weak. While I could SSH into a Linux/Solaris/whatever host each time I need to troubleshoot something, I often find myself on foreign networks with only my trusty laptop available. A number of years ago I figured out how to get dig running on my Windows machines and have never looked back.
To run dig on a Windows box you could install the full windows version of BIND (which includes dig), but that is quite overkill if all you want is dig. Instead, I recommend downloading the latest stable precompiled windows binaries of BIND, extracting the .zip, and then copying the files listed below into your c:\windows directory (really you could put them anywhere in your PATH but c:\windows is easy and I doubt the filenames will ever conflict).
- dig.exe
- libisc.dll
- libdns.dll
- libeay32.dll
- libbind9.dll
- libisccfg.dll
- liblwres.dll
Voila! You can now run dig from the command prompt!
C:\Users\eric.rosenberry>dig bitplumber.net
; <<>> DiG 9.6.0-P1 <<>> bitplumber.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1886
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0;; QUESTION SECTION:
;bitplumber.net. IN A;; ANSWER SECTION:
bitplumber.net. 14400 IN A 75.119.216.176;; Query time: 210 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sun Mar 15 00:05:54 2009
;; MSG SIZE rcvd: 48
C:\Users\eric.rosenberry>
-Eric
Good how-to. Thanks
Did you put your company’s nameservers in \windows\system32\drivers\etc?
@jamkomo
I did that a long time ago the first time I installed DIG on Windows, but since then it seems to have “just worked”. I think it reads the system DNS servers as the default if that file does not exist.
-Eric
I’m not able to get dig to work. Several articles all name the same dlls/exes to put in the desired directory, which I’ve done and confirmed. But when I run it, I get
“The system cannot execute the specified program.”
This error is reported to be caused by missing DLL dependencies, but I can’t find any info on dependencies for DIG. I tried registering a couple of the DLLs but that errors out (but I thought the first run of dig.exe would cause them to self-register anyway).
It’s also not a path problem. And as of v9, resolv.conf isn’t required.
Any ideas? Anyone? (I can’t find a suitable forum at ISC for this, either.)
You probably didn’t install the C++ redistributable package(vcredist_x86.exe). Use the one that comes in the BIND zip archive. I tried the latest one for Visual C++ 2008 and it didn’t work.