Overriding Windows DNS

30 November -0001

Windows DNS queries annoy the hell out of me. Sometimes when I add a new DNS entry Windows simply refuses to find it. You query it using an nslookup and things are fine, but when you point a web browser at the location things just bork up. You can manually add entries to your hosts file by editing the file C:\WINDOWS\system32\drivers\etc\hosts.

The windows hosts file works in much the same way as the /etc/hosts file on a *nix system. Windows checks this file *first* before consulting DNS to resolve names to IP addresses. This functionality is handy if you want to force a specific URL to resolve to an IP address independent of DNS. For instance, if you wanted to test out a site, but couldn't (or didn't want to) modify the DNS entry for that URL, one hacky solution is to simply modify your Windows hosts file.

For instance, let's say I wanted to add a manual resolution for the domain test.mydomain.com. I could do this by adding the entry to the Windows hosts file like so:

# Copyright (c) 1993-1999 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

127.0.0.1       localhost
192.168.0.3   test.mydomain.com

Will provide resolution for test.mydomain.com. This is especially handy if you're doing local development and you want to be able to use different URL's or test out how URL calls will be handled by web applications.