*
0

翻越GFW-技术总结和指南

Posted by 晴云孤魂 on 2013 年 06 月 29 日 in Literary corner, 默认分类 |

为了迎接斯巴达,GFW进行了大规模的升级,原来经常使用的一些翻墙手段纷纷落马,被清除差不多了,比如OpenVPN、SSH等。向往自由是人类的天性,墙高了一尺,无奈我们也只有练就更高深的内力,才能自如地飞檐走壁。这篇文章是这段时间研究GFW的一些心得,同时在对最近新出现的一些翻墙方法和工具进行研究之后,也给出了怎么翻墙的一些对策和建议。

要想越过GFW,了解它是必要的。WIKI维护的词条“ 防火长城”是非常好的起点。

•防火长城( 英语:Great Firewall,常用简称:GFW或功夫网,中文也称中国国家防火墙 [1]、长城防火墙或万里防火墙)是对 中华人民共和国 政府在其管辖 互联网内部创建的多套 网络审查系统(包括相关行政审查系统)的称呼。起步于1998年 [2]。其英文名称得自于 2002年 5月17日Charles R. Smith所写的一篇关于中国网络审查的文章《The Great Firewall of China》 [3],取与Great Wall( 长城)相谐的效果,简写为Great Firewall,缩写GFW [4]。随着使用的拓广,中文“墙”和英文“GFW”已被用于动词,“GFWed”及“被墙”均指被防火长城所屏蔽。

如果你对网络技术缺乏了解,可能会难以理解WIKI对GFW的解释。简单的类比下,你可以把互联网想像成一个交通网络,在这个网络里,比较特殊的是每辆车都有一个GPS装置记录了每次上路的起点和终点。为了让这个交通网络顺畅,能让每辆车都到达想要的目的地,必须要对网络进行一些规则和限制,所以要在每个路口设置红绿灯。在互联网上,把这些红绿灯称为路由器。现在,你可以把GFW看成是在关键路口上设卡的一伙交通警察,它们偷偷的操控红绿灯,主要任务就是阻止你到达一些特定的地方。为此,它们所采取的方法有:

•粗暴的阻断。就是直接在路上设卡,检查你的目的地,如果你这辆车要到达的地方在黑名单上,GFW会直接将车扣下。甚至对某些地方会直接封路,谁也不让过。这是比较简单的方法,包括IP地址封锁、IP地址特定端口封锁。早期GFW主要采用的这些技术,比较容易绕过。

•巧妙的诱骗。在交通网络中,当我们想到达某个目的地时,需要一个路线来规划走哪些路?在哪转弯?就象GPS需要路径规则一个,在互联网上使用DNS、路由和BGP协议来共同完成这个任务。GFW从很早就开始干扰DNS(正式的名称叫DNS投毒污染),在你想访问黑名单上的网站时,GFW就伪装成你的GPS,告诉你一条根本无法到达的路线。早期的DNS干扰是在运营商的DNS服务器直接完成的,方式比较粗暴,可以通过简单的设定一个国外的正确DNS服务器绕过,这也是早期通过修改DNS和Hosts文件翻墙的由来。后期,GFW干扰DNS的方法取得了巨大进步,直接通过DNS协议投毒。想像一下,在你的车向GPS请求路线的时候,GFW直接叫住了给你送路线的邮差,将里面的正确路线替换成了一条永远到不了的绝路。在进步到DNS协议投毒后,修改DNS服务器的方法事实上已经失效了。好在在繁忙的互联网上,各种请求路线的DNS数量巨大,GFW并没有完全过滤,所以作为补充方法,在有些时候修改DNS还是有些用处的。要彻底排除GFW的DNS投毒干扰,还有待 DNSSEC协议或是 dnscrypt这样的工具的发展。 DNSSEC是可以验证DNS查询数据可信的协议, dnscrypt是加密DNS通信的工具,都可以加密DNS查询。可惜的是现在支持 DNSSEC和 dnscrypt的DNS Server还不多,基本都是些试验性或开源的服务器,速度较慢。而且GFW已经开始对 DNSSEC和 dnscrypt进行试验性的干扰,所以这一方法还有待发展。

