Trojan 协议完全指南:TLS 流量伪装原理、Xray 服务端部署与全平台客户端配置(2026最新)
Trojan 是科学上网协议家族里「最像正常流量」的一位。它不发明新的加密花样,而是把代理流量原封不动地伪装成标准的 HTTPS 请求,让审查系统看到的只是一台普普通通提供网页服务的服务器。本文从原理、部署到客户端配置做完整梳理,补齐 VMess / VLESS Reality / Hysteria2 之外的第四块协议拼图。

阅读提示Trojan 与 《VLESS Reality 协议完全指南》、《Hysteria2 协议完全指南》、《V2Ray / VMess 完全配置指南》 互为补充:Reality 主打「免证书抗审查」、Hysteria2 主打「弱网性能」、VMess 主打「老牌稳健」、Trojan 主打「流量特征最干净」。四篇合起来就是 2026 年自建节点的完整协议图谱。
一、协议原理:Trojan 为什么难以被识别
1.1 核心思想——伪装成正常 HTTPS
早期代理协议(如原始 SS、早期 VMess)的流量在统计特征和握手行为上与正常流量有明显差异,容易被机器学习型的流量分析识别。Trojan 走了一条更「笨」也更有效的路:
不做任何特殊的事,只做最普通的 HTTPS。
Trojan 在 443 端口上跑的就是标准 TLS 1.3。任何连接到这个端口的客户端,都会先进行常规的 TLS 握手。区别只在握手之后:
- Trojan 客户端发出的应用数据会用约定密码加密,服务端解密后识别为代理请求,转发到目标网站。
- 普通浏览器发出的正常 HTTPS 请求,服务端解密后发现「密码不对」,就把它当成普通访客,转发给 Fallback 里的真实网站。
对外观察者而言,无论是代理流量还是普通访问,WireShark 抓到的都是** indistinguishable 的 TLS 加密流量**。
1.2 密码认证 + Fallback 机制
┌─────────────── 443 端口 (TLS) ───────────────┐浏览器 ───▶ │ 密码正确? │ │ ├─ 是 → 当作代理流量 → 转发到真实目标 │ │ └─ 否 → 转发给 Fallback 真实网站 (如 nginx) │Trojan ───▶ │ 密码正确 → 当作代理流量 → 转发到真实目标 │ └─────────────────────────────────────────────┘这正是 Trojan 抗主动探测的关键:
- 审查者主动连上来探测,因为发不出正确密码,得到的是真实网站的正常响应;
- 它无法证明「这台服务器在提供代理服务」,只能认定这是台普通 Web 服务器;
- 即便封掉,也会误伤背后的真实网站,成本极高。
1.3 与其他协议对比
| 协议 | 加密方式 | 是否需要自有证书 | 抗审查核心 | 典型场景 |
|---|---|---|---|---|
| Trojan | 依赖 TLS | 需要(域名 + 证书) | 流量伪装成 HTTPS + Fallback | 稳定首选、商业机场主力 |
| VMess | 自带加密 | 不需要 | 协议混淆 | 老牌稳健 |
| VLESS Reality | 依赖 TLS | 不需要(偷证书) | 借用真实站点指纹 | 免证书、强抗探测 |
| Hysteria2 | 自研 (QUIC) | 可选 | 弱网高性能 | 高延迟/丢包网络 |
二、Trojan 与 Reality 的本质区别
很多人搞混 Trojan 和 Reality,其实一句话就能分清:
Trojan:「我有自己的域名和证书,我的 HTTPS 是真的。」 Reality:「我没证书,但我借用微软/苹果的证书来骗过握手。」
这意味着:
- Trojan 必须买/准备域名,并申请一张有效 TLS 证书(Let’s Encrypt 免费);
- 证书需要定期续期(acme.sh 可自动续);
- 域名最好干净、无敏感历史,且解析到你的 VPS;
- 好处是:流量就是「货真价实」的 HTTPS,和任何正常网站毫无二致,长期稳定性更好。
如果你暂时没有域名、想最快上线,先用 Reality;如果你有域名、追求最干净的流量特征,Trojan 是更优解。
三、准备工作
- 一台境外 VPS(推荐 1C1G 起,系统 Debian 12 / Ubuntu 22.04)
- 一个域名,A 记录解析到 VPS 公网 IP(例如
trojan.example.com) - 开放 443(TCP)入站,并放行 80(用于证书申请校验)
- 本地已装好客户端(下文配置):Clash Meta / sing-box / Shadowrocket / v2rayN
四、服务端部署:Xray + Trojan
4.1 安装 Xray-core
# 使用官方安装脚本(2026 年仍是社区首选)bash <(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)
# 验证xray version# Xray 1.x.x (XTLS, …)
# 配置文件目录/etc/xray/config.json4.2 申请 TLS 证书(acme.sh + Let’s Encrypt)
# 安装 acme.shcurl https://get.acme.sh | shsource ~/.bashrc
# 申请证书(确保 80 端口空闲、域名已解析)~/.acme.sh/acme.sh --issue -d trojan.example.com --standalone
# 安装到固定目录供 Xray 读取~/.acme.sh/acme.sh --install-cert -d trojan.example.com \ --key-file /etc/xray/trojan.key \ --fullchain-file /etc/xray/trojan.crt
# 设置自动续期(acme.sh 默认已加入 cron)如果 80 端口被占用,可改用
--webroot或 Cloudflare DNS 验证(--dns dns_cf)。证书默认 90 天,acme.sh 会自动续期并更新文件。
4.3 编写配置文件
{ "inbounds": [ { "listen": "0.0.0.0", "port": 443, "protocol": "trojan", "settings": { "clients": [ { "password": "替换为一段随机长字符串-如-UUID格式" } ], "fallbacks": [ { "dest": 8080, "xver": 1 } ] }, "streamSettings": { "network": "tcp", "security": "tls", "tlsSettings": { "certificates": [ { "certificateFile": "/etc/xray/trojan.crt", "keyFile": "/etc/xray/trojan.key" } ] } } } ], "outbounds": [ { "protocol": "freedom", "tag": "direct" }, { "protocol": "blackhole", "tag": "blocked" } ], "routing": { "rules": [ { "type": "field", "ip": ["geoip:private"], "outboundTag": "blocked" } ], "domainStrategy": "IPIfNonMatch" }}fallbacks.dest: 8080 指向一个真实 Web 服务(见 4.5),这样密码错误的请求会被当作普通访客处理。
4.4 启动服务
systemctl enable xraysystemctl restart xraysystemctl status xray
# 看日志排错journalctl -u xray -f4.5 (推荐)用 Nginx 做 Fallback 真实网站
为了让「密码错误」的访问真的像在浏览普通网站,起一个静态页面:
# 安装 nginx 并放一个普通首页到 8080 端口apt install -y nginx# 默认 nginx 监听 80,改监听 8080 避免与证书申请冲突sed -i 's/listen 80;/listen 8080;/' /etc/nginx/sites-enabled/defaultsystemctl restart nginx此时访问 https://trojan.example.com:
- Trojan 客户端 → 正常代理
- 浏览器直接访问 → 看到 nginx 默认页
审查者探测得到的就是「一个正常的 nginx 站点」。
五、客户端配置
5.1 Clash Meta(mihomo)
proxies: - name: "Trojan-节点" type: trojan server: trojan.example.com port: 443 password: "替换为服务端配置的密码" sni: trojan.example.com alpn: - h2 - http/1.1 skip-cert-verify: false # 证书有效时务必 false5.2 sing-box
{ "outbounds": [ { "type": "trojan", "tag": "trojan-out", "server": "trojan.example.com", "server_port": 443, "password": "替换为服务端配置的密码", "tls": { "enabled": true, "server_name": "trojan.example.com", "alpn": ["h2", "http/1.1"] } } ]}5.3 Shadowrocket(iOS)
添加节点 → 类型选 Trojan → 填写:
- 服务器:
trojan.example.com - 端口:
443 - 密码:服务端配置的密码
- SNI / 伪装域名:
trojan.example.com - 允许不安全:
关(证书有效时不勾)
5.4 v2rayN(Windows)
服务器 → 添加 [Trojan] 服务器 → 填写地址、端口、用户 ID(即密码)、SNI,传输协议选 tcp,底层传输安全选 tls。
六、URI 链接格式
Trojan 的分享链接格式为:
trojan://<password>@<host>:<port>?sni=<sni>&alpn=h2#<节点名>示例:
trojan://abc123secret@trojan.example.com:443?sni=trojan.example.com&alpn=h2#我的Trojan节点机场订阅通常把多个这类链接打包进订阅 URL,客户端一键导入即可。
七、进阶:Trojan-Go 与 WebSocket + CDN 隐匿
7.1 Trojan-Go(多路复用 + WebSocket)
Trojan-Go 是原版 Trojan 的 Go 语言增强实现,支持:
- 多路复用(mux):单连接承载多请求,显著降低延迟
- WebSocket 传输:把 Trojan 流量塞进 WS,便于走 CDN
- Shadowsocks AEAD 二次混淆:进一步增强特征随机性
Xray-core 同样支持 Trojan over WebSocket,配置只需在 streamSettings 改用:
"streamSettings": { "network": "ws", "security": "tls", "wsSettings": { "path": "/ray" }, "tlsSettings": { "...": "同上证书配置" }}7.2 走 Cloudflare CDN 隐匿真实 IP
把 trojan.example.com 的 DNS 设为 Cloudflare 代理(橙色云),Trojan(WS) 流量经 CF 边缘节点转发到你的 VPS:
- 外界只能看到你连的是 Cloudflare,看不到真实 VPS IP
- 即使 VPS IP 被墙,换台机器改回源即可,域名不变
- 代价:CDN 可能引入少量延迟,且需 WS 传输(裸 Trojan-TCP 走不了 CDN)
八、性能优化
- TLS 1.3 + ALPN:服务端配置
alpn: ["h2","http/1.1"],优先 HTTP/2 多路复用。 - uTLS 指纹(Xray 客户端):在客户端
streamSettings.tlsSettings加"fingerprint": "chrome",让 TLS 握手指纹更像浏览器。 - BBR 加速:VPS 开启 BBR(见 《Linux VPS 网络优化与 BBR 加速完全指南》),TLS 握手和首包延迟明显下降。
- 多用户隔离:在
clients数组里加多个password,每个设备一个,便于单独吊销。 - mux 多路复用:客户端开启
smux(Clash Meta)/multiplex(sing-box),高频小请求更跟手。
九、实测数据
测试环境:境外 VPS(日本机房,1C1G),本地电信 500M 宽带,2026-07 实测。
| 指标 | Trojan (TLS) | VLESS Reality | 裸 WebSocket SS |
|---|---|---|---|
| 握手延迟(TLS RTT) | ~38 ms | ~40 ms | ~12 ms(无 TLS) |
| 下载峰值 | 跑满本地带宽 | 跑满本地带宽 | 跑满本地带宽 |
| 抗主动探测 | 强(Fallback) | 极强(偷证书) | 弱 |
| CPU 占用(1Gbps) | 低 | 低 | 极低 |
结论:三者吞吐差异极小,Trojan 的胜点在「流量特征最干净 + 生态最成熟」,适合作为长期稳定主力。
十、常见问题排错
Q1:客户端提示证书错误 / unknown certificate
- 检查
sni是否填对(应为证书对应的域名) - 确认证书未过期:
openssl x509 -enddate -noout -in /etc/xray/trojan.crt - 证书有效时客户端
skip-cert-verify必须关(false)
Q2:连得上但上不了网
- 看服务端日志
journalctl -u xray -f有无password不匹配 - 确认出站
freedom未被误路由到blocked - 检查 VPS 本身能否正常出网(
curl https://www.google.com)
Q3:80 端口被占导致证书申请失败
- 改用
--webroot或 Cloudflare DNS 验证 - 或临时停掉占用 80 的服务再申请
Q4:想和现有网站共用 443
- 用 Fallback 机制:Xray 监听 443,把非 Trojan 流量转给 Nginx/其他(4.5 节)
- 不要两个程序直接抢 443,会端口冲突
十一、协议选型建议
- 追求最省事、无域名:选 VLESS Reality
- 有域名、要最干净流量特征、长期稳定:选 Trojan(本文)
- 高延迟/丢包网络(地铁、跨国):选 Hysteria2
- 老牌稳健、生态兼容广:选 VMess
实际生产中,很多机场会同时提供 Trojan + VLESS + Hysteria2 多协议入口,客户端按网络环境切换。自建用户建议至少掌握 Trojan 与 Reality 两种,互为备份。
相关文章:
- VLESS Reality 协议完全指南:抗审查原理、部署与客户端配置
- Hysteria2 协议完全指南:原理、自建部署与客户端配置
- V2Ray / VMess 完全配置指南 2026:服务端部署 + 客户端配置 + TLS + CDN 隐匿全攻略
- sing-box 全平台使用教程:新一代通用代理平台配置指南
- mihomo(Clash Meta)完全配置指南 2026:配置文件详解 + 规则集 + TUN 模式 + Docker
- Linux VPS 网络优化与 BBR 加速完全指南
本文命令与配置以 2026 年 7 月 Xray-core / acme.sh 稳定版为准。协议与工具迭代较快,具体参数请以官方文档为准。