第一个协议Shadowsocks的诞生
经常翻墙朋友应该都遇到过被墙的情况,”被墙”即指网站内容被防火长城所屏蔽,vpn无法连接,vps无法连接,搭建的网站无法在国内访问等情况,这些都是因为被墙。下图是防火长城的工作原理,内容过滤系统会根据我们的访问内容确定是否合法,当我们通过翻墙软件上网时,如果访问流量以及访问内容触发了过滤规则,我们的翻墙软件服务端的ip就会被墙。
为了突破防火长城的内容过滤系统,Shadowsocks(简称SS)项目在Github上因势而生,SS客户端会在本机构建一个本地Socks5代理(或VPN、透明代理等)。浏览网络时,客户端通过这个Socks5(或其他形式)代理收集网络流量,然后再经混淆加密发送到服务器端,以防网络流量被识别和拦截。
百家争鸣
由于国家队的介入,Shadowsocks项目被迫停止,并且防火长城的内容过滤系统通过不断的增加过滤规则已经可以大部分识别Shadowsocks的混淆流量内容,为了应对不断变化的过滤规则,SSR/Trojan/Trojan-go/V2ray/Xray这些协议相继出现。程序员是向往自由的,说不定白天在国家队制定过滤规则的打工仔,晚上就化身这些突破规则协议项目的贡献者.
v2ray vs xray
什么是v2ray
V2Ray 是在Shadowsocks 被封杀之后,为了表示抗议而开发的,属于后起之秀,功能更加强大,为抗GFW封锁而生。V2Ray 现在已经是 Project V 项目的核心工具,而 Project V 是一个平台,其中也包括支持 Shadowsocks 协议。由于 V2Ray 早于 Project V 项目,而且名声更大,所以我们习惯称 Project V 项目为 V2Ray,所以我们平时所说的 V2Ray 其实就是 Project V 这个平台,也就是一个工具集。其中,只有 VMess协议是V2Ray社区原创的专属加密通讯协议,被广泛应用于梯子软件。
V2Ray目前支持以下协议(截止到2023年10月):
- Blackhole(中文名称“黑洞”):这是一个出站数据协议,它会阻碍所有数据的出站,与路由配合使用可以达到禁止访问某些网站的效果。
- 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 的系统依赖于系统时间,请确保使用 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 加密,因为这完全没意义。
什么是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最大的区别之一。
目前最快,最稳的方式,比较推荐大家用Xray内核
Trojan VS Trojan-Go
什么是Trojan
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-Go 兼容原版 Trojan 的绝大多数功能,包括但不限于:
- TLS 隧道传输
- UDP 代理
- 透明代理 (NAT 模式,iptables 设置参考这里)
- 对抗 GFW 被动检测 / 主动检测的机制
- MySQL 数据持久化方案
- MySQL 用户权限认证
- 用户流量统计和配额限制
同时,Trojan-Go 还扩展实现了更多高效易用的功能特性:
- 便于快速部署的「简易模式」
- Socks5 / HTTP 代理自动适配
- 基于 TProxy 的透明代理(TCP / UDP)
- 全平台支持,无特殊依赖
- 基于多路复用(smux)降低延迟,提升并发性能
- 自定义路由模块,可实现国内外分流 / 广告屏蔽等功能
- Websocket 传输支持,以实现 CDN 流量中转(基于 WebSocket over TLS)和对抗 GFW 中间人攻击
- TLS 指纹伪造,以对抗 GFW 针对 TLS Client Hello 的特征识别
- 基于 gRPC 的 API 支持,以实现用户管理和速度限制等
- 可插拔传输层,可将 TLS 替换为其他协议或明文传输,同时有完整的 Shadowsocks 混淆插件支持
- 支持对用户更友好的 YAML 配置文件格式
整体比较
Docker作为IT界最方便的应用安装软件,建议使用Docker安装你喜欢的翻墙软件,安装教程有通过Docker一键安装Xray和V2ray的文档,请参阅
项目名称 | 创建时间 | 支持协议 | 速度 | 推荐指数 | 推荐理由 | 安装教程 |
---|---|---|---|---|---|---|
Shadowsocks | 2015 | sock5 | 4 | 2 | 情怀产品不推荐 | 不推荐 |
Shadowsocks-R | 2016 | sock5+混淆协议 | 3 | 1 | 古董产品不推荐 | 不推荐 |
V2Ray | 2019 | Blackhole Freedom HTTP MTProto Shadowsocks Socks VMess | 5 | 5 | V2ray比较成熟,自用1年半 支持的配套客户端是最多的,隐秘性良好 长期使用没有断过网 | Docker一键安装V2ray |
Trojan | 2019 | 类似V2ray“WS+TLS”模式的精简版 | 2 | 3 | 相比V2ray,速度更快,更轻量级 相比trojan-go 比较老了,因此排名后面 | Trojan安装文档 |
Trojan-Go | 2020 | 类似V2ray“WS+TLS”模式的精简版 | 3 | 5 | 速度方面次于Xray、隐秘更强,客户端比较单一 | 推荐 |
Xray | 2020 | V2ray的升级版(包含V2ray所有协议) VLESS协议 | 6 | 6 | Xray性能最好、速度更快,隐秘更好,更新频繁,可适应越来越高的墙。 | Docker一键安装Xray |