What is a DNS server and why should I care?

In brief – a DNS server is what translates the domain names you type in your web browser (such as Yahoo.com) into usable IP addresses (like 209.131.36.159). When you enter a domain name, there has to be a DNS server somewhere along the line that can translate that name to an IP. So each time you click a link or enter the name of a website into your address bar, your computer has to wait for the DNS server to respond and provide the real IP address of the site. If that DNS server is slow, you’ll have a delay in opening many of your sites, no matter how fast your internet speed, because you’re stuck waiting until you get a response. If you’ve never manually specified a DNS server, you’re likely using the one provided by your ISP. There’s nothing necessarily wrong with that, but some ISPs don’t consider DNS performance a high priority. By choosing one of the other public DNS options, you may be able to make a noticeable difference in the time it takes to find and load websites.

So what are these public servers?

Since many ISPs don’t really worry too much about the speed of their DNS servers, other independent options have sprung up. The most popular has been OpenDNS, but that could change now that Google has entered the arena. They both provide free access to their DNS servers. You can specify what DNS server to use on each individual computer, or inside your modem/router to have the change apply to all computers on your LAN. Applying these changes will be covered in more detail later in this article.

Getting namebench

We’ll be using namebench to scan a list of public DNS servers and determine our best options. Namebench runs on Linux, Windows, and Mac and can be downloaded for each platform at the link above. It is a Python script and will require Python and the Python-tk library for graphics. You can skip the Python-tk requirement if you’ve satisfied with a command line interface. Once you’ve got namebench downloaded, run the namebench.py file. I recommend running it from a command line window, as it prints a lot of information about what it’s doing to the console screen as it runs. If you have all the required software, you’ll get a screen similar to the following.

If you’re happy with the default settings, click Start Benchmark. This part may take a while. Give it at least 10 minutes to check all servers. Once complete, namebench will open your default web browser to a page showing the test results. The following shows the results of my benchmark.

This test showed that I got the best results from the public servers at OpenDNS, with Gorge Networks (my ISP) coming in second. After re-running the test a few times, my results varied a bit but my ISP always came in second (being the closest, geographically).

Applying your new DNS settings

Once you know the fastest servers for you, the next step is to apply those changes. For the sake of future simplicity, I suggest specifying the DNS info in your modem or router. Then you won’t have to worry about entering DNS info on every computer, or re-entering it after a new OS install. Instructions for exactly how to do this vary widely depending on what modem/router you’re using. On my TP-Link DSL modem, I log in to 192.168.1.1 and put the DNS settings in the WAN > DNS section.

Linux users can manually specify the DNS server by editing the file /etc/resolv.conf. Windows users can enter DNS settings on the TCP/IP Properties screen of each network adapter. Mac OSX users can access DNS settings from the TCP/IP tab for any network interface inside the Network section of System Preferences.