全透明的vpn路由对抗GFW的完美解决方案(设想)
GFW,著名的墙,会将国外许多安全技术网站、博客当成xxx网来处理。特别是屏蔽了google,这对于安全学习资料的搜寻来说几乎是致命的。这篇文章主要是想为建设一种完美的透明“翻墙”方案提供一些思路和部分解决方案。
一、GFW墙的原理。
(http://ostrich.cc/?p=251 这哥们对GFW研究分析的可谓入木三分。)
1、IP地址过滤。
GFW可以直接在IP层抛弃src、dst为特定IP的数据包
2、域名过滤。
dns污染。这个要分两个层次:一个是国内dns服务器对特定域名(黑名单上的)会返回一个错误的随机值;另一个是对于用户使用境外dns服务器的情况,GFW可以在tcp层修改dns应答数据包的返回结果,这样的效果和第一个相同,但是对GFW的开销比较大。也可以采用域名检测技术直接pass掉相应的dns请求包。甚至可以直接墙掉境外的dns服务器IP。
3、关键字检测配合tcp reset。
对tcp数据包进行关键字检测(域名或者内容)对GFW的开销是比较大的,由于这种检测不能限制tcp连接的建立,所以当GFW检测到某tcp会话出现黑名单关键字时,会向会话两端发送tcp reset,强制断开tcp链路。
二、翻墙的技术。
IP地址过滤——使用代理。
dns污染——使用远程dns解析。
关键字(域名)检测——使用加密。
ssh建立sock5+firefox远程dns解析,可以正常翻墙。
vpn,应该说是最容易的翻墙方式。
三、现有翻墙面临的问题。
1、最主要的就是一旦挂了vpn或sock5以后,访问国内的网站会变得非常慢。这个主要是因为IP包需要到境外绕一大圈导致的。
2、远程dns解析,面临国内cdn(只能路由)的挑战。主要原因是国内网通——电信的网间限速,导致跨网互访会变得非常慢。国内服务商会在网通、电信分别部署镜像服务器,前端利用cdn只能路由,分析用户请求的src ip属于网通还是电信,从而引导路由到对于的镜像服务器,从而避免跨网访问导致的速度超慢的问题。而远程dns解析,从境外dns服务器发送查询到国内的cdn时,cdn无法区分这个境外的ip是属于那个网络,就会随机返回地址。这样绕了一圈,远程dns查询返回的服务器IP很有可能是跨网访问的,从而导致访问国内的服务器变慢。
四、解决方案(初步思路)
1、使用智能路由。
主要是针对vpn翻墙的方式,可以使用智能路由,属于中国的ip地址都从原网关出去,其他的境外ip都从vpn网关出去。
这个目前google code有个项目叫“中国路由chnroutes” 。
http://code.google.com/p/chnroutes/downloads/list,可以区分境内、境外ip,并分别路由。
这种方式面临的主要问题是,一旦应用了该路由表,那么dns就会从vpn原本的远程解析,变成了境内的本地解析。无论使用缺省的,还是手动配置境外dns服务器,都逃不过GFW的dns污染和cdn的随机分配错误。
2、dns分类解析
这种方案是对不同的域名(支持子域名模糊匹配)使用不同的dns解析服务器。
可以使用dnsmasq(轻量级的dns缓存和DHCP服务器)。
这种方案面临的问题是需要配置域名/dns-server,不可能覆盖全面。
3、将两者结合,可以实现国内的IP和域名使用默认网关和dns,国外的域名和IP使用国外的dns(走vpn网关)和vpn网关。
最佳的实现方案是在用户的网关处进行智能路由和dns分类解析。这样对于用户来说就是完全透明的,不影响访问速度,也实现了透明翻墙。实际中,在局域网中架设这样一个网关服务器,就可以不更改局域网中每个用户的路由表,从而对整个网络实现完美的全透明翻墙服务。
实际配置实现正在研究中。有高手指点一二,欢迎给我留言。
参考实现文章一篇:http://shumeipai.nxez.com/2013/10/26/raspberry-pi-make-a-vpn-gateway-router.html
本文出自 “万物皆刍狗” 博客,请务必保留此出处http://cugou.blog.51cto.com/9637775/1586139
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。