A-A+

dns污染与dns劫持

2017年04月28日 安全 暂无评论 阅读 286 次浏览 次

这其实就是我们在翻墙过程中要解决的三类问题,也就是GFW屏蔽网站的三类大方法. 



GFW对DNS的污染 与 应对DNS污染的策略 

这里讲第一种,DNS污染.这其实是最有效而成本最低的方法,我相信你已经阅读过基本知识链接库里的关于DNS的部分了.那么现在你再看看关于DNS污染的介绍.简单来说,DNS服务器网络并不是一个严格查询的网络,利用大量主机散布错误的域名记录到网络中,很容易造成DNS污染. 

造成污染之后,如果你使用的DNS服务器刚好是被污染的(事实上想不被污染都很难),那么你访问一个被污染的网站,DNS服务器就会返回给你一个错误的IP,这个IP根本就是不可访问的,那么你是根本没办法的.就好像你要去北京,结果一个糟糕透顶的GPS告诉你北京在南半球,那你走到死也别想看升旗了... 



DNS劫持DNS污染一般只限于国内的DNS,但并不是国内DNS就一定被污染,只是你能知道的ISP的DNS,以及114之类的大型公共DNS,肯定是被污染的. 

那么你使用国外国外的DNS是否就安全了呢?在DNS污染问题上,这个问题是不存在的.但实际上你用Google DNS解析一下twitter.com,就会发现解析的IP还是错的,难道Google也没躲掉XX的污染? 

当然不是,如果Google DNS也被污染,那么全球所有使用Google DNS的人都不能上Twitter了. 

对于境外的DNS,GFW使用的是更高级的DNS劫持.这是一种以前经常被黑客使用,用于钓鱼的攻击手段,DNS污染你可以解释为失误操作,而DNS劫持就是赤裸裸的匪徒行径. 

具体的表现就是: 

1.你向Google请求taobao.com这个域名,GFW发现了,但是这个域名没什么问题,它不管. 

2.你向Google请求twitter.com这个域名,GFW还是发现了,这次它就要干点什么了.Google把正确的IP A返回给你了,但在返回给你之前就被GFW拦下来了,GFW在这个数据包里插入了一个错的IP地址B并作为最优先的结果,一起打包丢回给你. 

你的客户端收到了被GFW修改过的数据包,并且默认接受了最优先的数据包,也就是GFW给你的错误IP B.至此,一个DNS劫持就完成了. 

以上只是大致描述,更详细的内容请参考Wiki: 

http://en.wikipedia.org/wiki/DNS_hijacking 

对付DNS劫持,最简单最有效的方法,就是保持你和DNS服务器之间的通信不被劫持,VPN或者其他加密的通讯协议就是最好的方法. 



请记住,DNS污染一般针对国内DNS,DNS劫持一般针对国外DNS,但两者都不是绝对的.这两种攻击方式原理完全不同,要注意区分.DNS污染和劫持使用的40个IP这是目前搜集到的资料,如果你查询的域名指向了以下140个IP中的任何一个(当然可能还有更多,欢迎补充),那么毫无疑问是被污染了: 

"74.125.127.102", "74.125.155.102", "74.125.39.102", "74.125.39.113","189.163.17.5", "209.85.229.138", "249.129.46.48","128.121.126.139", "159.106.121.75", "169.132.13.103", "192.67.198.6","202.106.1.2", "202.181.7.85", "203.161.230.171", "203.98.7.65","207.12.88.98", "208.56.31.43", "209.145.54.50", "209.220.30.174", "209.36.73.33", "211.94.66.147", "213.169.251.35", "216.221.188.182", "216.234.179.13", "243.185.187.39", "37.61.54.158", "4.36.66.178", "46.82.174.68", "59.24.3.173", "64.33.88.161", "64.33.99.47", "64.66.163.251", "65.104.202.252", "65.160.219.113", "66.45.252.237", "72.14.205.104", "72.14.205.99", "78.16.49.15", "8.7.198.45", "93.46.8.89" 

实际上国内的DNS基本都是被污染的,这点不要怀疑,甚至于那些号称自己干净无比绝无污染的,例如国内的114DNS,阿里云的DNS,CNNIC的DNS,这些DNS最多只是不会给你乱跳转到广告页面,但对于Twitter,Youtube,Facebook这类网站,该被污染的一点不少.我基本上怀疑这种污染是政策性的,因为从现实上来看,国内其实有不少私人搭建的DNS就是干净的,并不是你在国内做DNS就一定会被污染. 





