VMess アウトバウンドのフィールド
このページでは、Clash エコシステムのクライアントにある proxies 配列内の VMess アウトバウンドフィールドを解説します。VMess サーバーのドキュメントを代替するものではありません。クライアントの認証、トランスポート層、TLS パラメーターは、サーバー側と項目ごとに一致させる必要があります。
解析可能な最小ノードは、共通の必須フィールドと VMess の必須フィールドで構成されます。UDP、TLS、その他のトランスポート層を有効にするかどうかは、実際のサーバー構成に従ってください。
name必須- ノード名です。同じ設定内で重複させることはできません。
type必須- 固定値
vmess。 server必須- VMess サーバーのドメインまたは IP アドレスです。
port必須- サーバーの待受ポートです。サーバー側と一致させる必要があります。
認証、バージョン、暗号化のフィールド
uuid、alterId と cipher はいずれも、現在のフィールドリファレンスで必須とされています。相互に代替できる認証オプションではありません。
uuid必須- VMess のユーザー ID です。サーバーから割り当てられた値を使用する必要があります。
alterId必須- 現在の設定では通常、次の値を使います:
0ゼロ以外の値では旧プロトコル形式が有効になります。サーバー側で現在も必要とされる場合に限って使用してください。 cipher必須- 指定できる値は
auto、none、zero、aes-128-gcmまたはchacha20-poly1305。 global-padding任意- VMess のグローバルパディングを有効にします。通信量が増えるため、サーバー側の要件や互換性要件と無関係に有効にしないでください。
authenticated-length任意- 長さブロックの暗号化を制御します。クライアントとサーバーの対応状況を一致させる必要があります。
UDP とパケットエンコーディング
ノードで UDP を許可することと、UDP のカプセル化形式を選ぶことは別の設定です。どちらか一方のフィールドだけを指定しても、UDP が使えるとは限りません。
udp任意- 共通フィールドです。デフォルトは
falseです。UDP をプロキシする場合はtrueに設定し、サーバー側も対応していることを確認してください。 packet-encoding任意- 空欄の場合は元のエンコーディングを使用します。次も選択できます:
packetaddrまたはxudp。サーバー実装との互換性が必要です。
VMess のトランスポート層を選ぶ
network VMess を運ぶトランスポート層を選択します。未指定の場合、または現在のコアが認識しない値を指定した場合は TCP として処理されます。そのため、値が誤っていても直接エラーにならず、接続タイムアウトとして現れることがあります。
| network | 関連フィールド | 用途 |
|---|---|---|
| tcp | 専用の opts はありません | デフォルトのトランスポート層 |
| ws | ws-opts | WebSocket のパス、Host、Early Data |
| http | http-opts | HTTP メソッド、パス、リクエストヘッダー |
| h2 | h2-opts | HTTP/2 の Host とパス |
| grpc | grpc-opts | gRPC サービス名と接続パラメーター |
| mkcp | mkcp-opts | VMess 専用の mKCP トランスポート |
| mekya | mekya-opts | VMess 専用の Mekya トランスポート |
TLS、Reality、証明書の検証
TLS と Reality はトランスポートセキュリティ層にあり、VMess の uuid、alterId または cipherを変更しません。通常の TLS、Reality、その他の TLS キャリアから、サーバー構成に適したものを選択してください。
tls任意- 次の値に設定すると
trueにすると TLS が有効になります。サーバー側で TLS が有効でない場合は指定しないでください。 servername任意- VMess の SNI フィールドです。通常、空欄の場合は
serverを使用します。WebSocket 設定に Host リクエストヘッダーがある場合、現在の実装ではその Host が SNI として優先されます。 alpn任意- TLS のアプリケーション層プロトコル一覧です。順序と使用可能な値を、サーバー側のトランスポート層に合わせる必要があります。
client-fingerprint任意- uTLS のクライアントフィンガープリントです。例:
chrome。証明書のフィンガープリントではありません。 fingerprint任意- サーバー証明書の SHA-256 フィンガープリントです。
client-fingerprintとは意味が異なります。 reality-opts任意- 空でない場合は Reality が有効になります。少なくとも
public-keyとshort-idを確認し、tls: true、servernameと併せて、サーバー側の値どおりに指定してください。 skip-cert-verify慎重に使用- TLS 証明書の検証を省略すると、接続先を認証する能力が低下します。恒久的なトラブルシューティング手段として使用しないでください。
WebSocket と TLS の設定例
以下の例は、VMess、WebSocket、TLS のフィールド階層だけを示しています。ドメイン、パス、UUID、証明書名はすべて、サーバーから提供された値に置き換えてください。
proxies:
- name: vmess-ws-tls
type: vmess
server: edge.example.com
port: 443
uuid: 00000000-0000-0000-0000-000000000001
alterId: 0
cipher: auto
udp: true
packet-encoding: xudp
tls: true
servername: origin.example.com
network: ws
ws-opts:
path: /vmess
headers:
Host: origin.example.comよくある設定の不一致
VMess で接続できない場合は、複数のフィールドを同時に変更せず、サーバー側と項目ごとに照合してください。
- 設定項目
networkにxhttpやその他の未対応値を指定すると、現在のコアでは TCP として処理され、サーバー側のトランスポート層と一致しません。 - 現在のサーバーでは
alterId: 0が必要なのに、クライアントが古いサブスクリプションのゼロ以外の値を使い続けています。 - WebSocket の
pathまたはHostがリバースプロキシのルールと一致していません。 - TLS を有効にした後で、
servernameにノードの IP を指定すると、証明書名または Reality の接続先と一致しなくなります。
