科学上网工具哪个好?
本文为您科普 VPN/SS/SSR/v2ray/Xray/Trojan/Trojan-Go 和 WireGuard 的前世今生、区别和关系以及梯子软件的前景。 自从天朝有了言论管制,科学上网的话题就一直存在,于是大量的梯子软件应运而生。但是 GFW 与这些梯子软件的斗争从来都没有停止过,一直是此消彼长,墙越来越高,科学上网技术也是持续突破,不断涌现出新技术、新工具。现在最主流的科学上网技术有 VPN/SS/SSR/v2ray/Trojan/Trojan-Go,还有小众的 WireGuard、Brook、Snell 和 NaiveProxy 等,本篇文章不讨论 Brook、NaiveProxy 以及 Snell 协议。SS 是科学上网代理协议的鼻祖,Snell 和 Brook 是小众协议,Snell 协议一直没有开源,是 iOS 平台非常知名的 Surge 软件团队开发的专属协议,Brook 配套设施不完善;其中,VPN/SS/SSR 最为出名,v2ray 和 Trojan/Trojan-Go 作为新星,正在受到越来越多的关注和使用。
# 什么是 VPN/WireGuard?
# VPN
VPN 是英文 Virtual Private Network 的缩写,中文名称为虚拟专用网络,是一种加密通信技术。VPN 只是一个统称,它有很多的具体实现,比如 PPTP、L2TP、IPSec 和 OpenVPN 等。VPN 是在公用网络上建立专用网络,并对通信进行加密,防止传输数据被识别或篡改,以保障通信的安全。当你在 VPN 网络中通信,就相当于通过物理的内网专线进行通信。由此可见,VPN 绝不是为了科学上网而生,而是更加注重数据信息的安全,很多大型企业和高校的远程 SOHO 办公使用 VPN 较多。
# WireGuard
WireGuard 是最新开发的 VPN 协议,比主流的 VPN 技术有明显优势,被誉为下一代 VPN。WireGuard 有如下特点
WireGuard 的优点
更轻便:以 Linux 内核模块的形式运行,资源占用小。更高效:相比目前主流的 IPSec、OpenVPN 等 VPN 协议,WireGuard 的效率要更高。更快速:比目前主流的 VPN 协议,连接速度要更快。更安全:使用了更先进的加密技术。更易搭建:部署难度相对更低。更隐蔽:以 UDP 协议进行数据传输,比 TCP 协议更低调。不易被封锁:TCP 阻断对 WireGuard 无效,IP 被墙的情况下仍然可用。更省电:不使用时不进行数据传输,移动端更省电。
WireGuard 的不足
处于研发初期,各种功能及支持有待完善。由于使用 UDP 协议,BBR、锐速等 TCP 网络加速工具,对 WireGuard 无效。部分运营商可能会对 UDP 协议进行 QOS 限速,WireGuard 会受到一定影响。客户端分流功能较弱,对 GFWList 的支持不足。
WireGuard 虽然有一些不足,但 WireGuard 的优点更突出,而且可以拯救被封 IP 的 VPS,所以 WireGuard是SS/SSR/v2ray/Trojan 等代理工具之外的一个不错的选择。
# 什么是 Shadowsocks?
SS 是 Shadowsocks 的缩写,中文名为影梭,为了避免关键词过滤,网友喜欢将 Shadowsocks 称为“酸酸”,是一种基于 Socks5 代理方式的加密传输协议,也可以指实现这个协议的各种开发包。Shadowsocks 由 Clowwindy 为了自己使用谷歌查资料而编写,Shadowsocks 分为服务器端和客户端,在使用之前,需要先将服务器端程序部署到服务器上面,然后通过客户端连接并创建本地代理。后来,他觉得这个东西非常好用、速度也很快,于是他在 GitHub 上共享了源码。在天朝,本工具被广泛用于突破 GFW,以浏览被封锁、遮蔽或干扰的内容,由于 Shadowsocks 被广泛传播,导致作者被请去喝茶。2015年8月22日,Shadowsocks 原作者 Clowwindy 称迫于天朝内部的压力,宣布停止维护此计划(项目),并移除其个人页面所存储的源代码,而且保证永不再参与维护更新。值得庆幸地是,Shadowsocks 仍然有不少国外社区成员在维护更新。后来贡献者 Librehat 也为 Shadowsocks 补上了一些数据混淆类特性,甚至增加了类似 Tor 的可插拔传输层功能。
# 什么是 ShadowsocksR?
SSR 是 ShadowsocksR 的缩写,网民爱称“酸酸乳”,是在 Shadowsocks 的作者被请去喝茶之后,网名为 breakwa11 的用户发起的 Shadowsocks 的一个分支版本,它在 Shadowsocks 的基础上增加了一些数据混淆方式,修复了部分安全问题并提高 QoS 优先级。由于 ShadowsocksR 在协议和混淆方面做了改进,更加不容易被 GFW 检测到,而且兼容原 Shadowsocks,并为新项目取名叫 Shadowsocks-R,一开始部分代码由社区人员进行更新。由于不完全开源,也导致后来使用 SS 和 SSR 的用户分成两个阵营,互相撕逼,直到开发者 Breakwa11(破娃) 被人肉出来。Breakwa11(破娃) 最终决定删除 Shadowsocks-R 项目的所有代码,并解散了所有相关群组。
事件始末澄清:ShadowsocksR 的作者一开始曾有过违反 GPL,在发布二进制文件时不开放源码的争议。不过后来 Shadowsocks-R 项目由 breakwa11 采用了与 Shadowsocks 相同的 GPL、Apache 许可证、MIT 许可证等多重自由软件许可协议。
2017年7月19日,ShadowsocksR 作者 breakwa11 在 Telegram 频道 ShadowsocksRnews 里转发了深圳市启用 SS 协议检测的消息并被大量用户转发,在 TG 圈引发恐慌。7月24日,breakwa11 发布了闭源的 SS 被动检测程序,引发争议。7月27日,breakwa11 遭到自称“ESU.TV”的不明身份人士人身攻击,对方宣称如果不停止开发并阻止用户讨论此事件将发布更多包含个人隐私的资料,随后 breakwa11 表示遭到对方人肉搜索并公开个人资料的是无关人士。为了防止对方继续伤害无关人士,breakwa11 将删除 GitHub 上的所有代码、解散相关交流群组,并停止 ShadowsocksR 项目。
从本质上说,Shadowsocks 和 ShadowsocksR 的基本原理相同,都是基于 socks5 的代理工具,只在本地客户端和服务器端对数据包加解密,然后使用 socks5 协议转发加密的数据包,而不用在乎使用什么协议,所以 Socks5 代理比其他应用层代理速度要快得多。
# 什么是 socks5 代理?
socks5 代理的原理是把你的网络数据请求先发送到你的代理服务器,然后由代理服务器转发给目标;如果目标有反馈发送到代理服务器,那么代理服务器会将数据包直接传回你的本地网络,整个过程只是数据的二次传输,并没有做额外的处理。比如,现在你在深圳,你的代理服务器在日本,如果你想要访问 Google,那么你首先要把数据请求通过本地 socks5 代理客户端发给你在香港的服务器上的 socks5 代理服务端,然后你在香港的服务器将数据请求发送给 Google,再把 Google 反馈的结果传回你的本地电脑的 socks5 客户端,这样就可以绕开 GFW 的检测而实现科学上网。
显而易见,socks5 代理的所有数据走的仍然是公网,而且在公网传输过程中,没有对数据进行任何加密和混淆,这跟VPN在公网建立虚拟专用通道传输过程中,对数据高强度加密的方式完全不同。Shadowsocks 和 ShadowsocksR 只在客户端和服务器端对数据做了简单加密和认证,主要功能是流量转发,过墙才是主要目的。虽然现在 ShadowsocksR 已经停止更新很久了,而 Shadowsocks 仍处于社区人员的更新维护之中,不断修复漏洞并增加新功能,所以现在 Shadowsocks 比 ShadowsocksR 更强大。
我在此提醒大家:请不要迷信 SSR 一定比 SS 强,也包括现在的 v2ray、Trojan,甚至 WireGuard 等,因为增加混淆意味着损失速度,混淆加密越是强悍,那么其速度和稳定性损失就越大,另外 SSR 至今已经被研究透了,而且长期没有更新维护,其流量特征是可以被 GFW 精准识别的,所以用 SSR 跟用 SS 没有本质区别,由于 SS 一直在更新维护,反而更稳定。我们要做的就是爱国爱家爱生活,勿谈国是,专心做好自己的事情就是了。天朝一直都清楚,跨境相关业务一直存在,尤其是近些年跨境电商的蓬勃发展,很多做跨境相关业务的朋友不外出通讯是不可能的一件事情,但所谓的公司备案 VPN 却非常昂贵,一般用户根本承担不起费用。但我们一定要“做好分内事,勿论他人非”,尤其不发表涉及天朝的言论和行为,做一个天朝的好公民、中华的好儿女,这样天朝是没有必要跟她的好儿女过不去的。
# 什么是 v2ray?
v2ray 是在 Shadowsocks 被封杀之后,为了表示抗议而开发的,属于后起之秀,功能更加强大,为抗 GFW 封锁而生。v2ray 现在已经是 Project V 项目的核心工具,而 Project V 是一个平台,其中也包括支持 Shadowsocks 协议。由于 v2ray 早于 Project V 项目,而且名声更大,所以我们习惯称 Project V 项目为 v2ray,所以我们平时所说的 v2ray 其实就是 Project V 这个平台,也就是一个工具集。其中,只有 VMess 协议是 v2ray 社区原创的专属加密通讯协议,被广泛应用于梯子软件。
v2ray 目前支持以下协议(截止到2019年12月):
- Blackhole:中文名称“黑洞”,是一个出站数据协议,它会阻碍所有数据的出站,配合路由(Routing)一起使用,可以达到禁止访问某些网站的效果。
- Dokodemo-door:中文名称“任意门”,是一个入站数据协议,它可以监听一个本地端口,并把所有进入此端口的数据发送至指定服务器的一个端口,从而达到端口映射的效果。
- Freedom:是一个出站协议,可以用来向任意网络发送(正常的)TCP 或 UDP 数据。
- HTTP:超文本传输协议,是传统的代理协议
- MTProto:Telegram 的开发团队开发的专用协议,是一个 Telegram 专用的代理协议。在 v2ray 中可使用一组入站出站代理来完成 Telegram 数据的代理任务。目前只支持转发到 Telegram 的 IPv4 地址。
- Shadowsocks:最早被个人开发的科学上网梯子协议,但 v2ray 目前不支持 ShadowsocksR。
- Socks:标准 Socks 协议实现,兼容 Socks 4、Socks 4a 和 Socks 5,也是传统的代理协议。
- VMess:是 v2ray 专用的加密传输协议,它分为入站和出站两部分,通常作为 v2ray 客户端和服务器之间的桥梁。因为增加了混淆和加密,据说比 Shadowsocks 更安全。现在的机场支持 v2ray,一般是指支持 VMess 协议。VMess 依赖于系统时间,请确保使用 v2ray 的系统 UTC 时间误差在90秒之内,时区无关。在 Linux 系统中可以安装 ntp 服务来自动同步系统时间。
截止到2019年12月,v2ray 可选的传输层配置有:TCP、mKCP、WebSocket、HTTP/2、DomainSocket、QUIC。其中,mKCP、QUIC 和 TCP 用于优化网络质量;WebSocket 用于伪装;HTTP/2 和 DomainSocket 用于传输以及 TLS 加密。
v2ray 不仅可以在传输层配置 TLS 使 HTTP 和 SOCKS 变成 HTTPS 和 SOCKS over TLS 协议,也可以使 MTProto、Shadowsocks 和 VMess 通过传输层配置 TLS 加密伪装成 TLS 流量。所以,VMess 配置 TLS 加密是最常见的做法,但没人会对 Shadowsocks 使用 TLS 加密,因为这完全没意义。
# 什么是 Trojan/Trojan-Go?
Trojan,原来多是指特洛伊木马,是一种计算机病毒程序。但是,我们今天所说的 Trojan 是一种新的科学上网技术,全称为 Trojan-GFW,是目前最成功的科学上网伪装技术之一。你可以认为 Trojan 是 v2ray 的“WS+TLS”模式的精简版,速度比 v2ray 更快,伪装比 v2ray 更逼真,更难以被 GFW 识别。
Trojan 工作原理:Trojan 通过监听443端口,模仿互联网上最常见的 HTTPS 协议,把合法的 Trojan 代理数据伪装成正常的 HTTPS 通信,并真正地完整完成的 TLS 握手,以诱骗 GFW 认为它就是 HTTPS,从而不被识别。Trojan 处理来自外界的 HTTPS 请求,如果是合法的,那么为该请求提供服务,否则将该流量转交给 Caddy、Nginx 等 web 服务器,由 Caddy、Nginx 等为其提供网页访问服务。基于整个交互过程,这样能让你的 VPS 更像一个正常的 web 服务器,因为 Trojan 的所有行为均与 Caddy、Nginx 等 web 服务器一致,并没有引入额外特征,从而达到难以识别的效果。
Trojan-Go 是 Trojan-GFW 的分支项目,对 Trojan 进行性能优化,并增加不少新功能,Trojan-Go 性能和功能均有大幅度的提升,而且支持分流和 CDN。
# 什么是 Xray?
Xray 与 v2ray 完全类同,Xray 是 Project X 项目的核心模块。因为 Xray 和 XTLS 黑科技的作者 rprx 曾经是 V2fly 社区的重要成员,所以 Xray 直接 Fork 全部 v2ray 的功能,然后进行性能优化,并增加了新功能,使 Xray 在功能上成为了 v2ray 的超集,且完全兼容 v2ray。
简而言之,Xray 是 v2ray 的项目分支,Xray 是 v2ray 的超集,就跟 Trojan-Go 和 Trojan-GFW 的关系类似,而且 Xray 性能更好、速度更快,更新迭代也更频繁。由于自 v2ray-core 4.33.0 版本起,删除了 XTLS 黑科技,但仍然支持 VLESS,所以是否原生支持 XTLS 是 Xray 和 v2ray 最大的区别之一。
# 它们有什么区别及优缺点
# 原理不同
VPN 强调对公网传输过程中数据的加解密,SS/SSR/v2ray/Xray/Trojan 都是专注于在客户端和服务器端加解密,公网传输数据过程中特征没有 VPN 明显。
# 目的不同
VPN 是走在公网中自建的虚拟专用通道,使用强大的加解密算法,为数据传输安全性、私密性而生,被广泛应用于企业、高校、科研部门等远程数据传输的领域;SS/SSR/v2ray/Xray/Trojan/Trojan-Go 是为了数据能够安全通过 GFW 而生,更强调的是对数据的混淆和伪装,加解密只是为了更好的隐藏数据特征而顺利绕过 GFW 的检测,数据内容加密可以有效绕过关键词的检测。
在天朝,如果你想用 VPN 翻墙几乎是不可能的,在平时不怎么限制还好,特殊时期 VPN 是断流最惨的。如果要需要匿名安全上网,VPN+TOR 或 SS/SSR+TOR 也是不错的选择。当然,现在已经有了新的对抗技术,比如 v2ray/Xray、Trojan/Trojan-Go、WireGuard 等。另外,有一些比较著名的工具,如红杏出墙、蓝灯(Lantern)、Tor Browser、赛风3(Psiphon3)等,都相继被墙,现在已经很少人使用了。
# 项目诞生的大致时间顺序
VPN>SS>SSR/v2ray/WireGuard>Trojan/Trojan-Go>Xray
# 对科学上网工具的总结
VPN 虽然天生不是为了做梯子,但却是最出名的梯子软件、众人皆知的科学上网工具,但是由于 VPN 特征太明显,现在非大陆正规公司的 VPN 基本被禁的差不多了;SS/SSR 为科学上网而生,但是加密和混淆较弱,而且已经被 GFW 精准识别,在科学上网方面的前景堪忧,但是仍然适用于专线,网络速度比 v2ray/Trojan/Trojan-Go 更快;v2ray/Xray 为科学上网而生,天生不凡,已经成长为一个平台框架,拥有自研协议 VMess 和 VLESS,功能非常强大;WireGuard 被誉为新一代 VPN,技术强大,而且已经被写入 Linux 内核,前景光明,但是在科学上网方面并不够隐蔽,所以不是未来主流的科学上网工具;Trojan/Trojan-Go 为科学上网而生,天生只为了模仿互联网最流行的 HTTPS 协议而存在,是目前最成功的伪装工具之一,功能与 v2ray 的“Vmess+WS+TLS”模式相当,但是更轻量,伪装更逼真,目前 GFW 几乎无法识别其特征,而且目前 Trojan-Go 在性能和速度方面的表现均优于 v2ray 的 VMess 和 VLESS 协议。所以,我认为 Trojan/Trojan-Go 会跟 v2ray 一样成为将来科学上网的主流工具之一,SSR 由于长期得不到维护而逐渐退出历史舞台,Shadowsocks/SS 依然是最轻量的科学上网代理协议,没有之一。