文章目录
一、科学上网原因及本质

二、主流的的科学上网方式及原理

三、更安全的上网方式

四、结语

一、科学上网原理

1、“海关”把守

正常情况下,国际互联网应该是连通的。比如你想要访问Google的首页,那么只需要你的主机发送一个请求到美国的Google服务器,Google便会根据你的请求返回一个答复。

但实际情况却是,互联网也是需要物理意义上的「线缆」架设的。当我们想要访问别的国家的服务器时,就会经过「国际接入点」,这里通常都会有「海关」把守。当你的流量到达「国际接入点」时,海关人员一看你的流量请求是前往Google,而Google恰巧就在“黑名单”上,然后就直接给你拦截下来,于是乎你的流量就中途夭折。

上述的“海关”就是大名鼎鼎的“Great Fire Wall”,中文名叫“长城防火墙”。当然我们国家从来没有承认过有这个东西。

2、中转服务器

但你又实在想要访问Google,怎么办呢?聪明的网友便想到,如果我骗海关说这不是访问Google,而是要访问国外的某个慈善机构。海关人员一看这个慈善机构不在黑名单上,于是就给你放行。当你的流量到了慈善机构之后,你又跟慈善机构说我要访问Google,然后它又帮你转接到Google的服务器。Google接受到你的请求之后,再按照「原路」返回给你一个网页。

上述的「慈善机构」就是「中转服务器」,又称「代理服务器」。需要说明两点,第一这个服务器必须在海外,如果在国内的话,这个服务器发给Google的请求同样会经过「海关」然后被拦下。第二这个服务器不在「海关」的黑名单上,否则你连服务器都访问不了,它还怎么帮你转接Google呢?

3、科学上网的本质

基于以上的内容,我们知道科学上网的实质就是骗过或者绕过GFW。请求代理服务器帮你转接流量,这是「骗过」。不经过「海关」直接访问,这是「绕过」。例如马斯克的「星链计划」,直接在太空架设服务器,你的流量可以经过太空中的服务器帮你转接到Google的服务器。这也是未来的一种解决办法,我们的流量此时根本不经过中国的“国际接入点”,也就相当于绕过了GFW。但即使这项技术真的实现了,能不能在中国普及也是一个问题。

多说一点,为什么我们不能像其他国家一样接入国际互联网呢?有人说是因为一旦实现「国际互联」,就会有源源不断的、未被审查的信息被我们发现,从而影响社会的稳定。这是一方面的原因,还有一方面的原因是国家在实行「愚民政策」。比如当我们使用「百度搜索」时,搜到的答案已经是被审查过的了,但是这些「无害」的信息却阻碍了我们了解更广阔的世界。就像有的人一旦了解到什么是西方的民主自由,就再也回归不了中式的民主自由了。

二、主流的科学上网方式

笔者注:像GoAgent代理这种不安全或者不稳定的方式不在讨论之列。

1、VPN

VPN是“虚拟专用网络”的简称,其本意是保护数据安全与个人隐私。原理是客户端和VPN服务器之间建立一个加密的隧道,此后你所有的上网行为都经由VPN服务器来完成。其使用”隧道“建立专线连接,实现”全局代理“,具有加密流量、保护个人隐私的优势。如果VPN服务器恰好在国外,那么也可以用它来科学上网。但是VPN的几种协议的流量特征太过明显,很容易被GFW识破并阻止连接到国际网络,因此现在它并不适合用来翻墙。

2、基于VPS的科学上网方式

VPS是“虚拟专用服务器”的简称,本质上是一台24小时开机的电脑。当它位于国外时,我们就可以借助它实现流量中转,因此也被称为“代理服务器”。和VPN不同的是,它主要目的是用来中转流量(或是建站)的,也可以说是为翻墙而生。VPS和客户端之间的连接「可能」没有VPN安全,这取决于客户端和VPS之间的流量传输协议及加密方式。
常见的代理协议有 http ,socks5,shadowsocks,Vmess ,前两者是明文传输,数据内容可以被GFW读取。而tls(或者说是ssl)则是针对数据流的安全传输协议,它相当于是一个加密的管道,http以及socks代理的流量套上它之后便成为了加密流量,也就是http over tls(https)以及socks over tls。下面开始讲几种翻墙工具以及它们所使用的传输及加密协议。

