中国防火墙长城GFW的拦截原理概析

GFW,即Great Wall of China, 中国防火长城的简称,是中国政府过滤和监控互联网的一套软硬件系统。GFW的作用主要是用于分析和过滤中国境内外网络间的互相访问。也就是说,他不仅能限制国内网民访问境外的某些站点,也能限制国外用户访问国内的站点。 我们通常说的“被墙”,就是指访问被GFW所限制。而”翻墙“,顾名思义,则是突破GFW的限制。本文着重探讨GFW的工作原理。

前言

人们对于GFW的探讨从没有停止过,但其中的具体实现细节无从知晓,一些有着强烈好奇心的学者以及国内的翻墙爱好者们还是瞥见了一些端倪。

普遍的看法是,GFW 的工作机制主要包括 IP 黑名单、内容审查和 DNS 劫持等三种。

方式一、IP黑名单

GFW可能维护着一张IP黑名单,这里用“可能”二字说明这个说法没有得到过100%的证实,只是通过实验结果推测出来的。事实上,我们无从得知GFW具体的工作原理,这应该属于机密。

下面具体分析下IP黑名单:

37.13.79.144是www.facebook.com众多IP中的一个,但是在浏览器中无法访问。

173.252.120.6也是facebook的一个IP,通过这个IP可以访问到其网站。

64.233.189.99是google的一个ip,可以通过浏览器访问谷歌首页,但同属于google 的一个ip 64.233.189.147就不能被访问。由此可以推测 37.13.79.144 和64.233.189.147在GFW的IP黑名单中,只要发现有发往这些ip的请求,就立即终止。

下面来做个实验,208.65.153.238是youtube的一个ip地址,我们在命令行下使用tracert跟踪,如图

在主机202.112.61.214处就断开了。

根据以上结果我们猜测,长城很有可能维护了一张IP黑名单,一旦发现发往黑名单中地址的请求数据包,就直接将其丢弃,这将导致源主机得不到目标主机的及时响应而引发超时,从而达到屏蔽对目标主机的访问的目的。

进一步,我们有理由认为主机202.112.61.214就是长城的设备之一,为了证实这一猜测,我们用Nmap对其进行了扫描:

扫描结果显示,设备202.112.61.214很有可能是一台Cisco的路由器,这与长城的设备构成是吻合的。

方式二、内容审查

GFW的内容审查针对HTTP传输协议的默认端口的80端口,HTTP传播的内容是明文的内容,没有经过加密,GFW是一个IDS[Intrusion detection system(入侵检测系统)],GFW有一个敏感字名单,若在中国大陆访问境外的主机的HTTP的数据流里发现敏感字眼,就在两台主机间伪造一个"reset”信号,导致双方主机以为对方中止了请求,通过“合规内容审查”的手段来规避一些非法内容在国内的传播访问。

这种虽然有违互联网open/share的开源分享精神,但是出于国内政治稳定性考虑,做一下审查没有什么不好!谁知道国人给海外发送的内容有没有什么“XX人傻钱多速来”的邀请呢~开个玩笑。

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

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

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

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

我们猜测,长城对HTTP数据包进行了扫描,并且长城内部可能包含有一张敏感词汇列表,一旦发现被扫描数据包中出现敏感词汇,就会立即向源主机和目标主机发送伪装成对方地址的TCP连接重置包,以实现断开连接的目的。 进一步,长城还会在一个临时的黑名单中记录遭到封禁的源主机和目标主机的地址,并保存一段有限长的时间。一旦发现被封禁的源主机在封禁期间再次请求目标主机,将直接返回TCP连接重置包(此时可能是单向的),而无需扫描新的请求数据包。 另一个发现是,这种内容审查机制并非对所有站点起作用,例如,使用Google.cn搜索同样的关键词“freegate”就不会出现被盾的现象。一种可能的原因是,长城启用了一张IP监视名单,而Google.com的地址正是其中之一;另一种可能是,访问Google.cn不会经过***设备,也就不会触发TCP连接重置,而位于长城之外的Google.com则难逃此劫。

方式三、DNS劫持

DSN劫持我想应该是GFW最常用的手段,我们通常都是通过域名访问一个网站,而网络是不识别域名的,必须把域名交给ISP(网络服务提供商)的DNS服务器去解析。比如我们想访问www.facebook.com,这个域名会被发送给你的ISP(如:中国电信)。它会把你的请求,也就是www.facebook.com,解析到一个虚拟的IP地址,下面我们在命令行下通过nslookup 做个实验就明白了。

上图的结果表明“www.youtube.com”经过DNS服务器166.111.8.28被解析到了地址202.106.1.2,但是事实上,该地址并非Youtube真实地址中的任何一个。进一步,即使使用国外的DNS服务器,如OpenDNS来进行解析,也不能得到Youtube的真实地址:

实际上全球只有13个顶级域名服务器,可惜的是中国一个也没有,为了分流减压,ISP通常都会缓存一些域名信息,而DNS劫持的一个手段就是污染这些缓存信息,也就是修改想要屏蔽的站点的域名信息。

GFW至少使用了两种DNS劫持机制:一方面,GFW对国内DNS服务器进行了缓存污染, 这种污染体现在使用国内DNS服务器对twitter进行解析会得到稳定的、虚假的IP地址;另一 方面,GFW会拦截和应答试图从国内发往国外的DNS解析请求(也可能是对国外DNS服务器 的应答进行了篡改)。

总结

通过上述的实验,大家应该也都明白了中国防火墙长城的大致运作原理。这么多年过去了,这些信息早已不是什么秘密可言。

接下来我们探讨一下,防火长城归根结底到底好不好?

其实这个分为两个角度去看。

如果站在外企以及经常与国外的友人沟通的朋友来说,防火墙长城是不好的,因为它限制了这些企业对外贸易的桥梁,导致外企进行贸易交流上的障碍和困难。

如果站在普通网民的角度来说,防火墙长城没有什么不好的。为什么这样说,首先普通网民不会接触国外的信息,当然也看不懂。再其次防火墙长城帮我们网民挡住了很多有害信息,虽然不符合互联网的分享精神,但是博主认为,这样做没有什么不妥。所以大家也别一直吐槽中国防火墙长城。

声明:本文为原创,作者为 Svlik,转载时请保留本声明及附带文章链接:https://www.svlik.com/1804.html