•关键字阻断。在网络中,就象交通网络中运行数量和运载数量都最多的公共大巴一样,最常使用的就是HTTP协议。如果你以前在查询或是点击某些链接时突然出现了“服务器被重置”这样的错误,很可能你遇到的就是GFW的关键字阻断。就象交通网络中的设卡查车一样,GFW对道路中的所有大巴车(也就是HTTP协议)进行检查,如果里面有长得比较象通缉犯(也就是类似“江”、“youtube”、“刘晓波”这样的关键字)的人,就全部拦截下来。GFW从很早就对HTTP协议进行了关键字阻断,这些年间又经过了不小的发展,比如对google各种服务的定时干扰、增加对email电邮和eD2k电驴协议的审查等等。要知道,GFW的关键字阻断可是高精尖的技术,要从众多的流量里过滤并阻断这些关键字,需要大量的计算资源,GFW为此在骨干网和各省运营商的出口都部署了大量设备。不得不说,就是作为一个纳税人,个人都觉得太心痛了。为了绕过GFW的关键字阻断,广大翻墙者发展了不少有用的方法,常见的比如VPN、SSH等代理,其原理基本就是将大巴车(HTTP协议)伪装成私家车(VPN协议),从而避开GFW的检查和阻断。

•协议封锁。这么多年来,GFW逐渐为人所熟悉,翻墙的人也越来越多。就象交通网络中伪装的私家车多了,交通警察就会查车一样。使用VPN的人多了之后,GFW近两年开始对VPN进行干扰,很多ISP已经封锁了PPTP VPN,象自由门、无界浏览之类的翻墙软件也被定点清除。由于个人翻墙者使用OpenVPN搭建VPN服务器比较多,最近的18大召开,GFW甚至发展到对OpenVPN进行定点清除,所以如今单独使用VPN翻墙也不是那么可靠了。

•记录。相比检测、阻断和干扰等,最可怕的可能还是GFW的记录功能。 GFW对连接境外网络的起始时间、源地址、目的地址、端口和服务类型等进行了记录,有很大可能对VPN、SSH、HTTP、HTTPS、POP3、SMTP和IMAP也进行了相应记录。GFW近期发表的很多论文有很多数据融合、聚类和分类的内容,各种神经网络、概率模型、人工智能的应用了不少,至少从论文看,对记录的应用还在理论阶段。一旦在模型和应用方面有突破,这货留下来的记录有可能恢复任意人的浏览记录,简直都有点象“黑客帝国”里的天网了。

GFW对境外网站的封锁,使得很多人的正常工作和生活被严重干扰,为此人们发展出了形形色色的翻墙技术。下面简单分析一下:

•修改Hosts。因为对于添加到了Hosts中的主机,就不用再去DNS查询目的地址,所以这是对付DNS投毒的好办法。这一方法的问题是修改比较繁琐,使用上不方便。

•修改DNS。在不使用其它代理技术的情况下,这个只能避开ISP的DNS干扰,对于GFW的DNS投毒无能为力。但与其它代理技术结合,修改DNS就是必要的了,使你能够查询到真正的目的地址。

•VPN、自由门、无界等其它代理方式。在你的电脑与VPN服务器之间建立一个隧道,从隧道通过VPN服务器再去浏览网络,VPN服务器在墙外时你已经翻过GFW的高墙了。之前这是比较靠谱的翻墙方法,可惜现在GFW已经对VPN特别是用OpenVPN实现的VPN隧道进行了定点清除,连接成功率大幅下降,而且即便连接成功也会被定时切断。市场上还有一些可以翻墙的路由器,其实大多是在底层绑定了VPN,也属于这一类。这些产品的使用简单,缺点就是移动不便,还有就是质量严重信赖供应商,选择靠谱的供应商非常重要。

