DNS劫持就是dns系统被入侵或人为的修改某些记录,如A记录,用专业的术语来讲就是通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址。
DNS劫持会导致我们访问了一些不存在的或不稳定的网站的时候,访问到的却是电信114搜索(详见月光博客《断网后互联星空的浏览器劫持》)或访问Google却显示了Baidu的主页(详见月光博客《Google博客搜索摇身一变成百度》)。
如果需要确认自己是否处在DNS劫持的环境中,我们可以在Windows命令行cmd中使用Windows自带的网络诊断工具nslookup查找一个不存在或不稳定的域名进行一下网络诊断:
C:\>nslookup www.SomeRandomDomainName.com
Server: ns-pd.online.sh.cn
Address: 202.96.209.133
Non-authoritative answer:
Name: www.SomeRandomDomainName.com
Address: 218.83.175.155
我们看到,www.SomeRandomDomainName.com本应该是一个不存在的域名,DNS服务器应该告诉我们这个域名不存在,但我们却看 到DNS服务器告诉我们这个域名的IP为218.83.175.155(不同地区的114搜索的IP都不同,可能得到的IP并不是 218.83.175.155,而是自己所在地区的114搜索的服务器IP地址),而这个IP却是114搜索的IP,导致我们在浏览器中访问这个网站时看 到的是114搜索的网页。
如果需要解决DNS劫持的问题,可以把自己的域名解析服务器换乘国外的,比如OpenDNS(详见月光博客《使用OpenDNS解决DNS域名劫持》)或Google DNS(详见月光博客《Google推出免费DNS服务》)。
解决之后我们再次使用nslookup查找一下这个网站:
C:\>nslookup www.SomeRandomDomainName.com
Server: google-public-dns-a.google.com
Address: 8.8.8.8
*** google-public-dns-a.google.com can't find www.SomeRandomDomainName.com: Non-existent domain
我们看到DNS服务器正确的告诉了我们这个域名不存在,我们不会被劫持到114搜索了。
解决DNS劫持的方法:
在Interner协议(TCP/IP)的属性页里,选择"使用下面的DNS服务器地址",首选和备用DNS服务器分别设置为8.8.8.8和8.8.4.4(Google Public DNS),完成后重新连接上网。
原理是由于域名劫持往往只能在特定的被劫持的网络范围内进行,所以在此范围外的域名服务器(DNS)能够返回正常的IP地址。但是由此引出了域名劫持通常相伴的措施――封锁正常DNS的IP。[中国大陆境内的客户端不一定能获得正确的解析结果]
通俗理解:
DNS劫持,指用户访问一个被标记的地址时,DNS服务器故意将此地址指向一个错误的IP地址的行为。
范例,网通、电信、铁通的某些用户有时候会发现自己打算访问一个地址,却被转向了各种推送广告等网站,这就是DNS劫持。