所以,最终干净的DNS解析方案.在路由器上,使用VPN(如何使用VPN是后面的内容,你目前只需要设置DNS)访问以下DNS服务器: 

Google DNS:8.8.8.88.8.4.4OpenDNS208.67.222.222208.67.220.220 

同时,不要在电脑上设置任何DNS和Hosts文件.因为你主机上的DNS设置和Hosts文件优先级是高于路由器的,如果你电脑上设置了一个被污染的DNS,那么电脑会优先使用这个DNS,翻墙路由给你做的工作就白费了,Hosts文件也是一样的. 

干净DNS带来的国内网站访问故障?没错,干净的DNS也会带来麻烦,最直接的情况就是,访问淘宝这类网站的时候经常出现图片打不开,js脚本加载不了的情况,即使能打开速度也很慢,另外普遍感觉国内网站解析速度慢,每次打开网站都要等上一点时间才能解析完成. 

至于原因,这类超大型网站都有很多的CDN服务器,甚至在国外也有,而当你用VPN访问Google DNS的时候,例如使用日本VPN,在GoogleDNS看来你就是个日本网络用户,他肯定优先给你找这些CDN服务器在日本的IP,其实就算你在国内,GoogleDNS也很少能正确的给你返回CDN服务器的国内IP. 

明明有更高速的国内IP,却把你引导到了更慢的国外IP,自然就觉得慢了,而淘宝CDN的一些国外IP甚至是国内无法访问的. 

另外,你访问GoogleDNS的时候是通过VPN访问的,那么你查询一个域名需要的时间,就是你到VPN的延迟+VPN到Google的延迟,除非你的VPN非常快,否则这个延迟基本都是100ms以上,大型网站一个页面上调用的资源涉及好几个域名,光解析这些域名就要用掉零点几秒,这个时间已经绝对是人可以感知到的了.而我们平时需要访问的网站,绝大部分都是国内网站,谁也不是一天上班啥都不用干光看Youtube,光刷twitter的,如果翻墙这10%的便利造成了剩下90%的不便,那翻墙的意义要大打折扣. 



如何解决这个故障?方法就是基础知识链接库里提到的dnsmasq.AutoddVPN项目上的wiki有更全面的说明,我基本就是做了点补充:https://code.google.com/p/autoddvpn/wiki/DNSMasq 



具体来说,我们可以通让dnsmasq帮我们做两件事:1.给一个域名指定一个IP这个就有点类似hosts文件了,相信你们以前在一些介绍关于App Store加速,Steam国内加速的文章时都了解过,基本方法就是强制把这些CDN服务器的域名指向国内IP.或者,在你用VPN翻墙的时候,你发现youtube的某个IP速度不够快,但另一个IP快很多,你也可以把youtube域名指向更快的那个IP: 

样例: 

address=/www.facebook.com/66.220.146.94 

如果你有很多地址,或者你想直接使用一些现成的hosts项目的成果,例如SmartHosts,你可以把hosts文件直接放在路由的ROM里,注意DD_WRT下你只能编辑/jffs下的文件,而OpenWRT任意目录只要有root权限基本都是可写的. 

例如你现在把host文件放到了/jffs/hosts这个路径上,dnsmasq选项可以这样写: 

addn-hosts=/jffs/hosts 

这样你以后直接编辑/jffs/hosts就行了,而不需要修改dnsmasq.conf. 

不过各类CDN域名众多,IP更多,要全部查找最快的IP是非常麻烦的,所以我们还可以让dnsmasq帮我们另一个忙: 



2.让指定的域名使用指定的DNS服务器进行解析这不就是我们想要的吗,国内的网站基本是不存在污染问题的,GFW才不会去污染网易搜狐优酷土豆,这有什么意义呢,好歹是纳税人呢.另外,使用.cn域名的网站基本都是国内网站也不会被污染,你说你要用.cn域名做个反动网站被封了,我就只能呵呵了,药不能停. 

这种用法的写法如下: 

server=/cn/114.114.114.114 

sever=/tbcdn.com/114.114.114.114 

这个的一个很大好处是向上匹配,第一条把所有.cn域名都用114解析了,第二条把所有的*.tbcdn.com都用114解析了. 

标签:

评论已关闭!

Copyright © 香港虚拟主机_美国虚拟主机_香港服务器_美国服务器租用托管 保留所有权利.   Theme  Ality 蜀ICP备14006632号-1

用户登录