登录

登录以管理订阅

Bessy Connect
账户
作者: Pavel Onuchin, VPN 与网络安全专家

9 分钟

Trojan 协议:是什么、如何工作,与 VLESS + Reality 有什么区别

Trojan 是一种代理协议,它把流量藏在普通的 TLS 连接里,从外部看就像在访问一个 HTTPS 网站。它和“木马”恶意程序没有关系:这个名字取自特洛伊木马的典故。作者用一句话概括它的目标:“无法识别的机制”。它与 VLESS + Reality 的主要区别在于,观察者看到的是谁的 TLS:Trojan 用自己的证书建立自己的 TLS 连接,而 Reality 展示的是某个真实第三方网站的握手。下面介绍这个协议的构造、它的弱点,以及它在什么情况下仍然适用。

用通俗的话说,Trojan 是什么?

Trojan 是一种经由服务器传输数据的方式,它让连接看起来和访问一个加密网站没有区别。客户端与服务器建立真正的 TLS 连接,然后在连接内部发送密码和流量要送达的地址。

这个协议是为应对中国的过滤系统而出现的;原始项目的名字就叫 trojan-gfw。它的思路不是发明一种在其他流量中显得突兀的特殊加密,而是混入互联网上最常见的那类连接,也就是 HTTPS。

Trojan 协议是怎样构成的?

TLS 握手完成后,客户端向服务器发送密码的哈希值和一条类似 SOCKS5 请求的命令。密码正确,服务器就把流量转发到目标地址;不正确,它就表现得像一台普通的网页服务器。

根据项目文档,TLS 内部的数据包由四部分组成:

  1. 密码哈希:56 个字符,十六进制表示的 SHA-224;
  2. 分隔符 CRLF;
  3. 请求,包含命令、地址类型、目标地址和端口;
  4. 有效载荷,也就是数据本身。

机制的另一半是防探测。任何结构或密码不正确的连接,服务器都会转交给预先设定的地址,默认是本地的网页服务器。想“敲门”看看这台服务器上有什么的人,看到的只是一个普通网站。

Trojan 没有自己的加密:全部保护都来自 TLS。因此服务器需要域名和有效的证书,缺了它们,伪装就不起作用。

Trojan 与 VLESS + Reality 有什么区别?

Trojan 向观察者出示的是自己的证书和自己的 TLS 握手,而 Reality 出示的是别人的热门网站的握手。正因为如此,Trojan 可以通过两个特征被识别出来,而 VLESS + Reality 搭配 XTLS Vision 模式则弥补了这两点。

第一个特征是 TLS 套 TLS。用户通过 Trojan 打开 HTTPS 网站时,一条加密连接内部又建立了第二条。这时数据包的大小和顺序很有特点,流量分析系统已经学会识别这种模式。第二个特征是握手指纹:Trojan 客户端的 TLS 参数可能与真实浏览器发出的不一致。

TrojanVLESS + RealityShadowsocks
伪装成什么使用自有证书的 HTTPS真实第三方网站的 TLS 会话不伪装,看起来像随机数据
是否需要自己的域名和证书需要不需要不需要
服务器被探测时的反应返回备用网站探测请求落到真实网站上不响应或断开连接
是否容易因 TLS 套 TLS 被识别是在 XTLS Vision 模式下有所降低不适用
服务器配置难度中等:域名、证书、网页服务器中等:密钥和目标网站的选择低
客户端支持广泛,包括旧客户端基于 Xray 和 sing-box 的新式客户端非常广泛

从抗封锁能力角度对这三种协议的详细比较,见文章 Reality、Shadowsocks 还是 Trojan。Reality 具体是如何借用别人的握手的,见什么是 Reality。

Trojan-Go 是什么?

Trojan-Go 是用 Go 语言编写的另一个协议实现,带有额外功能。它支持多路复用,即在一条连接里传输多个流,也支持通过 WebSocket 传输,这样就可以把服务器放在 CDN 后面。

