Top Banner
GFW 的工作原理及突破技术 (清华大学计算机科学与技术系,北京,100084GFW 备受争议,几家欢喜几家愁。本文从实例出发,探讨了 GFW 的工作原理,总 结了当前针对 GFW 的突破技术,并对这些突破技术进行了比较和分析。 关键词Great FirewallGFWCensorshipAnti-Censorship,翻墙 1 引言 GFW,即 Great Firewall of China,是中国政府监控和过滤互联网内容的一套软硬件系统 的俗称[1],最初得名于计算机专家 Charles R. Smith 2002 年发表的一篇网评 [2],本意是 取与 Great Wall(长城)相谐的效果,后被大众广泛使用而沿袭至今。 GFW 的主要作用在于分析和过滤中国境内外网络的资讯互相访问,也就是说,GFW 仅对国内读者访问中国境外的网站进行干扰,也干扰国外读者访问主机在中国大陆的网站 [3]。由于网络环境的限制,本文主要探讨的是前一种情形。 文章后续部分安排如下:第 2 章给出文中使用的术语和约定;第 3 章探讨 GFW 的工作 原理;第 4 章总结当前针对 GFW 的突破技术;第 5 章对这些突破技术进行比较和分析;第 6 章总结全文;致谢和参考文献分别在第 7 章和第 8 章。 2 术语和约定 盾、墙:GFW 的别称。 被盾:访问内容被 GFW 屏蔽,亦作“被墙”。 翻墙:突破 GFW 访问被屏蔽内容,亦作“穿墙”。 Google.com:本文所出现“Google.com”均指代http://www.google.com/ncr 1 ,而非国内 访问http://www.google.com 自动重定向之http://www.google.cn Google.cn:特指http://www.google.cn 3 GFW 的工作原理 1 ncrno country redirect,不使用国家重定向
19

GFW的工作原理及突破技术

Oct 21, 2014

Download

Technology

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: GFW的工作原理及突破技术

GFW 的工作原理及突破技术

丁 旋

(清华大学计算机科学与技术系,北京,100084)

摘 要:GFW 备受争议,几家欢喜几家愁。本文从实例出发,探讨了 GFW 的工作原理,总

结了当前针对 GFW 的突破技术,并对这些突破技术进行了比较和分析。

关键词:Great Firewall,GFW,Censorship,Anti-Censorship,翻墙

1 引言

GFW,即 Great Firewall of China,是中国政府监控和过滤互联网内容的一套软硬件系统

的俗称[1],最初得名于计算机专家 Charles R. Smith 在 2002 年发表的一篇网评 [2],本意是

取与 Great Wall(长城)相谐的效果,后被大众广泛使用而沿袭至今。

GFW 的主要作用在于分析和过滤中国境内外网络的资讯互相访问,也就是说,GFW 不

仅对国内读者访问中国境外的网站进行干扰,也干扰国外读者访问主机在中国大陆的网站

[3]。由于网络环境的限制,本文主要探讨的是前一种情形。

文章后续部分安排如下:第 2 章给出文中使用的术语和约定;第 3 章探讨 GFW 的工作

原理;第 4 章总结当前针对 GFW 的突破技术;第 5 章对这些突破技术进行比较和分析;第

6 章总结全文;致谢和参考文献分别在第 7 章和第 8 章。

2 术语和约定

盾、墙:GFW 的别称。

被盾:访问内容被 GFW 屏蔽,亦作“被墙”。

翻墙:突破 GFW 访问被屏蔽内容,亦作“穿墙”。

Google.com:本文所出现“Google.com”均指代http://www.google.com/ncr1,而非国内

访问http://www.google.com自动重定向之http://www.google.cn。

Google.cn:特指http://www.google.cn。

3 GFW 的工作原理

1 ncr,no country redirect,不使用国家重定向

Page 2: GFW的工作原理及突破技术

人们对于 GFW 工作原理的猜测从来没有停息过,因此尽管其真实的实现细节仍然无从

知晓,一些有着强烈好奇心的学者以及国内的翻墙爱好者们还是瞥见了一些端倪。普遍的看

法[1][3]是,GFW 的工作机制主要包括 IP 黑名单、内容审查和 DNS 劫持等三种,下面我们逐

一举例探讨。

3.1 IP 黑名单 3.1.1 一个例子

视频分享网站Youtube在国内遭到封禁已是众所周知的事实,由于使用域名访问会存在

DNS劫持问题(详见第 3.3 小节的讨论),这里 直接以其IP地址之一 208.65.153.238 来举例说

明GFW的IP黑名单机制。

用浏览器访问http://208.65.153.238有如下结果:

执行 ping 命令也有超时现象:

Page 3: GFW的工作原理及突破技术

上面两幅图均表明,目标主机未能(或无法)及时响应我们的请求,为了一探究竟,我

们进一步执行 tracert 命令如下:

结果显示,路径断在了主机 202.112.61.214 的地方。

3.1.2 另一个例子

访问网站牛博国际存在同样的问题,对其IP地址执行tracert也有类似结果:

Page 4: GFW的工作原理及突破技术

3.1.3 猜测

根据以上结果我们猜测,GFW 很有可能维护了一张 IP 黑名单,一旦发现发往黑名单中

地址的请求数据包,就直接将其丢弃,这将导致源主机得不到目标主机的及时响应而引发超

时,从而达到屏蔽对目标主机的访问的目的。

进一步,我们有理由认为主机 202.112.61.214 就是 GFW 的设备之一,为了证实这一猜

测,我们用 Nmap[6]对其进行了扫描:

Page 5: GFW的工作原理及突破技术

扫描结果显示,设备 202.112.61.214 很有可能是一台 Cisco 的路由器,这与 GFW 的设备

构成是吻合的[5]。

3.1.4 IP 黑名单的缺点

显而易见,这种对被封禁的网站采用黑名单而不是对被允许访问的网站采用白名单的过

滤机制,难免会有漏网之鱼的存在,Youtube的另外一个地址 208.117.240.37 就是一个很好

的例子(直到本文成文为止,该地址都可以直接进行访问):

3.2 内容审查 3.2.1 一个简单的例子

用 Google.com 搜索关键词“freegate”,起初我们还能够得到搜索结果:

Page 6: GFW的工作原理及突破技术

但是与此同时,我们收到了大量“从 Google 发来的”TCP 连接重置包。下图是使用

Wireshark[7]抓包的结果:

刷新页面会发现已经无法访问:

Page 7: GFW的工作原理及突破技术

并且 Google.com 也变得无法访问:

3.2.2 一个极端的例子

与前面的例子类似,访问http://chinagfw.org/search/label/anti-censorship会收到数以百计

的TCP连接重置包:

Page 8: GFW的工作原理及突破技术

3.2.3 猜测

我们猜测,GFW 对 HTTP 数据包进行了扫描,并且 GFW 内部可能包含有一张敏感词汇

列表,一旦发现被扫描数据包中出现敏感词汇,就会立即向源主机和目标主机发送伪装成对

方地址的 TCP 连接重置包,以实现断开连接的目的。

进一步,GFW 还会在一个临时的黑名单中记录遭到封禁的源主机和目标主机的地址,

并保存一段有限长的时间。一旦发现被封禁的源主机在封禁期间再次请求目标主机,将直接

返回 TCP 连接重置包(此时可能是单向的),而无需扫描新的请求数据包。

另一个发现是,这种内容审查机制并非对所有站点起作用,例如,使用 Google.cn 搜索

同样的关键词“freegate”就不会出现被盾的现象。一种可能的原因是,GFW 启用了一张 IP

监视名单,而 Google.com 的地址正是其中之一;另一种可能是,访问 Google.cn 不会经过

GFW 设备,也就不会触发 TCP 连接重置,而位于 GFW 之外的 Google.com 则难逃此劫。

3.3 DNS 劫持 3.3.1 一个例子

除第 3.1 小节所述IP黑名单技术外,GFW还采用了DNS劫持的手段来达到对Youtube的封

禁目的。

为了说明这一点,我们执行 nslookup 命令如下:

Page 9: GFW的工作原理及突破技术

上图的结果表明“www.youtube.com”经过DNS服务器 166.111.8.28 被解析到了地址

202.106.1.2,但是事实上,该地址并非Youtube真实地址中的任何一个。

进一步,即使使用国外的DNS服务器,如OpenDNS来进行解析,也不能得到Youtube的真

实地址:

并且每次返回的结果可能大相径庭:

然而,如果使用在线nslookup服务,例如http://www.kloth.net/services/nslookup.php,则

可以得到Youtube的真实地址:

Page 10: GFW的工作原理及突破技术

3.3.2 猜测

GFW至少使用了两种DNS劫持机制:一方面,GFW对国内DNS服务器进行了缓存污染,

这种污染体现在使用国内DNS服务器对Youtube进行解析会得到稳定的、虚假的IP地址;另一

方面,GFW会拦截和应答试图从国内发往国外的DNS解析请求(也可能是对国外DNS服务器

的应答进行了篡改),这体现在使用OpenDNS进行解析时观察到的可变的、虚假的IP地址。

4 突破 GFW

4.1 在线代理

在线代理是一种在网页上运行的代理服务器程序,它们通常会使用一些复杂的脚本,以

便绕过过滤器和防火墙(如 GFW)来访问被屏蔽或封锁的网站。用户使用在线代理服务非

常简单,不需要设置浏览器,也不需要安装额外的软件,只要访问在线代理网站,然后输入

要访问网站的网址,就可以享受免费的代理服务[11]。

4.1.1 普通在线代理

如SneakME[12]、Cspeed[13]等。

4.1.2 基于 Google App Engine 的在线代理

如Go2[14]、Mirror[15]、Quick-Proxy[16]等。

相对于前述普通在线代理,基于 Google App Engine 的在线代理的特点在于:首先,得

益于 Google 强大的服务器能力,这类代理具有响应速度快、稳定性好等优势;其次,这类

在线代理普遍支持 HTTPS 协议,使得它们具备更强的翻墙能力。

Page 11: GFW的工作原理及突破技术

4.1.3 自动在线代理

尽管打开在线代理、输入网址、敲下回车这样的步骤并不能算复杂,但是却也绝对称不

上方便。实际上,这种使用在线代理的方式扰乱了人们所习惯的地址栏访问模式,如果浏览

器能够自动根据使用者输入的网址来决定是否要使用在线代理,以及使用哪一个在线代理,

世界就会更美好。

Gladder[17]就是为了满足这一需求而诞生的自动在线代理软件,或者更准确的说,是一

款基于 Firefox 浏览器的插件,其主要功能就是根据一个可定制的被盾网站列表来判断和决

定是否需要通过在线代理来访问即将访问的页面。

4.2 代理工具 4.2.1 Freegate

根据维基百科的说法,Freegate[18]利用了互联网上一系列地址动态可变的开放代理服

务器来提供服务[19],包括 HTTP 代理和 HTTPS 代理。种种迹象表明,Freegate 通过一套复

杂的内部机制向用户隐藏了代理服务器细节,实现了较为可靠的传输协议。

Page 12: GFW的工作原理及突破技术

4.2.2 GPass

GPass 将应用层数据包进一步封装,然后通过不同形式的动态通道加密传输到位于世界

各地的 GPass 服务器,这些服务器再将数据解包后传输到目的网站[20],从而达到翻墙的目

的。

4.2.3 Tor

Tor 是一款分布式匿名路由软件、一种分布式路由协议、一个构建于互联网之上的虚拟

网络,目的是为了保护使用者的隐私、抵御流量分析[21]。尽管其设计目的并不是为了翻墙,

但是由于其路由方式的特殊性,使得它多少具备了翻墙的本领。

Tor 的工作原理比较复杂[22],概而言之,Tor 通过一个提供数据加密服务的中间网络来

Page 13: GFW的工作原理及突破技术

完成源主机和目标主机的通信,从而能够达到翻墙的目的。但是,由于 Tor 不仅会对数据进

行加密,而且还要通过分散流量来保护隐私,故无法达到比较理想的速度,这一点一直受人

诟病(实际上无可厚非,Tor 本不是为了翻墙而存在)。

4.2.4 GAppProxy

GAppProxy 是一款基于 Google App Engine 的代理工具,设计 初衷是为教育网用户提供免

费的国际代理[23],后被广泛用作翻墙工具。由于同样以 Google App Engine 为平台,作为翻

墙工具的 GAppProxy 的突破能力与第 4.1.2 小节所述在线代理大致相同,只不过使用起来更

为便捷。

GAppProxy 的工作原理是将浏览器的请求交由位于 Google App Engine 平台的代理服务

脚本进行处理,从而绕过 GFW。

除去 Google 的服务器优势之外,GAppProxy 的另一个突出优点在于其开源特性,利用

开放的 Google App Engine 平台,普通用户也可以很容易地搭建出自己的代理服务器。

Page 14: GFW的工作原理及突破技术

4.3 VPN

通过在用户主机和国外远程主机之间建立 VPN 通道,能够实现完全透明的翻墙效果。

如果没有条件架设自己的 VPN 服务器,也不愿意花钱购买 VPN 帐号,并且能够忍受页面上

大大的广告或者流量限制,可以尝试以下两个 VPN 服务。

4.3.1 AnchorFree

AnchorFree[24],美国的免费 VPN 服务,不需要申请帐号就可以使用,代价是页面上会

有大大的广告。

4.3.2 Alonweb

Alonweb[25],荷兰的免费 VPN 服务,需要申请个人帐号,每个月只有 1G 的免费流量。

4.4 SSH Tunnel

Page 15: GFW的工作原理及突破技术

SSH Tunnel,本质上也是在用户主机和国外远程主机之间建立一条安全通道来达到翻墙

目的。与 VPN 类似,SSH Tunnel 也不是随处就可以得到的免费服务。当然,也有例外[28]。

4.4.1 MyEnTunnel

MyEnTunnel[26]利用 PuTTY[27]的 Plink 组件同远程主机建立 SSH Tunnel,对于应用程序

(如浏览器)而言,只需要支持 SOCKS 代理就可以通过 MyEnTunnel 来翻墙。

4.5 RSS 订阅

在 Web2.0 时代,并不是只有主动翻墙才能获取信息,随着越来越多的网站开始提供对

RSS 格式的支持,RSS 阅读器也逐渐普及开来。如果被盾网站有合适的 RSS 源,就可以利用

RSS 订阅的方式来轻松绕过 GFW。

4.5.1 Google Reader

Google Reader[29]是Google的一款在线RSS阅读器,好处是支持HTTPS,在GFW无处不在

的今天,这是一个难能可贵的优点。

Page 16: GFW的工作原理及突破技术

4.6 其它 4.6.1 Google 语言工具

让人意想不到的是,Google的语言工具[31]也可以被用来翻墙[30]。仍以Youtube为例,

打开Google的语言工具后,在“翻译网页”部分填入Youtube的网址,并选择语种为从“中

文”翻译到“中文(简体)”,如下图所示:

点击“翻译”按钮即可成功访问Youtube:

Page 17: GFW的工作原理及突破技术

5 几种突破技术的比较

5.1 测试项目

设置测试项目如下:

1. 访问http://208.65.153.238

2. 访问http://www.google.com/search?hl=en&q=freegate&aq=f&oq=(连续两次)

3. 访问http://chinagfw.org/search/label/anti-censorship

4. 访问http://www.youtube.com

5. 访问http://www.youtube.com/watch?v=tG7cM5Yvhz4&feature=channel_page2

5.2 比较结果

突破方法 项目 1 项目 2 项目 3 项目 4 项目 5 备注

在线代理 3

SneakME[12] OK 被盾 被盾 OK OK

Cspeed[13] OK 被盾 OK OK 无法观看

Go2[14] OK OK OK OK 无法观看 HTTPS

Mirror[15] OK OK OK OK 无法观看 HTTPS

Quick-Proxy[16] OK OK OK OK 无法观看 HTTPS

代理工具

Freegate[18] OK OK OK OK OK

GPass[20] OK OK 很慢 OK 很慢

Tor[21] OK OK 很慢 OK 无法观看

2 第 5 项测试为第 4 项通过后的附加项,目的是为了测试突破方法的性能。 3 Firefox + Gladder 组合的测试结果受其代理选择机制影响较大,故不作单独测试。

Page 18: GFW的工作原理及突破技术

GAppProxy[21] OK OK OK OK 无法观看

VPN4 n/a n/a n/a n/a n/a n/a

SSH Tunnel MyEnTunnel[26] OK OK OK OK OK

RSS订阅 5 n/a n/a n/a n/a n/a n/a

其它 语言工具[31] OK OK OK OK 无法观看

5.3 结果分析

1. 项目 1 和项目 4 能够被轻松突破,体现了 IP 黑名单和 DNS 劫持机制屏蔽能力的不

足;

2. Freegate 和 MyEnTunnel 是唯一通过五项测试的工具;

3. 基于 Google 的突破方法,包括在线代理、代理工具和语言工具,在前四项测试中

均表现优异,Google 很有可能成为 GFW 的重点打击目标;

4. 只支持 HTTP 协议的在线代理可能被盾;

5. 大部分突破方法都不支持在线视频的观看,或者表现很差(项目 5),就这一点而言,

GFW对Youtube的打击是成功的。

6 结束语

总的来说,尽管 GFW 的真实工作原理不为人知,但种种迹象表明,目前的 GFW 并不复

杂。一方面,这是由于当前软硬件技术水平的限制;另一方面,彻底的封禁需要的代价实在

太大。然而我们不得不承认,就其动机而言,GFW 目前取得的效果是成功的,有着强烈好

奇心的学者和翻墙爱好者毕竟只是少数,绝大多数国民还是不太可能掌握和灵活使用第 4

章所介绍的突破技术,更何况这些技术在与 GFW 的对抗中处于明显弱势,随时可能遭到封

杀。

最后,需要指出的是,本文仅从网页浏览者的角度研究了当前的 GFW 突破技术,一些

服务端反制措施,例如动态更换 IP、启用 HTTPS 支持、以及忽略 GFW 的 TCP 连接重置包[32]

等技术,并没有被探讨。另一方面,本文也没有涉及使用这些突破技术可能暴露的隐私问题。

这些内容可能会在今后给大家介绍,也可能不会。

7 致谢

感谢段海新老师提供在线代理Cspeed。

感谢 fuckGFW 网友为本文实验部分免费提供 SSH 帐号。

8 参考文献

[1] 维基百科:防火长城,http://zh.wikipedia.org/wiki/GFW

4 由于实验环境的限制,VPN 一项无法进行测试。 5 不具可比性。

Page 19: GFW的工作原理及突破技术

[2] Charles R. Smith, “The Great Firewall of China”,

http://archive.newsmax.com/archives/articles/2002/5/17/25858.shtml

[3] 周曙光,“中国政府的网络封锁技术方案与网民的反网络封锁技术方案”,

http://www.zuola.com/weblog/?p=1353

[4] Jason Ng,“什么是GFW?图解GFW”,http://www.kenengba.com/post/430.html

[5] Sarah Lai Stirland, “Cisco Leak: ‘Great Firewall’ of China Was a Chance to Sell More Routers”,

http://www.wired.com/threatlevel/2008/05/leaked-cisco-do/

[6] Nmap,http://nmap.org

[7] Wireshark,http://www.wireshark.org

[8] OpenDNS,http://www.opendns.com

[9] 维基百科:DNS Cache Poisoning,http://en.wikipedia.org/wiki/DNS_cache_poisoning

[10] http://chinagfw.org/search/label/anti-censorship

[11] 维基百科:在线代理,http://zh.wikipedia.org/wiki/在线代理

[12] SneakME,http://www.sneakme.net

[13] Cspeed,http://cspeed.net

[14] Go2,https://go2http.appspot.com

[15] Mirror,https://soproxy.appspot.com

[16] Quick-Proxy,https://quick-proxy.appspot.com

[17] Gladder,http://gneheix.googlepages.com/gladder

[18] Freegate,http://www.dongtaiwang.com

[19] 维基百科:Freegate,http://en.wikipedia.org/wiki/Freegate

[20] GPass,http://gpass1.com/gpass

[21] Tor,https://www.torproject.org

[22] Tor概述,https://www.torproject.org/overview.html

[23] GAppProxy,http://code.google.com/p/gappproxy

[24] AnchorFree,http://www.anchorfree.com

[25] Alonweb,http://alonweb.com

[26] MyEnTunnel,http://nemesis2.qx.net/pages/MyEnTunnel

[27] PuTTY: A Free Telnet/SSH Client,http://www.chiark.greenend.org.uk/~sgtatham/putty

[28] fuckGFW,“Be Free to SSH-D”,https://dl.getdropbox.com/u/873345/index.html

[29] Google Reader,https://www.google.com/reader

[30] NetPuter,“用 Google 的梯子翻墙吧”,

http://orzdream.cn/2008/09/use-google-language-tools-to-skip-gfw

[31] Google语言工具,http://www.google.cn/language_tools

[32] R. Clayton, S. J. Murdoch, and R. N. M. Watson, “Ignoring the Great Firewall of China”, I/S: A

Journal of Law and Policy for the Information Society, 2007