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

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

长城防火墙
中转服务器
但你又实在想要访问 Google,怎么办呢?聪明的网友便想到,如果我骗海关说这不是访问 Google,而是要访问国外的某个慈善机构。海关人员一看这个慈善机构不在黑名单上,于是就给你放行。当你的流量到了慈善机构之后,你又跟慈善机构说我要访问 Google,然后它又帮你转接到 Google 的服务器。Google 接受到你的请求之后,再按照「原路」返回给你一个网页。
上述的「慈善机构」就是「中转服务器」,又称「代理服务器」。需要说明两点,第一这个服务器必须在海外,如果在国内的话,这个服务器发给 Google 的请求同样会经过「海关」然后被拦下。第二这个服务器不在「海关」的黑名单上,否则你连服务器都访问不了,它还怎么帮你转接 Google 呢?

中转服务器
访问本质
基于以上的内容,我们知道科学上网的实质就是骗过或者绕过 GFW。请求代理服务器帮你转接流量,这是「骗过」。不经过「海关」直接访问,这是「绕过」。例如马斯克的「星链计划」,直接在太空架设服务器,你的流量可以经过太空中的服务器帮你转接到 Google 的服务器。这也是未来的一种解决办法,我们的流量此时根本不经过中国的 “国际接入点”,也就相当于绕过了 GFW。但即使这项技术真的实现了,能不能在中国普及也是一个问题。
主流科学上网方式
VPN
VPN 是 “虚拟专用网络” 的简称,其本意是保护数据安全与个人隐私。原理是客户端和 VPN 服务器之间建立一个加密的隧道,此后你所有的上网行为都经由 VPN 服务器来完成。其使用“ 隧道 ”建立专线连接,实现“ 全局代理 ”,具有加密流量、保护个人隐私的优势。如果 VPN 服务器恰好在国外,那么也可以用它来科学上网。但是 VPN 的几种协议的流量特征太过明显,很容易被 GFW 识破并阻止连接到国际网络,因此现在它并不适合用来翻墙。
基于 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,原理都是大同小异,本质都是通过代理服务器实现翻墙。除了自己搭建服务器,也可以使用免费的翻墙软件,当然也可以购买 机场
服务。但这些都会有隐私泄漏的风险,比如有些服务器会收集用户的上网日志。
更安全的科学上网方式
基于 Tor 的双重代理
具体操作是在 Tor 之前加上「前置代理」,这是在国内使用 Tor 的最基本的方式,因为在国内访问不了国际互联网,更别提使用 Tor 的国际节点了。当你使用这种方式访问 Google 时,流量是这样的:
浏览器
——Tor客户端
——代理A客户端
——GFW
——代理A服务器端
——Tor节点 1,2…
——Google网站
在这种模式下,只有「Tor 客户端」和「Tor 节点 3」可以看到你真实的上网流量。
具体配置可参考我之前的文章 从国产浏览器到 Tor Browser—— 该如何选择、配置
基于 Tor 的三重代理
如果要访问对 Tor 不友好的网站,可以使用「三重代理」。
此时的流量是这样的:
浏览器
——代理B客户端
——Tor客户端
——代理A客户端
——GFW
——代理A服务器端
——Tor节点1,2…
——代理B服务器端
——Google网站
在这种模式下,「代理 B 客户端」及「代理 B 服务器端」属于 “后置代理”,都可以看到你真实的上网流量,因此「后置代理」软件的选择一定要谨慎。
具体配置可参考:
如何用 Tor 访问对 Tor 不友好的网站——扫盲“三重代理”及其它招数
【三重代理】用Tor+迷雾通访问对tor不友好的网站
如果平时使用 Tor 的频率较少,那么使用「双重代理」就已经足够了。
结语
本文所涉及的各种科学上网方式,虽然可能被 GFW 识别,但起码都保证了「数据安全性」。如果想要更进一步,就至少要保证以下几点:
操作系统的可靠性:浏览器、科学上网软件、操作系统中其他软件等都要保证其 “纯洁性”
流量传输的安全性:确保 ISP 及代理服务商不知道你的「流量内容」以及「上网行为」,对于这条可以用 Tor 解决
个人信息的隐匿性:永远不要在网络上留下个人敏感信息,包括公网 IP 地址
至于「人身安全性」,不仅要做到以上三点,还需要做好「社会工程」方面的自我防护。