Lately I've been noticing significant DNS latency when visiting certain sites. This is most obvious when my browser spends ages with "Looking up some.web.server.com..." in it's status bar. It's particularly bad at sites like wordpress.com where many pages make reference to sub-domains of wordpress.com and typically also to google.com for analytics or ads.

While my ISP's DNS infrastructure is pretty good, there are a couple of things I can do to improve DNS look-up, which makes page loads a lot quicker.

There are two things which can significantly speed up DNS look-ups for your local clients:

Of course, a combination works well too.

So, what name service do you use? I know of two free/open services that are pretty good and promising to get better:

Both are great services. Performance varies depending on where in the world you are.  Since I'm in Australia, Google beats OpenDNS, but I'm going to use both of these and my ISP since it's still fairly good too.

Hack 0: install and configure BIND

In openSUSE, you can install bind like this (as root):

# zypper install bind

Although the program is called BIND, the name of the service is actually named (name daemon). It's configured with the file /etc/named.conf. Edit this (as root) to add a list of up to three forwarding DNS name servers. I'm going with Google as Primary, then OpenDNS, then my router (which forwards to my ISP):

forwarders { 8.8.4.4; 208.67.222.222; 16.1.1.1; };

Next, you need to tell openSUSE to start the DNS server at boot time. It makes sense to have it running whenever there are network services. In openSUSE, this means at runlevels 3 and 5. I use YaST because it's so simple:

# yast2 runlevel

Finally, start the server. Either do it from YaST, or with the command-line:

# service named start

Hack 1: local resolver

This is simple: add the nameserver addresses to your /etc/resolv.conf, like so:

nameserver 127.0.0.1      # Localhost bind
nameserver 8.8.4.4        # Google
nameserver 208.67.222.222 # OpenDNS
nameserver 16.1.1.1       # My router (forwards requests to my ISP)

There are alternate addresses for each of Google and OpenDNS, I've chosen one each above. The other addresses are 8.8.8.8 for Google, and 208.67.220.220 for OpenDNS. OpenDNS also offers "family shield" on .123 but your teenager (or maybe your six-year-old?)  can bypass that pretty easily.

Other computers

Now, any time your browser makes a DNS look-up, the resolv.conf tells it to try your local DNS server first, which in turn forwards to Google, OpenDNS and the router, and caches the results for next time.

If you want other machines in your house to use this name server, just configure them. If you point their primary DNS server at your openSUSE box's address, they will use the same named you just configured.