西厢计划第三季 - Ignore the Great Firewall

来源:http://liruqi.wordpress.com/2011/07/22/west-chamber-season-3

本文google docs 链接:https://docs.google.com/document/d/1-PurF8_pJoLVJ7IqMfy5pdATjzR1_B5gqSlc2B5VPcY/edit?hl=en_US

This post is inspired by http://obmem.info/?p=615

By ‘ignore’ instead of ‘bypass’, we mean working without intermedia server.scholarzhang is a great attempt, but currently it hardly work. scholarzhang contain three parts: zhang(client-side connection obfuscation), cui(server-side connection obfuscation), gfw(drop gfw dns hijacking packets) (ref 项目计划). On the client, we need to run zhang & gfw. The difficult part is that, GFW send RST packages to both ends, client & server, and Mr. zhang is trying to save reuse the connection after server received RST package(ref), 我估计 CUI 也是在尝试做类似的事情. The limitations are summarized in 项目计划:

“首先作为开发者,对于这个项目,应该消除幻觉,着眼缺点。西厢的弱点在README.wiki的局限一节已经描述得比较清楚,主要是两种问题:不 稳定和易变。不稳定可能造成在使用过程中可能出现连接失败的情况,易变可能造成GFW升级之后如果西厢不升级便无法使用。不稳定是由于张某和崔某实际上做 的是通过协议hacking弥补GFW造成的破坏,要求一种RFC规定的理想状况,原理就是不稳定的;而西厢的原理部分所依赖的GFW指纹和漏洞机制是易 变的,需要即时更新。因此,“没有银弹”,西厢也不是对GFW的银弹,我看到自由亚洲的报道夸大其事,我想开发者关注的应该是bug才对。 “

However, if Miss Cui make a move to help Zhang in, and this will make the task much easier. In fact, Ignoring the Great Firewall of China and 西厢计划原理小解 both mention a way to ignore GFW: just ignore and drop the RST packges sent by GFW.

“大家都知道,连接被重置的本质,是因为收到了破坏连接的一个 TCP Reset 包。以前剑桥大学有人实验过,客户端和服务器都忽略 Reset, 则通信可以不受影响。但是这个方法其实只有理论价值,因为绝大多数服务器都不可能忽略 Reset 的 (比如 Linux, 需要 root 权限配置iptables, 而且这本身也把正常的 Reset 给忽略了)。”

(好吧用中文,写完了我还要打dota)正常的 tcp 连接的创建和结束过程中,都不需要用到 Reset。客户端直接drop 掉 Reset,一般不会有问题,至少是可以正常上网的;服务器上如果直接这么做,可能会产生一定的资源消耗。但是这种方式显然比最初始的西厢计划更有效。

具体操作方法

在客户端和服务器上分别用 root 执行:
iptables -A INPUT -p tcp -m tcp –tcp-flags RST RST -j DROP
如果用的是 FreeBSD的 ipfw,命令换用:
ipfw add 1000 drop tcp from any to me tcpflags rst in
如果客户端用的windows,拿西厢项目中的 windows 客户端试试。

局限

无法应对 IP 封锁。如果 ping IP 都超时,基本无法离开中间服务器绕墙。

可能的问题

1) 如何让服务器识别 GFW 发送的 Reset 包,而正常处理其它 Reset。很有可能的情况是,西厢 CUI 模块已经解决了这个问题,甚至服务器上直接安装 CUI 即可达到预期效果。
2) Windows 客户端的开发。linux 环境上安装 zhang 和 gfw 是相对容易的,西厢目前也有windows 客户端,但我不清楚目前可用性如何。(如果用方便翻墙作为理由推广linux 倒也不错)
3) 也是最麻烦的问题:这个方法如何推广。如果是个人的vps 上的博客域名被污染,只需要打一条命令就可以搞定;但是如何说服 facebook 在他们服务器上安装这些东西呢?这需要对 CUI 模块做认真的后续开发、测试,以及文档完善。这些准备工作做好了,如果国外的互联网公司认为中国用户足够重要,也自然会考虑这些事情。当然,客户端的推广 同样重要。本文最开始打算用英文写,也是希望国外互联网公司能方便地找到这里。

政策风险

总结一下,绕墙还是有办法的,理论上和技术上,西厢计划已经做了大量的尝试。如果用这种方式,接下来需要做的,是些相对体力的事情。我建议大家如果 有被墙的域名,主机上ignore 了 RST,在留言中说一声,以表达对GFW 的抗议和蔑视。。。我自己的域名先不说了,一是自己还没能部署上,其次,域名里面还有我的邮箱和电话。。。总之,安全第一,注意隐蔽!

匿名性

原始的西厢计划小组成员基本是匿名参与。此次计划,我只是希望给大家提供一个思路,我个人能力和精力有限,个人信息也在网络上暴露太多,不打算直接参与。

写到这里,反而不知道该用什么标题。如果非要给这一行动起名,那就叫“西厢计划第三季” 吧。


发表评论