network と opts の関連付け
トランスポート層設定は個々のアウトバウンドノードに付随するもので、独立したプロキシプロトコルではありません。まず VMess、VLESS、Trojan の必須フィールドを指定し、続いて network でトランスポート方式を選択します。
各 *-opts は、同名の network を選択した場合にだけ有効です。TLS、Reality、UDP、プロトコル認証は通常、引き続きノードのトップレベルに置きます。WebSocket、gRPC、XHTTP を選択しても自動的には有効になりません。ただし、XHTTP の download-settings は例外で、ダウンリンク接続の TLS と Reality パラメーターをネストして上書きできます。
networkセレクター- トランスポート層を選択します。空欄の場合や、そのプロトコルが対応しない値を指定した場合、現在のコアは TCP として処理します。
*-opts条件付きで有効- 対応する
networkを選択した場合にだけ読み取られます。例として、ws-optsはnetwork: ws。 tls / reality-optsと組み合わせて使用します。通常はトップレベルに置きます- トランスポートセキュリティを担うため、サーバー側に合わせて個別に設定する必要があります。XHTTP のダウンリンク接続では、
download-settings内で上書きできます。 udp / packet-encodingVMess / VLESS- プロキシの UDP 対応と、この二つのプロトコルにおけるパケットエンコーディングを制御します。Trojan のトランスポート層フィールドではなく、
networkによって自動的に決まるものでもありません。
プロトコル対応マトリクス
プロトコルごとに使用できる network は異なります。表の値は、現在公開されている設定リファレンスに基づいています。
| プロトコル | 使用できる network | フォールバック規則 |
|---|---|---|
| VMess | tcp, ws, http, h2, grpc, mkcp, mekya | 空欄またはその他の値は tcp として処理されます |
| VLESS | tcp, ws, http, h2, grpc, xhttp | 空欄またはその他の値は tcp として処理されます |
| Trojan | tcp, ws, grpc | 空欄またはその他の値は tcp として処理されます |
HTTP と HTTP/2
http と h2 は異なる二種類の 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: grpc と grpc-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-connectionsとmin-streamsと競合します。
WebSocket
WebSocket トランスポートは、 network: ws と ws-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- 選択可能な偽装パケットヘッダー:
none、srtp、utp、wechat-video、dtlsまたは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: true と alpn: [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 の高度なフィールドは、アップリンクの分割、パディング、セッション識別子、接続多重化の動作を変えます。サーバーまたはリバースプロキシ側に対応する設定がない場合は、 path、host とデフォルトモードから始め、すべてのオプションを一度に指定しないでください。
xhttp-opts.pathサーバー側の設定に従う- リクエストパスです。サーバーまたはリバースプロキシのルーティングと一致させる必要があります。
xhttp-opts.hostサーバー側の設定に従う- HTTP の Host であり、TLS の
servernameとは別のフィールドです。 xhttp-opts.mode任意- 使用可能
auto、stream-one、stream-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は、現在のフィールドリファレンスで使用可能なアップリンクメソッドとして挙げられていません。
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