★Shadowsocks/Shadowsocks-R软件

shadowsocks分为客户端和服务器端,也就是本机和服务器。以下简称SS。当启动SS客户端时,它首先会在电脑上开启socks5代理并指定一个端口(假设是1080),当你打开网页时,流量(tcp包)便会根据socks5协议从1080端口流入到SS客户端。然后客户端对这个流量进行修饰,加上服务器的地址,并根据软件自带的加密协议把流量封装成shadowsocks协议的流量包,之后便发送到服务器端,服务器端的SS同样会根据自身的加密协议来解密这个流量包,之然后把请求发送到Google等网站,之后的回程方式基本一致。

需要注意的是,shadowsocks使用自行设计的协议进行加密通信,加密算法有AES、Blowfish、IDEA、RC4等。只有在本地流量流入到客户端时,使用的才是socks5协议。在经过GFW时,它已经是shadowsocks协议了。整个过程比较简单,流量特征比较明显,因此经常被GFW封杀。

改造后的SSR则是加入了流量混淆插件。比如80和443端口通常是网页访问端口,而SSR的流量则访问服务器上的80/443端口,以此来模拟正常访问网页的http/https普通流量。但如果GFW主动探测网站上80/443端口,就会发现这并不是网页,此时就这种伪装也就失效了。(当然自己也可以真的搭建一个网页)

★V2Ray工具

V2Ray本身只是一个开源的内核,在这个基础上发展出了V2RayN、V2RayNG等图形化客户端。

V2Ray支持Socks、HTTP、Shadowsocks、VMess等协议,每个协议可单独设置传输载体,比如 TCP、mKCP、WebSocket 等。 V2Ray 的节点可以伪装成正常的网站(HTTPS),将其流量与正常的网页流量混淆。
更多介绍参考官方网站

其中VMess协议是V2Ray特有的协议,使用非对称加密方式,但是其流量特征「可能」已经被GFW识别,但是流量内容同样是无法被解密的。

基于v2ray,可以搭建一种比较高明的翻墙方式,就是WS+TLS+Web+CDN。这种方式可以实现真正的https流量访问,而非混淆流量,原则上是最稳的翻墙姿势。其中WS是WebSocket流量,这里我们理解成http流量。

当你想要访问Google时,首先网页流量(WS)经过v2ray,客户端使用tls进行加密,这时就行成了https流量。虽然此时在GFW眼中这已经是正常的https流量,允许你访问这个服务器(IP),但如果持续有大流量访问特定的海外IP,难免会让GFW起疑。如果要打消GFW的疑虑或者想要隐藏自己服务器的IP,这时候就需要CDN转发服务。

在上述的基础上,你已经可以通过https访问自己的服务器(IP),当然也可以再套一层CDN。所谓CDN,就是域名解析。你需要自己注册一个域名,然后再将这个域名解析到自己的IP地址。这时当你访问这个域名时,实际上是访问自己的服务器,但这个过程GFW是全然不知的,这也完成了对服务器IP的保护,GFW即使封杀了你的IP地址,你也可以通过访问这个域名从而访问到服务器,除非GFW把这个域名也给封杀了(大不了再换一个域名继续解析)。这就是CDN转发,或者说是域名解析。

但是,如果GFW不死心,它怀疑你访问的是服务器上的某个翻墙协议端口,而不是真正的网页。此时它就可以发送流量包到你访问的端口进行探测,如果不是网页,它就可能将这个域名或IP封杀了。所以在服务器上建立一个真正的网页也是必要的,防止GFW主动探测。

最后,你就可以通过服务器上的这个网页实现翻墙了。

★Trojan工具

Traojan翻墙的实现方法和上述的WS+TLS+Web+CDN相似
以下内容摘录自Trojan官方文档