•Goagent、西厢等HTTP代理方式。在OpenVPN被定点清除之后,HTTP代理方式反而成了比较靠谱的翻墙方式。因为建立隧道使用的是HTTP协议,隐藏在无穷无尽的HTTP浏览流量之中,GFW也很难识别。当然你的Goagent服务器必须可用,GAE已经被GFW定点清除,在GAE搭建的Goagent服务器并不稳定,最好是使用自建的服务器。

•ShadowSocks等Socks代理方式。比HTTP代理更难识别,Socks代理直接使用TCP建立隧道。只要你的ShadowSocks服务器没有被定点清除,这种翻墙方式是最难被发现的,也是最靠谱的。可惜ShadowSocks使用的是Socks代理,不是所有软件都支持,特别是iOS在不越狱时就不支持。

除了以上所说的翻墙方法,还有一些辅助方法也是非常有用的,比如:

AC。PAC并不是用于翻墙,而是为了改善翻墙的体验。使用VPN、Socks等代理翻墙的时候,会感觉访问墙内的网站速度特别慢。这是因为所有流量都通过代理绕回来访问了,当然速度会慢。 设置好之后, PAC可以识别要访问的网站,如果在墙内就直接访问,如果在墙外再通过代理访问。这样显著改善了上网浏览的速度。

•obfsproxy。obfsproxy是著名的TOR项目组开发的开源软件,主要目的是将各种网络通信封装为一种混杂通信。obfsproxy可以混杂Goagent、ShadowSocks等其它代理技术一起使用,对经过这些代理的数据包进行加密,并且混杂一些无用信息,使得GFW难以侦测到有效流量,从而降低被屏蔽的可能性。

GFW发展至今,已经建立了一套探测、封锁的方法体系, 翻墙的难度越来越高,这样的趋势大概会不断继续下去。不过,需要翻墙的人从不需担心,只要不是真正的物理断网,实际上总是能有方法的。

翻墙时最关键的一点就是伪装。GFW不是封锁所有境外网站,只需将访问被封锁网站的流量隐藏在访问没有被封锁网站的流量中,就可以自如地翻越GFW,畅游无锁的互联网世界。Goagent、ShadowSocks由于使用私有协议,将翻墙流量隐藏到了几乎无穷无尽的http和tcp流量中,就是这类GFW很难封锁的代理的典型代表。而HTTPS、VPN、SPDY这类标准协议,GFW对流量进行统计学模型匹配,封锁的准确率是相当高的。但这类标准协议有一个好处是因为标准化,客户端的支持特别好,使用也很简便,所以有些时候也是必不可少的。在选择这类代理服务器时就应该选择相对小众的,流量较少的供应商,比较安全。

我目前使用的翻墙方法是:修改DNS+PAC+GAE Go[p]

 

agent,因为使用的是GAE的免费空间,所以是零成本。在我的电脑上,用GoAgentX作为代理客户端,结合SwitchySharp和PAC,几乎感觉不到GFW的存在。在我的手机上,则使用了Goagent iOS。此外,我维护了一个ShadowSocks server作为万一Goagent不能用时的备份,也是使用的国外免费空间。

GFW的封锁是多管齐下的,所以在翻墙时也不要指望能一种方法包打天下,结合使用不同方法,各施其责,就能轻松越过。GFW的封锁也不是一成不变的,所以也不要指望能够一劳永逸。

为了自由的互联网,翻越GFW的战斗将是一个长期的过程,我们能够也应该在一起努力。

标签:,

Copyright © 2011-2024 晴云孤魂's Blog All rights reserved.
This site is using the Desk Mess Mirrored theme, v2.5, from BuyNowShop.com.

普人特福的博客cnzz&51la for wordpress,cnzz for wordpress,51la for wordpress