プロキシプロトコル · Clash ドキュメント

トランスポート設定

現在の Mihomo フィールドに基づき、Clash の VMess、VLESS、Trojan に適切な network、対応する opts、TLS、プロトコル上の制約を組み合わせる方法を解説します。

  • network
  • WebSocket
  • HTTP/2
  • gRPC
  • TLS
プロキシプロトコル

network と opts の関連付け

トランスポート層設定は個々のアウトバウンドノードに付随するもので、独立したプロキシプロトコルではありません。まず VMess、VLESS、Trojan の必須フィールドを指定し、続いて network でトランスポート方式を選択します。

*-opts は、同名の network を選択した場合にだけ有効です。TLS、Reality、UDP、プロトコル認証は通常、引き続きノードのトップレベルに置きます。WebSocket、gRPC、XHTTP を選択しても自動的には有効になりません。ただし、XHTTP の download-settings は例外で、ダウンリンク接続の TLS と Reality パラメーターをネストして上書きできます。

networkセレクター
トランスポート層を選択します。空欄の場合や、そのプロトコルが対応しない値を指定した場合、現在のコアは TCP として処理します。
*-opts条件付きで有効
対応する network を選択した場合にだけ読み取られます。例として、 ws-optsnetwork: ws
tls / reality-optsと組み合わせて使用します。通常はトップレベルに置きます
トランスポートセキュリティを担うため、サーバー側に合わせて個別に設定する必要があります。XHTTP のダウンリンク接続では、 download-settings 内で上書きできます。
udp / packet-encodingVMess / VLESS
プロキシの UDP 対応と、この二つのプロトコルにおけるパケットエンコーディングを制御します。Trojan のトランスポート層フィールドではなく、 network によって自動的に決まるものでもありません。

プロトコル対応マトリクス

プロトコルごとに使用できる network は異なります。表の値は、現在公開されている設定リファレンスに基づいています。

VMess、VLESS、Trojan のトランスポート層対応
プロトコル使用できる networkフォールバック規則
VMesstcp, ws, http, h2, grpc, mkcp, mekya空欄またはその他の値は tcp として処理されます
VLESStcp, ws, http, h2, grpc, xhttp空欄またはその他の値は tcp として処理されます
Trojantcp, ws, grpc空欄またはその他の値は tcp として処理されます

HTTP と HTTP/2

httph2 は異なる二種類の networkです。どちらもパス、Host、サーバー側のルーティングを一致させる必要がありますが、使用する opts オブジェクトは異なります。

http-opts.methodHTTP
HTTP リクエストメソッドです。サーバー実装に合わせて指定します。
http-opts.pathHTTP
HTTP リクエストパスの一覧です。サーバー設定と一致させる必要があります。
http-opts.headersHTTP
追加の HTTP リクエストヘッダーです。Host、Connection などの値をリバースプロキシのルールと一致させてください。
h2-opts.hostHTTP/2
ホストドメインの一覧です。複数の値を設定するとクライアントがランダムに選択し、サーバー側で検証されます。
h2-opts.pathHTTP/2
HTTP/2 のリクエストパスです。サーバー側と一致させる必要があります。

gRPC

gRPC トランスポートは、 network: grpcgrpc-opts で構成されます。まずサービス名を確認してください。接続数やストリーム数のパラメーターは、サーバー構成と並行処理の要件を明確に理解している場合にだけ調整します。

grpc-opts.grpc-service-nameサーバー側の設定に従う
gRPC サービス名です。サーバー側と一致させる必要があります。
grpc-opts.grpc-user-agent任意
gRPC の User-Agent を上書きします。通常のノードでは一般に変更する必要はありません。
grpc-opts.ping-interval任意
ハートビート間隔です。単位は秒で、デフォルトは無効です。
grpc-opts.max-connections任意
基盤となる接続の最大数です。デフォルトは 1で、 max-streams と競合します。
grpc-opts.min-streams任意
新しい接続を開く前に再利用する最小ストリーム数です。 max-streams と競合します。
grpc-opts.max-streams任意
と、新しい接続を開く前に再利用する最大ストリーム数です。 max-connectionsmin-streams と競合します。

WebSocket

WebSocket トランスポートは、 network: wsws-opts で構成されます。パスと Host は、通常、CDN またはリバースプロキシでも同時に検証されます。

ws-opts.pathサーバー側の設定に従う
WebSocket のリクエストパスです。サーバーまたはリバースプロキシのルーティングと一致させる必要があります。
ws-opts.headers任意
追加のリクエストヘッダーです。一般的には Hostを指定します。TLS の servername と同じフィールドだと考えないでください。
ws-opts.max-early-data任意
WebSocket Early Data の先頭パケット長のしきい値です。サーバー側が対応している場合にだけ有効にします。
ws-opts.early-data-header-name任意
Early Data を運ぶリクエストヘッダー名です。サーバー実装と一致させる必要があります。
ws-opts.v2ray-http-upgrade任意
V2Ray HTTP Upgrade モードを使用します。サーバー側の対応なしに単独で有効にすることはできません。
ws-opts.v2ray-http-upgrade-fast-open任意
HTTP Upgrade の Fast Open を有効にします。直前のフィールドとサーバー側の対応が必要です。

mKCP と Mekya

現在、mKCP と Mekya は VMess だけで使用できます。VLESS や Trojan の汎用トランスポート層ではないため、サブスクリプション変換時にプロトコルをまたいで残さないでください。

