In the previous Windows XP Professional Here’s How column, we looked at how to configure your operating system to make use of DNS (Domain Name System) efficiently, and how the built-in DNS lookup cache service works.
Windows XP Professional can also make use of a simple text file, called HOSTS, for name resolution. This file is located in %windir%\system32\drivers\etc (“etc” being the traditional UNIX name for the directory in which system configuration files are stored).
Don’t confuse the HOSTS file with the LMHOSTS one; the former is used for name resolution lookups, the latter for LanManager, i.e., Windows networking, resolution. The HOSTS file lets you map IP addresses to host names, in this format:
IP address FQDN host-aliases
So, if you have a domain called example.com.au and a host called mycomputer with the IP address 192.168.1.1, you might enter (as Administrator, using Notepad or WordPad)
192.168.1.1 mycomputer.example.com.au mycomputer mycomp
into the HOSTS file. This means that “mycomp”, “mycomputer” and “mycomputer.example.com.au” all resolve to the same IP address.
Windows XP reads this file before attempting to resolve a name via DNS, so be careful with what you put in here. Make sure the IP addresses and host names are correct, and don’t “steal” any that might be in use by someone else.
If you have to manage name resolution for a large number of systems, it is, of course, preferable to maintain a centralised DNS configuration instead of having to update HOSTS files on each single system. This is why by default the HOSTS file on Windows XP only comes with a single entry (for localhost, which points to the 127.0.0.1 loopback interface IP address of the TCP/IP stack).
However, there are situations — such as when you don’t have easy access to DNS resolution due to poor/intermittent network connectivity, or troubleshooting — where the HOSTS file could be useful.
On small networks, adding the IP addresses and host names/aliases of commonly accessed systems speeds up lookups for these, without having to set up DNS for them. This also prevents unnecessary DNS queries from going out on the Internet, which is always a good thing.
The HOSTS file can even be used as crude access control device: let’s say you want to block an obnoxious pop-up ad site called really.annoyingads.com. Enter this into your HOSTS file:
When your browser requests the IP address for really.annoyingads.com, it receives the address for the loopback interface instead of the real one. The content from really.annoyingads.com doesn’t get served up in your browser; in fact, this method blocks all traffic to and from really.annoyingads.com. The drawback to this method is that it’s cumbersome to manage a HOSTS file with many entries, and it’s a blunderbuss approach: you can’t be selective about the traffic you wish to be rid of and everything gets blocked, so some sites won’t work. Also, you can’t use wild-cards, such as *.annoyingads.com — each single host name has to be listed.
Working with static IP addresses
Another use for the HOSTS files is when you use Internet Connection Sharing (ICS), but would like to configure it for hosts with static IP addresses instead of dynamic ones — with ICS active, IP addresses are allocated with the Dynamic Host Configuration Protocol service in Windows XP by default, in the IANA (Internet Assigned Numbers Authority) 192.168.0.0 range, which is one of the sub-networks reserved for non-Internet routable local area network addressing.
If you have a server or other device on your network to which you point other hosts, having its IP address change due to DHCP allocation is inconvenient, so here’s how to make ICS work with hosts that have static IP addresses.
First, you must use static IP addresses in the 192.168.0.0 network range, because this is hard-coded into Windows XP and cannot easily be changed.
Second, when picking a static IP address, only use one between 192.168.0.2 to 192.168.0.254; 192.168.0.0 is the network address in this case, and ICS must use 192.168.0.1 as the default gateway and the DNS server. 192.168.0.255 is the network broadcast address, so don’t use that, either.
Another ICS is quirk is that you have to use the mshome.net domain name. Enter this as the DNS Suffix on the system with the static IP address (Control Panel-Network Connections-Local Area Connection-General-Properties-Internet Protocol (TCP/IP)-Properties-Advanced-DNS-DNS suffix for this connection).
On the system running ICS, edit the HOSTS file to add the systems with the static IP address. Let’s say you have “mycomputer” with an IP address of 220.127.116.11 that you wish to use ICS. Add this to HOSTS:
Check the IP address, host name spelling, save the file, and HOSTS is ready to use ICS to access the Internet.