VLESS、VMess、Trojan 还是 Shadowsocks:该选哪一个

VLESS、VMess、Trojan 和 Shadowsocks 在传输上有何不同,哪一个在受限网络中更可靠,以及应该先要哪一种。附 v2rc 可导入的协议。

最后审阅:

V2Ray 客户端不会替你选择协议。选择由你导入的配置决定,而配置来自你的服务商或你自己的服务器。所以实际的问题是:该向服务商要什么,或者自己该搭什么。本文解释真正重要的差异,最后给出一条简短的建议。

三层,而不是一个选择

“VLESS 还是 VMess”听起来像一个决定,其实是三个:

  • 协议:客户端如何认证,以及载荷是什么样子(VMess、VLESS、Trojan、Shadowsocks)。
  • 传输:字节如何传送(纯 TCP、WebSocket、gRPC 等)。
  • 安全:连接外面包了什么(无、TLS 或 REALITY)。

同一个协议,取决于另外两层,可能几乎看不出来,也可能很容易被发现。审查方看到什么,主要由传输和安全这两层决定。

审查方能看到什么

  • 看起来像随机的字节。 纯 TCP 上的 Shadowsocks 和 VMess 没有可识别的报头。这本身就是一个信号:自 2021 年底起,防火长城会封锁第一个数据包看起来像完全加密数据的连接。详见中国篇。
  • TLS 握手。 Trojan,以及基于 TLS 的 VLESS 或 VMess,看起来像 HTTPS。审查方仍然可以检查服务器名称、IP 地址、证书,以及连接的行为方式。
  • 借来的握手。 REALITY 模仿你所选的某个真实网站的 TLS 握手。没有密钥的探测会被转发到那个真实网站,看到的是它真实的页面。你不需要自己的域名或证书。

四种协议对比

VMessVLESSTrojanShadowsocks
自身加密载荷是否,依赖 TLS 或 REALITY否,依赖 TLS是
默认看起来像纯 TCP 上的随机字节取决于安全层:随机字节、TLS 或 REALITYHTTPS随机字节
需要自己的域名和证书仅在使用 TLS 时仅在使用 TLS 时,REALITY 不需要需要不需要
时钟不准会失败会不会不会不会
可导入 v2rc是是是是
  • VMess 是最初的 V2Ray 协议。它用 UUID 和时间戳认证,所以手机或服务器的时钟差了几分钟,就会在没有任何错误提示的情况下失败。请使用 alterId 0(AEAD 模式);非零的 alterId 属于旧版做法。
  • VLESS 是更轻量的继任者。它自己不做加密,因此隐私程度只取决于它下面那一层。请搭配 TLS 或 REALITY 使用,不要在公开互联网上使用安全为 none 的配置。
  • Trojan 模仿 HTTPS:在普通 TLS 连接里放一个密码。不知道密码的客户端看到的是一个正常的网页。它需要为真实域名申请真实证书,而域名可能被封。
  • Shadowsocks 是历史悠久的加密代理,也是最容易搭建的。请使用 AEAD 加密方式;rc4-md5、aes-256-cfb 等旧的流加密方式很弱。没有插件或封装时,它的流量就是前面说的完全加密那一类。

REALITY 和 Vision 带来什么

在 REALITY 配置中,你会看到 security=reality、服务器名称(sni)、公钥(pbk)和 Short ID(sid)。服务器名称必须是支持 TLS 1.3 和 HTTP/2 的真实网站;REALITY 文档正是这样要求的。

flow=xtls-rprx-vision 是 Vision flow。一个 TLS 连接装在另一个 TLS 连接里,会留下可识别的特征;研究文献称之为 TLS-in-TLS,Xue et al. (USENIX Security 2024) 证明这类特征可以暴露经过混淆的代理。Vision 的设计目的,是针对本身就是 HTTPS 的流量,减弱这种特征。

两者都不是魔法。服务器的 IP 地址和托管网络依然重要,REALITY 也不会隐藏“这条连接指向的是境外数据中心地址”这一事实。

该要什么

  1. 在受限网络上(俄罗斯、伊朗、中国及类似地区):TCP 上的 VLESS 加 REALITY 和 Vision,使用 443 端口。
  2. 再要一个不同类型的配置: Trojan,或基于 TLS 加 WebSocket 或 gRPC 的 VLESS,可选择放在 CDN 之后。CDN 会隐藏服务器的 IP 地址,但这要求 CDN 本身在你所在的地方可以访问,且没有被限速。
  3. 在开放的网络上: 四种都行。用你的服务商已经支持的即可。
  4. 如果你的服务商给你的是订阅: 你无需选择,但可以读一读其中的链接,了解自己拿到的是什么。见如何解读配置链接。
  5. 至少保留两个来自不同主机的配置。 一个失效时,你需要的是另一个 IP 地址,最好还是另一种协议,而不是同一台服务器上的另一个配置。

v2rc 能导入什么,不能导入什么

v2rc 可以从链接、V2Ray JSON 文件、剪贴板或订阅地址导入 VMess、VLESS(包括 REALITY)、Shadowsocks 和 Trojan。它不能导入 Hysteria 2、TUIC、WireGuard、AmneziaWG 和 NaiveProxy。前四个基于 UDP 运行,而许多受限网络会丢弃 UDP;NaiveProxy 基于 HTTPS 运行,但需要它自己的客户端。要用这些,你需要另一个应用。

v2rc 不内置服务器:配置由你自己提供。Smart Connect 会选出最快的配置,并在切换前确认隧道确实能通流量。

来源

带上你的配置,省去瞎猜。

App Store 免费下载,支持 iPhone、iPad 和 Mac。