mkcp-opts.mtumKCP
最大転送単位です。回線の MTU に合わせて調整してください。
mkcp-opts.ttimKCP
転送間隔です。単位はミリ秒です。
mkcp-opts.uplink-capacitymKCP
アップロード容量です。単位は MB/s です。
mkcp-opts.downlink-capacitymKCP
ダウンロード容量です。単位は MB/s です。
mkcp-opts.congestionmKCP
輻輳制御を有効にするかを制御します。
mkcp-opts.seedmKCP
AES-GCM 認証を有効にする場合に使うシードです。空欄の場合はデフォルトの認証を使用します。
mkcp-opts.headermKCP
選択可能な偽装パケットヘッダー: nonesrtputpwechat-videodtls または wireguard
mekya-opts.urlMekya
Mekya サーバーの URL です。サーバーの入口と一致させる必要があります。
mekya-opts.max-write-delayMekya
先頭パケット後の最大集約待機時間です。単位はミリ秒です。
mekya-opts.max-request-sizeMekya
一回の HTTP リクエストにおける最大ペイロードです。単位はバイトです。
mekya-opts.polling-interval-initialMekya
空のポーリングにおける初期間隔です。単位はミリ秒です。
mekya-opts.h2-pool-sizeMekya
HTTP/2 の接続プールサイズです。
mekya-opts.kcpMekya
Mekya 内部の KCP パラメーターです。フィールドの意味は mkcp-opts と同じです。

XHTTP

現在、XHTTP は VLESS だけで使用できます。デフォルトは H2 です。H3 を使う場合は、次を設定する必要があります: tls: truealpn: [h3]。また、現在の H3 実装は Reality、ShadowTLS、Restls、JLS に対応していません。HTTP/1.1 を使う場合は、 alpn: [http/1.1]

を設定します。UUID と VLESS Encryption は引き続きノードのトップレベルに置きます。TLS と Reality も通常はトップレベルに置きますが、 xhttp-opts.download-settings では、ダウンリンク接続の TLS、Reality、ECH、SNI などのパラメーターをネストして上書きできます。

XHTTP の高度なフィールドは、アップリンクの分割、パディング、セッション識別子、接続多重化の動作を変えます。サーバーまたはリバースプロキシ側に対応する設定がない場合は、 pathhost とデフォルトモードから始め、すべてのオプションを一度に指定しないでください。

xhttp-opts.pathサーバー側の設定に従う
リクエストパスです。サーバーまたはリバースプロキシのルーティングと一致させる必要があります。
xhttp-opts.hostサーバー側の設定に従う
HTTP の Host であり、TLS の servername とは別のフィールドです。
xhttp-opts.mode任意
使用可能 autostream-onestream-up または packet-up
xhttp-opts.headers任意
追加の HTTP リクエストヘッダーです。
xhttp-opts.no-grpc-header任意
stream-up または stream-one のアップリンクで、gRPC に見せるための Content-Type ヘッダーを省略するかを制御します。
xhttp-opts.x-padding-bytes任意
リクエストヘッダーのパディング長の範囲です。デフォルトの範囲は 100-1000
xhttp-opts.x-padding-obfs-mode任意
パディングによる難読化を有効にします。互換性のため、デフォルトは false
xhttp-opts.uplink-http-method任意
アップリンクでは、サーバーと中間ネットワークで許可されているボディ付きメソッドを使用できます。例:POST、PUT、PATCH、DELETE。
xhttp-opts.session-placement任意
セッション ID は path、query、cookie、header のいずれかに置けます。
xhttp-opts.seq-placement任意
シーケンス番号の位置は、セッション位置の規則と互換である必要があります。セッションを path に置く場合、シーケンス番号も path に置いてください。
xhttp-opts.uplink-data-placementpacket-up
次の packet-up モードでは、分割後のアップリンクデータを置く位置を制御します。
xhttp-opts.uplink-chunk-size条件付きで有効
アップリンクデータを body に置かない場合の、一ブロック当たりの最大バイト数を制御します。最小値は 64 バイトです。
xhttp-opts.reuse-settings任意
XHTTP の接続多重化設定です。デフォルト値はなく、省略時は多重化が有効になりません。
xhttp-opts.reuse-settings.max-concurrency二つから一つを選択
基盤となる接続ごとの最大同時リクエスト数です。 max-connections と競合します。
xhttp-opts.reuse-settings.max-connections二つから一つを選択
と、最大同時接続数です。 max-concurrency と競合します。
xhttp-opts.download-settings任意
ダウンリンク接続のパラメーターを上書きします。TLS、Reality、ECH、SNI、ALPN、クライアントフィンガープリントなどのフィールドをネストできます。未指定の値はアップリンク設定を引き継ぎます。
  • トランスポート方式 xhttp を VMess または Trojan ノードで使用しないでください。
  • XHTTP の reuse-settings と汎用の smuxを同時に有効にし、二重の多重化を構成しないでください。
  • パス、Host、ALPN、モードがサーバー側と一致しない場合は、まずこれらの基本フィールドを修正してください。
  • uplink-http-method: GET は、現在のフィールドリファレンスで使用可能なアップリンクメソッドとして挙げられていません。
YAML
proxies:
  - name: vless-xhttp-h2
    type: vless
    server: edge.example.com
    port: 443
    uuid: 00000000-0000-0000-0000-000000000001
    encryption: ""
    udp: true
    tls: true
    servername: origin.example.com
    alpn:
      - h2
    client-fingerprint: chrome
    network: xhttp
    xhttp-opts:
      path: /xhttp
      host: origin.example.com
      mode: auto