Trojan 出站字段
本页说明 Clash 生态客户端 proxies 数组中的 Trojan 出站字段。Trojan 使用密码认证并强制启用 TLS,客户端必须同时匹配服务端地址、端口、密码和 TLS 名称。
最小配置由四个通用必填字段和 password 组成。SNI 可以留空并回落到 server 地址,但使用域名证书、CDN 或 Reality 时通常需要明确填写。
name必填- 节点名称,在同一份配置中不可重复。
type必填- 固定填写
trojan。 server必填- Trojan 服务端的域名或 IP 地址。
port必填- 服务端监听端口,常见为 443,但应以服务端配置为准。
password必填- Trojan 服务器密码,必须与服务端分配的值完全一致。
TLS、SNI 与证书校验
Trojan 在当前内核中强制启用 TLS,不需要依靠 tls: true 才变成 TLS 节点。下面字段用于确定握手名称、ALPN、客户端指纹和证书校验方式。
sni可选- TLS 服务器名称。留空时使用
server地址,域名证书或 CDN 场景通常需要明确匹配。 alpn可选- TLS 应用层协议列表,必须与服务端和所选传输层兼容。
client-fingerprint可选- uTLS 客户端指纹,例如
chrome或random,不是证书指纹。 fingerprint可选- 服务端证书的 SHA-256 指纹,与
client-fingerprint含义不同。 skip-cert-verify谨慎- 设为
true会跳过证书验证,不应作为长期排障方案。 name-cert-verify可选- 只修改证书 DNSName 校验目标,不会修改发送的 SNI。
certificate / private-key可选- 两者同时填写时启用客户端 mTLS,普通 Trojan 节点通常不需要。
Reality 与其他 TLS 载体
Reality、ShadowTLS、Restls 和 JLS 都属于 TLS 连接层扩展。只有服务端明确启用相应能力时才添加,不要同时启用多套相互冲突的连接层配置。
reality-opts.public-keyReality- 服务端 Reality 私钥对应的公钥。
reality-opts.short-idReality- 填写服务端允许的 short ID 之一。
reality-opts.support-x25519mlkem768可选- 用于声明支持 X25519-MLKEM768 密钥交换,需服务端同时支持。
shadow-tls-opts按服务端- 仅在服务端使用 ShadowTLS 时填写版本和密码,并继续使用
sni作为握手名称。 restls-opts按服务端- 仅在服务端使用 Restls 时填写密码与 TLS 版本提示。
jls-opts按服务端- 仅在服务端使用 JLS 时填写用户名和密码。
选择 Trojan 传输层
Trojan 当前只把 WebSocket 和 gRPC 列为可选传输层。未填写 network 或填写其他值时按 TCP 处理。
| network | 配套字段 | 适用说明 |
|---|---|---|
| tcp | 无专用 opts | 默认传输层 |
| ws | ws-opts | WebSocket 路径、Host 和 Early Data |
| grpc | grpc-opts | gRPC 服务名和连接参数 |
network可选- 只使用
ws或grpc;其他值会按 TCP 处理。 ws-optsWebSocket- 路径、Host 和 Early Data 字段必须与服务端或反向代理一致。
grpc-optsgRPCgrpc-service-name和连接参数必须与服务端一致。smux仅 TCP- 通用 sing-mux 只适用于 TCP 传输,不要与 gRPC 自身复用概念混用。
UDP 与 trojan-go AEAD 扩展
UDP 开关和 trojan-go 的 Shadowsocks AEAD 扩展互不相关。普通 Trojan 节点不需要 ss-opts。
udp可选- 通用字段,默认
false。需要代理 UDP 时设为true,并确认服务端支持。 ss-opts.enabled可选- 仅在 trojan-go 服务端启用 Shadowsocks AEAD 扩展时设为
true。 ss-opts.method默认 aes-128-gcm- 可用
aes-128-gcm、aes-256-gcm或chacha20-ietf-poly1305。 ss-opts.password启用时必填- trojan-go AEAD 扩展密码必须非空,且不替代顶层
password。
基础配置与错误检查
示例展示普通 Trojan over TLS 节点。服务端未启用 WebSocket、gRPC、Reality 或 ss-opts 时,不要自行补充这些字段。
- 把
network写成h2,误以为它与alpn: [h2]是同一个设置。 - SNI、证书校验名称和反向代理域名不一致,导致 TLS 握手失败。
- 只填写
ss-opts.password,却漏掉顶层必填的 Trojanpassword。 - 服务端是 gRPC,客户端仍按默认 TCP 连接,或
grpc-service-name不一致。
proxies:
- name: trojan-tls
type: trojan
server: edge.example.com
port: 443
password: your-trojan-password
sni: origin.example.com
alpn:
- h2
- http/1.1
client-fingerprint: chrome
udp: true
network: tcp