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

VMess

現在の Mihomo フィールドに基づく Clash 系 VMess アウトバウンド設定です。ユーザー ID、プロトコルバージョン、暗号化、UDP、トランスポート、TLS パラメーターを確認できます。

  • uuid
  • alterId
  • cipher
  • TLS
  • WebSocket
プロキシプロトコル

VMess アウトバウンドのフィールド

このページでは、Clash エコシステムのクライアントにある proxies 配列内の VMess アウトバウンドフィールドを解説します。VMess サーバーのドキュメントを代替するものではありません。クライアントの認証、トランスポート層、TLS パラメーターは、サーバー側と項目ごとに一致させる必要があります。

解析可能な最小ノードは、共通の必須フィールドと VMess の必須フィールドで構成されます。UDP、TLS、その他のトランスポート層を有効にするかどうかは、実際のサーバー構成に従ってください。

name必須
ノード名です。同じ設定内で重複させることはできません。
type必須
固定値 vmess
server必須
VMess サーバーのドメインまたは IP アドレスです。
port必須
サーバーの待受ポートです。サーバー側と一致させる必要があります。

認証、バージョン、暗号化のフィールド

uuidalterIdcipher はいずれも、現在のフィールドリファレンスで必須とされています。相互に代替できる認証オプションではありません。

uuid必須
VMess のユーザー ID です。サーバーから割り当てられた値を使用する必要があります。
alterId必須
現在の設定では通常、次の値を使います: 0ゼロ以外の値では旧プロトコル形式が有効になります。サーバー側で現在も必要とされる場合に限って使用してください。
cipher必須
指定できる値は autononezeroaes-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 として処理されます。そのため、値が誤っていても直接エラーにならず、接続タイムアウトとして現れることがあります。

VMess で現在選択できるトランスポート層
network関連フィールド用途
tcp専用の opts はありませんデフォルトのトランスポート層
wsws-optsWebSocket のパス、Host、Early Data
httphttp-optsHTTP メソッド、パス、リクエストヘッダー
h2h2-optsHTTP/2 の Host とパス
grpcgrpc-optsgRPC サービス名と接続パラメーター
mkcpmkcp-optsVMess 専用の mKCP トランスポート
mekyamekya-optsVMess 専用の Mekya トランスポート

TLS、Reality、証明書の検証

TLS と Reality はトランスポートセキュリティ層にあり、VMess の uuidalterId または 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-keyshort-idを確認し、 tls: trueservername と併せて、サーバー側の値どおりに指定してください。
skip-cert-verify慎重に使用
TLS 証明書の検証を省略すると、接続先を認証する能力が低下します。恒久的なトラブルシューティング手段として使用しないでください。

WebSocket と TLS の設定例

以下の例は、VMess、WebSocket、TLS のフィールド階層だけを示しています。ドメイン、パス、UUID、証明書名はすべて、サーバーから提供された値に置き換えてください。

YAML
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 で接続できない場合は、複数のフィールドを同時に変更せず、サーバー側と項目ごとに照合してください。

  • 設定項目 networkxhttp やその他の未対応値を指定すると、現在のコアでは TCP として処理され、サーバー側のトランスポート層と一致しません。
  • 現在のサーバーでは alterId: 0が必要なのに、クライアントが古いサブスクリプションのゼロ以外の値を使い続けています。
  • WebSocket の path または Host がリバースプロキシのルールと一致していません。
  • TLS を有効にした後で、 servername にノードの IP を指定すると、証明書名または Reality の接続先と一致しなくなります。