对于被动检测,Trojan协议的流量与HTTPS流量的特征和行为完全一致。而HTTPS流量占据了目前互联网流量的一半以上,且TLS握手成功后流量均为密文,几乎不存在可行方法从其中分辨出Trojan协议流量。
对于主动检测,当防火墙主动连接Trojan服务器进行检测时,Trojan可以正确识别非Trojan协议的流量。与Shadowsocks等代理不同的是,此时Trojan不会断开连接,而是将这个连接代理到一个正常的Web服务器。在GFW看来,该服务器的行为和一个普通的HTTPS网站行为完全相同,无法判断是否是一个Trojan代理节点。这也是Trojan推荐使用合法的域名、使用权威CA签名的HTTPS证书的原因: 这让你的服务器完全无法被GFW使用主动检测判定是一个Trojan服务器。

上述并没有使用CDN转发服务,实际上也可以使用TLS+Web+CDN方式翻墙,你同样可以申请一个域名,然后解析到自己的服务器IP地址,当你通过域名访问自己服务器时,GFW看到的是一个正常的https流量访问了某个海外服务器(IP)。下面是重点:

Trojan服务器端判断这是Trojan客户端(因为使用了Trojan协议)的流量,然后就直接把你的流量请求转发到你最终想要为访问的网站了(Google、Facebook);如果是GFW主动探测,Trojan判断这不是Trojan流量,然后就将这个请求转发到一个Web服务器(比如你学校网站首页,也可以自己搭建一个网页),之后GFW就会看到它自己访问的是一个正常的网页,它就终于可以放心了。

★其他基于VPS的翻墙姿势

只要是基于VPS,原理都是大同小异,本质都是通过代理服务器实现翻墙。除了自己搭建服务器,也可以使用免费的翻墙软件,当然也可以购买机场服务。但这些都会有隐私泄漏的风险,比如有些服务器会收集用户的上网日志。

3、基于国外手机卡的上网服务

根据国际惯例,手机卡在别的国家漫游时,数据流量会被送回所属运营商来接入互联网。就像中国「普通的手机卡」在国外使用时,也是需要翻墙访问Google 的。

国内比较流行的是使用Google Fi。

三、更安全的科学上网方式

1、基于Tor的双重代理

具体操作是在Tor之前加上「前置代理」,这是在国内使用Tor的最基本的方式,因为在国内访问不了国际互联网,更别提使用Tor的国际节点了。当你使用这种方式访问Google时,流量是这样的:

浏览器——Tor客户端——代理A客户端——GFW——代理A服务器端——Tor节点1,2,3…——Google网站

在这种模式下,只有「Tor客户端」和「Tor节点3」可以看到你真实的上网流量。

具体配置可参考我之前的文章《从国产浏览器到 Tor Browser—— 该如何选择、配置》

2、基于Tor的三重代理

如果要访问对Tor不友好的网站,可以使用「三重代理」。

此时的流量是这样的:

浏览器——代理B客户端——Tor客户端——代理A客户端——GFW——代理A服务器端——Tor节点1,2,3…——代理B服务器端——Google网站

在这种模式下,「代理B客户端」及「代理B服务器端」属于“后置代理”,都可以看到你真实的上网流量,因此「后置代理」软件的选择一定要谨慎。

具体配置可参考:

《如何用 Tor 访问对 Tor 不友好的网站——扫盲“三重代理”及其它招数》

《【三重代理】用Tor+迷雾通访问对tor不友好的网站》

如果平时使用Tor的频率较少,那么使用「双重代理」就已经足够了。

四、结语

本文所涉及的各种科学上网方式,虽然可能被GFW识别,但起码都保证了「数据安全性」。如果想要更进一步,就至少要保证以下几点:

操作系统的可靠性:浏览器、科学上网软件、操作系统中其他软件等都要保证其“纯洁性”

流量传输的安全性:确保ISP及代理服务商不知道你的「流量内容」以及「上网行为」,对于这条可以用Tor解决

个人信息的隐匿性:永远不要在网络上留下个人敏感信息,包括公网IP地址

至于「人身安全性」,不仅要做到以上三点,还需要做好「社会工程」方面的自我防护。