它保留了与原版 Trojan 的兼容性,但扩展模式只能在同为 Trojan-Go 的客户端和服务器之间使用。最主要的弱点,也就是嵌套 TLS,并不会因为换了实现而消失。

Trojan 在什么情况下仍然适用?

Trojan 适合这样的环境:过滤系统不分析流量模式,只检查连接看起来像不像 HTTPS。它也可以用作备用方案,或用在没有支持 Reality 的客户端的旧设备上。

支持和反对的理由如下:

  • 优点。 结构简单且经过充分研究,几乎每个客户端都有实现,服务器看起来就是一个带真实证书的普通网站。
  • 缺点。 需要域名和证书,而且要续期。嵌套 TLS 会被深度流量分析系统识别。域名可能在服务器地址之外被单独封锁。

在运营商使用深度包检测的地方(在俄罗斯,这由 TSPU 设备完成,即安装在俄罗斯运营商网络上的过滤设备),通常把 VLESS + Reality 作为主要方案,而把 Trojan 留作备用。这种设备是什么、它如何区分协议,见文章什么是 TSPU。

BessyConnect 使用什么协议

BessyConnect 使用 VLESS + Reality。这样选择的理由上文已经说明:Reality 不需要自己的域名,也不会留下代理服务器单独证书这样的指纹。

同时,用户不需要弄懂协议,也不需要配置服务器,一切都已经内置在应用里。如果你搜索 Trojan 是想找“一个能用的协议”,而不是一个研究课题,我们推荐这条路:

与经典协议的比较见文章 VLESS、OpenVPN 还是 WireGuard,与更新的协议的比较见综述 Hysteria2、TUIC 与 AmneziaWG。

常见问题

Trojan 是病毒吗?

不是。Trojan 协议是一种通过 TLS 传输流量的网络技术。它和恶意程序的共同点只有名字。

VLESS 和 Trojan 哪个更好?

在有深度流量分析的网络里,VLESS + Reality 更稳定:它不会产生带自有证书的嵌套 TLS。Trojan 结构更简单,支持它的客户端也更多,包括旧客户端。

Trojan 需要自己的域名吗?

需要。服务器要有域名和有效的 TLS 证书,否则连接就不像一个普通的 HTTPS 网站。

Trojan-Go 和 Trojan 有什么不同?

它是用 Go 实现的版本,带多路复用和 WebSocket 支持。基础协议相同,附加模式只能在同为 Trojan-Go 的客户端和服务器之间使用。

没有自己的服务器,能用 Trojan 吗?

能,只要服务方发给你形如 trojan://… 的密钥,把它粘贴进客户端即可,方法和 VLESS 密钥一样。如果什么都不想配置,直接选一个自带现成应用的服务更省事,例如 BessyConnect(Android)或 iPhone 版。

相关文章

VPN 里的后量子加密:谁现在就需要

后量子加密 vpn 是什么、谁现在就需要升级?本文讲清「先存下来以后再解密」攻击的威胁、为何替换的是密钥交换而非流加密,以及如何区分真正的 ML-KEM 实现与营销贴纸,并回答普通用户现在该不该为此更换服务,看完心里有数。 更多

Discord VPN:被封锁时如何进入 Discord

想找一款好用的 discord vpn?BessyConnect 帮你在 Discord 被封锁时恢复访问:电脑和手机上语音频道、直播和屏幕共享都能正常使用。VLESS+Reality 协议有效对抗 DPI 检测,100+ 台服务器任选,连接稳定延迟低。 更多

Instagram VPN:被封锁地区打开 Instagram 的方法

需要一款稳定的 instagram vpn?当 Instagram 打不开或图片频繁卡顿时,BessyConnect 采用 VLESS+Reality 协议恢复访问,动态、快拍与 Reels 在被封锁地区也能正常加载,手机和电脑上都能流畅使用。 更多