How can I choose between using my ISP's DNS, or Google's 8.8.8.8?

Solution 1:

There is a useful tool that test the different DNS nameservers available (your ISP, current configuration, DynDNS, Google Public DNS and other one).

From my point of view Google DNS are pretty fast but depending on the load GoogleDNS supports my ISP Dns is sometimes faster.

NameBench (Linux/Windows/Mac OS X)

Output : alt text
(source: googlecode.com)

Solution 2:

How about running your own caching DNS servers? You probably already host DNS for your internal services, so why not just setup those servers to do direct lookups instead of forwarding requests to your ISP or Google?

The benefits:

  • They are very close to your users (< 2ms)
  • Caching DNS is dead simple to run
  • Caching is still fairly effective since your users are probably accessing the same sites (e.g. serverfault.com and facebook.com)
  • You can do logging of DNS requests for troubleshooting
  • No need to worry about someone else logging your DNS queries
  • Required for split-brain DNS zones

Solution 3:

Larger websites and services, such as Facebook, often use a Content Delivery Network (CDN) to route your request to the closest (and therefore likely fastest) server for their content. They do this via DNS anycast routing, by returning the closest server's address when you perform a DNS query via your DNS server. In other words, where your DNS server is located physically can have an effect on the speeds and response times you get from certain CDN's. Use a DNS server that's close by.

However, these public DNS servers use anycast routing to provide your with a DNS response from the nearest server. Otherwise they couldn't provide you with such fast responses and high uptimes. For example, when you query 8.8.8.8 from The Netherlands, the server that answers the query is not the same one as when you query from Japan. This may partially compensate the CDN problem.

Google itself has a warning to the same effect (where resolver is the DNS server):

Note, however, that because nameservers geolocate according to the resolver's IP address rather than the user's, Google Public DNS has the same limitations as other open DNS services: that is, the server to which a user is referred might be farther away than one to which a local DNS provider would have referred. This could cause a slower browsing experience for certain sites.

Source: https://developers.google.com/speed/public-dns/faq#cdn

I couldn't find a list of Google's public DNS locations, but OpenDNS has a list of cities on their status page that should give you an idea which one you're closest too.


Solution 4:

Every request sent through a DNS server can be logged and that data collated. This isn't tin foil hat stuff, I know companies that do similar. Who do you trust more with that data, your ISP or Google? That should be part of the decision.
Secondly, the reason everyone shouldn't be using Google's DNS is down the whole nature of the Internet. As it stands, no one company runs or controls the Internet in any way - you have a choice which ISP you use, who you host with, where you host, how you host, who your DNS is hosted with, who you use for your DNS lookups. There is no one person in control and there is no single point of failure or compromise.
Please note I'm not saying don't use Google, just don't put all your eggs in the same basket. Why not use 8.8.8.8 and your ISPs primary nameserver?


Solution 5:

Perhaps you aren't all "tin foil hat" yet; but Google internally is wondering if you should be. There was an internal Google document leaked recently where they ponder if they should start mining all the data they possibly can.