This issue will be (is?) solved with the "Client IP information in DNS requests " DNS extension[1]. A year ago, David Ulevitch (OpenDNS's owner) mentions in HN post that he already got it working for all Google properties and few other CDNs (except Akamai).[2]
My guess is that they're not receiving strong demand from their major customers - since they have so many massive users and a long-term code-base it makes sense that they'd be rather conservative.
This article is from 2010, back when the edns-client-subnet [1] draft wasn't even published.
I believe most CDN's are now whitelisted with Google's and OpenDNS's edns list, so you'll much better results. also see edns-client-subnet demo [2]
This article misses one of the main reasons for people to use OpenDNS/Google DNS, which is to prevent ISP hijacking of domain names or redirection of unresolved domains.
I personally use it because I am extremely uncomfortable with my ISP catching mistyped URLs and redirecting me to a page filled with ads, searches, and other bogus things.
Ah, my bad. I actually use Google DNS because they don't hijack anything, which was my prime reason. I'd assumed Open DNS was similar.
That being said, I can still get behind at least choosing to let someone hijack those pages, rather than sticking with a company that does it automatically.
You don't have to pay them to stop filtering - just make an account and disable the setting (my information is a few month old, I've since changed to Google DNS - it is faster for me).
Not sure what you mean by unbound, but your Windows box does not have a DNS server installed by default. Most people depend on the DNS server that their ISP runs. If the ISP is doing unwanted redirects or filtering, or is just unreliable, you can point your DNS to OpenDNS which is fast and reliable. You can either use it for free and it will show you ads when you typo, or you can pay them some money for their service. (edit: expanded)
Unbound is a recursive & caching DNS server. You can use it to query DNS "directly", avoiding your ISP's DNS server.
At some point in time I'd have said this would increase your DNS latency, but given the poor level of service that many ISP servers provide, I don't think that's true anymore. Though I have no data to back this up, I suspect many home users visit a fairly small set of websites and so DNS caching would work very well.
Oh I see now. OK so yes, you can either admin your own DNS server, or get an ad-supported version, or pay someone a small amount of money to do it for you. I think that about covers the options :)
In dealing with clients, I have found that DNS routinely sucks from nearly all ISPs. It seems the most important thing they put the least amount of resources into.
I have never seen an Israeli ISP do that. (Although, there were reports a few years ago that Bezeq intercepted .torrent files to add their own trackers to the file.)
I have Cablevision and they technically allow you to opt out. But even after opting out, I still get that damned useless ad-infested search page sometimes, seemingly at random. I'm not sure if it's because of their incompetence of malicious intent.
If you're using Comcast Business, I've yet to find a way to do this. Comcast Support (email, phone, live chat) also have no idea. If anyone knows how to do it, please let me know.
That is my experience with comcast dns too. Although, I have had some issues with google dns too on a rare occasion where I had to change back to something else (comcast or opendns) for a short while until google dns worked again. They never hijacked anything, but it just stopped working for a brief period.
Verizon allows you to opt out of this, which incidentally I have done. These instructions are for FiOS, but I am proof that they work for DSL as well. (I still gripe that they don't tell people about this...)
My provider at home, Rogers Cable (Toronto), will inject things in the pages you see when you're approaching your bandwidth cap. It's extremely irritating and somewhat worrying.
Basically they mangle the HTML and slap in their own banner which means they must be doing some kind of stream inspection and processing to manage this. I do not have a proxy configured, and requests don't indicate that this is being done.
"Fairly simple to set up BIND" - well yes, for someone with access to the local gateway and the ability to install a caching DNS resolver, this is a good option.
Unfortunately, most crappy DNS servers are with residential ISPs - and most residential users don't run anything near an usable distro on their gateways. For a user who's just competent enough to change the DNS settings, the "slow CDN access" versus "spotty DNS" tradeoff will be heavily weighted towards the first option.
This is what I do. Caching DNS resolver needs no configuration whatsoever. It is literally "apt-get install pdns-recursor" and edit /etc/resolv.conf to point to 127.0.0.1.
It's worth noting that ISP-run DNS services aren't entirely free of these issues either.
In Australia, both Vodaphone and (to a lesser extent) Optus resolve all DNS queries from a server farm in a single location. It is unfortunate, because mobile clients are the perfect use-case for highly localized CDNs.
This has long been an issue; particularly for Australian users where using a foreign DNS server will cause CDN requests to travel across the Pacific Ocean. This is one example (from 2010): http://apcmag.com/why-using-google-dns-opendns-is-a-bad-idea...
From my location Google DNS terminates within the country - so no issue there. Not sure about OpenDNS, however.
Network neophyte here. Am I wrong in that CDN's ultimate goal is geolocation of the requestor, and they're using DNS to do that? And if the user uses a DNS that isn't "near" him, this scheme fails?
If that's correct, is there no better way to do user geolocation than the nameserver they choose to use? That seems weird to me.
The Google DNS team built the tool above, and it allows you to test your current setup against a number of DNS vendors + allows you to share the data, etc.
If I understand correctly, these are addressing two different issues. Namebench seems to be interested in finding out which DNS server will return a look up request the fastest. The OP though is saying that because global DNS providers don't currently pass along information about my local IP address, I'll get a suboptimal response that points to an IP address that may not be the fastest for me.
Or does namebench actually test the IP addresses you get in response to test their response time?
CDNs are typically used for transferring large objects, for whom the anycast routing instability is a real concern. If a client's anycast endpoint changes in the middle of a connect, the client will receive an immediate RST from the new server.
Major CDNs do use anycast routing, in conjunction with DNS/geolocation based routing in locations where anycast's results would be unpredictable (usually in locations where there are many POPs.)
In theory yes, but BGP anycast routing is really bad in performance terms. BGP doesn't care about performance, only politics and cost, so you can get all sorts of weirdness.
This is actually a pretty good idea if you've noticed some sort of systemic problem with your ISP's DNS. If the secondary is likely to be down at the same times as the primary, it's a good way to avoid that dependency.
Funny, I was wondering about this exact thing yesterday. Trying Google though (hadn't thought about other DNS providers), the traceroute went to somewhere within Europe or maybe even Amsterdam. Being from the Netherlands, that'd be very close, there just is no way 13ms is a ping from America.
So I guess 8.8.8.8 is multihomed or however they call it. Still, the geoIP databases claim it to be in Mountain View where Google is, so I wasn't not sure exactly how this affected 'split horizon' (on which, as far as I know, the DNS decides which IP(s) to return for the requested hostname).
According to the compute engine talks from this year's google IO, they have their own private network covering most of the world and uses anycast for external Internet Addresses. This basically means that a connection from you will be routed to the nearest google data center, and from there to the final server using google's private network.
Google DNS uses both anycast and multihoming, so you will both be routed to the nearest google data center and then to the closest DNS server inside google's private network.
To be precise, HonestDNS uses Anycast routing to situate the same IP at multiple places around the globe, letting BGP and least cost path routing send users to their best location. The DNS protocol works particularly well for this.
[1]: http://tools.ietf.org/html/draft-vandergaast-edns-client-ip-...
[2]: http://news.ycombinator.com/item?id=2941948