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と接続パラメーターをサーバー側と一致させる必要があります。smuxTCP のみ- 汎用の 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トップレベルで必須の Trojan のpassword。 - が抜けています。サーバー側が 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