Some ISPs have taken advantage of missing or broken DNS records, using them as an excuse to guide users to their own pages. From an Internet purist’s point-of-view this is bad behavior. I call it DNS clobbering.
In my article Google’s DNS Servers Rock! I mentioned that some ISPs provide a questionable feature that alters the results of DNS queries in unexpected ways, to their advantage.
In DNS if a domain name doesn’t exist the response should have the no such domain flag set. It’s that simple. So for instance I look for a resource record with the name webproxy.drjohnstechtalk.com:
dig webproxy.drjohnstechtalk.com ; <<>> DiG 9.7.1-P2 <<>> webproxy.drjohnstechtalk.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 26054 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;webproxy.drjohnstechtalk.com. IN A ;; AUTHORITY SECTION: drjohnstechtalk.com. 10800 IN SOA ns71.domaincontrol.com. dns.jomax.net. 2011040901 28800 7200 604800 86400
See the NXDOMAIN and the ANSWER: 0? That's what I want to see for a non-existent domain name such as this. So all is good with my nameserver (in this case supplied by Amazon Cloud Northeast).
Now let's try that at home, where I have CenturyLink as my ISP. Lo and behold, I get a different answer, a completely different answer. Unfortunately I have to be on their network to get the result and I currently am not. I will try their DNS server 188.8.131.52. I get:
dig www.xyzaabc.com @184.108.40.206 ; <<>> DiG 9.3.2 <<>> www.xyzaabc.com @220.127.116.11 ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1394 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.xyzaabc.com. IN A ;; ANSWER SECTION: www.xyzaabc.com. 60 IN A 18.104.22.168 ;; Query time: 46 msec ;; SERVER: 22.214.171.124#53(126.96.36.199) ;; WHEN: Thu Sep 01 22:46:04 2011 ;; MSG SIZE rcvd: 64
When you use a web browser the browser is initiating these types of queries for you. So if you mistakenly enter the URL www.drjohns.drsjohntechtalk.com in your browser I would like you to get a browser-generated page-not-found error. With CenturyLink that doesn't happen. They assign any unresolvable domain name which begins with www or web an IP address that points you to a search page on their own web server!
I'm sure they would argue that this is done as a convenience for the user, but I'm a user, too, and I don't like this trick of theirs. I'm sure it earns them a bit of revenue as well. I expect ISPs to follow the rules and the rules are pretty clear in this case.
Not all ISPs do this, by the way. A colleague with Comcast as his ISP did some DNS queries for me. The results showed that Comcast was not clobbering these types of resource records.
And it gets worse than that. I actually witnessed an enterprise application that behaved completely differently depending on whether an ISP played this sort of trick or not. And that's nasty.
It's hard for me to get more data except through cooperating customers of other ISPs. Try a few queries for these fictitious domain names and leave a comment with your results and what ISP you use:
If you don't have a nice home Linux system or cygwin containing dig, you can even use nslookup on a Windows OS. From a CMD window:
|ISP||Clobbers DNS?||DNS Server tested||Date||Example Clobber|
|CenturyLink||YES||188.8.131.52||2011||www.xyzaabc.com returns 184.108.40.206|
|Amazon Cloud NE||NO||172.16.0.23||8/2011||NA|
The Amazon Cloud had better not clobber DNS. That is a server environment, and servers may be affected much more than individual users if they get wrong DNS results back.