代理協定 · 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