DNS污染,又称为域名服务器缓存污染(DNS cache pollution)或者域名服务器快照侵害(DNS cache poisoning)。

DNS污染是指一些刻意制造或无意中制造出来的域名服务器分组,把域名指往不正确的IP地址。

一般来说,网站在互联网上一般都有可信赖的域名服务器,但为减免网络上的交通,一般的域名都会把外间的域名服务器数据暂存起来,待下次有其他机器要求解析域名时,可以立即提供服务。一旦有相关网域的局域域名服务器的缓存受到污染,就会把网域内的电脑导引往错误的服务器或服务器的网址。

某些网络运营商为了某些目的,对DNS进行了某些操作,导致使用ISP的正常上网设置无法通过域名取得正确的IP地址。某些国家或地区为出于某些目的防止某网站被访问,而且其又掌握部分国际DNS根目录服务器或镜像,也可以利用此方法进行屏蔽。

这和某些运营商利用DNS劫持域名发些小广告不同,DNS污染则让域名直接无法访问了,非得修改DNS服务器不可。

如何查看DNS污染?

  1. 可以通过nslookup命令来查看是否能正常解析:
nslookup abc.com 114.114.114.114    

其中114.114.114.114为当前电脑配置的DNS服务器,可通过ipconfig /all来查看。

  1. 再通过Google的DNS服务器来验证,如果两者解析出来的结果不一样,很有可能被污染:
nslookup abc.com 8.8.8.8

也可以使用一个不存在的DNS通过命令来查看解析,如果能解析出错误的IP,也有可能被污染。

DNS污染解决方法

  1. 使用各种SSH加密代理,在加密代理里进行远程DNS解析,或者使用VPN上网。
  2. 修改hosts文件,操作系统中Hosts文件的权限优先级高于DNS服务器,操作系统在访问某个域名时,会先检测HOSTS文件,然后再查询DNS服务器。可以在hosts添加受到污染的DNS地址来解决DNS污染和DNS劫持。
  3. 通过一些软件编程处理,可以直接忽略返回结果是虚假IP地址的数据包,直接解决DNS污染的问题。
  4. 使用DNSCrypt软件,此软件与使用的OpenDNS直接建立相对安全的TCP连接并加密请求数据,从而不会被污染。
参考资料