代理协议 · Clash文档

Trojan

Clash 生态 Trojan 出站配置参考,以当前 Mihomo 字段为准,核对密码、强制 TLS、SNI、证书、Reality、UDP 与传输层。

  • password
  • TLS
  • SNI
  • Reality
  • UDP
代理协议

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 客户端指纹,例如 chromerandom,不是证书指纹。
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 处理。

Trojan 当前传输层取值
network配套字段适用说明
tcp无专用 opts默认传输层
wsws-optsWebSocket 路径、Host 和 Early Data
grpcgrpc-optsgRPC 服务名和连接参数
network可选
只使用 wsgrpc;其他值会按 TCP 处理。
ws-optsWebSocket
路径、Host 和 Early Data 字段必须与服务端或反向代理一致。
grpc-optsgRPC
grpc-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-gcmaes-256-gcmchacha20-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,却漏掉顶层必填的 Trojan password
  • 服务端是 gRPC,客户端仍按默认 TCP 连接,或 grpc-service-name 不一致。
YAML
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