DNS劫持与污染

原文:http://bianwenbo.tk/2011/11/22/dns%e6%b1%a1%e6%9f%93/?utm_source=rss&utm_medium=rss&utm_campaign=dns%25e6%25b1%25a1%25e6%259f%2593

Attention: 域名解析的基本原理就是把域名翻译成IP地址,阅读以下文章前请进一步了解何为DNS

――――――――――――――――邪恶的分割线――――――――――――――――

DNS劫持

  DNS劫持的数据包是在路由器上,对请求返回假的IP地址(访问的是假网址)或者什么都不做使请求失去响应(网络不能反应)。

解决DNS劫持的方法:

  在Interner协议(TCP/IP)的属性页里,选择"使用下面的DNS服务器地址",首选和备用DNS服务器分别设置为8.8.8.8和8.8.4.4Google Public DNS),完成后重新连接上网。

  原理是由于域名劫持往往只能在特定的被劫持的网络范围内进行,所以在此范围外的域名服务器(DNS)能够返回正常的IP地址。但是由此引出了域名劫持通常相伴的措施――封锁正常DNS的IP。[中国大陆境内的客户端不一定能获得正确的解析结果]

DNS污染(DNS cache poisoning/pollution)

  DNS污染的数据包是在路由器旁路产生的,故无法阻止正确的DNS解析结果返回。但由于旁路产生的数据包发回的速度较国外DNS服务器发回的快,操作系统认为第一个收到的数据包就是返回结果,从而忽略其后收到的数据包。

验证DNS污染的办法

  我们在命令行下通过这样一条命令 nslookup 域名 144.223.234.234,即可判断该域名是否被污染。由于144.223.234.234不存在,理应没有任何返回,但如果我们却得到了一个错误的IP(不确定),即可证明这个域名已经被DNS污染了。

解决DNS污染方案

  1、修改hosts文件,操作系统中Hosts文件的优先级高于DNS服务器,操作系统在访问某个域名时,会先检测HOSTS文件,然后再查询DNS服务器。可以在hosts添加受到污染的DNS地址来解决DNS污染和DNS劫持。

  2、如果你是Firefox only用户,并且只用Firefox,又懒得折腾,直接打开Firefox的远程DNS解析就行了。在地址栏中输入about:config找到network.proxy.socks_remote_dns一项改成true。

  3、使用各种SSH加密代理,在加密代理里进行远程DNS解析,或者使用VPN上网。

  4、通过一些软件编程处理,可以直接忽略返回结果是虚假IP地址的数据包,直接解决DNS污染的问题。


发表评论