VMessとVLESSはどちらを選ぶ?2つのV2Rayプロトコルの違いを1分で解説

暗号化方式、性能への負荷、REALITYなどのトランスポートとの互換性という3つの視点から、VMessとVLESSの違いをわかりやすく比較し、用途別のプロトコル選びを解説します。

この記事の要点

既存のVMessノードはそのまま使えます。新しくノードを作成し、クライアントがXrayコアに対応している場合は、VLESSを優先的に検討しましょう。サブスクリプションのノード選び、サーバーの手動追加、プロトコル互換性の確認を行う方に適した内容です。プロトコル、トランスポート層、TLS、REALITYの関係を整理し、端末とサーバーの条件に合わせて選べるようになります。

VMessとVLESSの違いとは

VMessとVLESSはいずれもクライアントとサーバー間の認証とデータのカプセル化を担いますが、設計上の重点が異なります。VMessはプロトコル層に認証と暗号化の仕組みを備えており、現在の一般的な設定ではAEADモードを使用し、alterId0に設定します。VLESSはプロトコル層をより簡素化し、主にユーザー認証とデータ転送を行います。この層で重複したコンテンツ暗号化は提供しません。

「VLESSはプロトコル層で暗号化しない」という説明は、接続が平文で直接公開されるという意味ではありません。実際の構成では、通常VLESSをTLSと組み合わせるか、XrayコアでREALITYと組み合わせます。接続の機密性は外側のセキュリティ機構が担い、VLESSは重複する処理を減らします。安全性を判断する際は、プロトコル名だけでなく、VLESS + TCP + TLSのような構成全体を確認してください。

比較項目 VMess VLESS
プロトコル層の役割 認証、データのカプセル化、プロトコル層での暗号化 認証と軽量なデータ転送
一般的なユーザー識別子 UUID UUID
現在よく使われる設定 VMess + WebSocket + TLS VLESS + TCP + REALITY
コアの特徴 V2RayとXrayのいずれも幅広く対応 Xrayの組み合わせのほうが選択肢が多い
時刻同期 認証処理には正確なシステム時刻が必要 通常、VMessのような時刻認証には依存しない

暗号化と性能への負荷を理解する

VMessはプロトコル層で認証と暗号化を処理しますが、VLESSはその役割をTLSやREALITYなど外側の仕組みに委ねます。一般ユーザーにとって、この構造の違いがウェブページの表示速度に明確な差として現れるとは限りません。実際の使用感は、サーバー負荷、回線品質、混雑状況、トランスポート方式、接続先サイトの応答時間にも左右されます。

同じサーバー、同じ回線、同じトランスポート条件で比較すると、VLESSはプロトコル処理がより簡素なため、理論上は追加の計算負荷が少なくなります。この差は、高スループット時や性能の低いルーター、多数の同時接続で確認しやすくなります。一方、日常のウェブ閲覧やメッセージ送受信では、プロトコルの負荷より回線の変動のほうが大きく影響することが多いでしょう。

VLESS + REALITY

トランスポート
TCP
セキュリティ
reality
Flow
xtls-rprx-vision
フィンガープリント
chrome
ユーザー識別子
UUID

Xrayコアの設定でよく使われます。サブスクリプションをインポートした後は、公開鍵、Short ID、SNI、フィンガープリントの各項目も確認してください。

VMess + WebSocket + TLS

トランスポート
WebSocket
セキュリティ
TLS
暗号化
auto
Alter ID
0
パス
サーバー側で指定

既存のリバースプロキシやWebSocket接続構成に適しています。パス、Host、TLSドメインはサーバー側と一致させる必要があります。

有効なローカル比較テストの方法

REALITYとコアの互換性で選択肢が決まる

REALITYはXrayエコシステムにおけるトランスポート向けのセキュリティ方式です。クライアントでは、VLESS、TCP、XTLS Vision、REALITYの組み合わせが最も一般的です。ノードのパラメータには、アドレス、ポート、UUIDに加えて、公開鍵、Short ID、Server Name、Fingerprint、Flowが含まれる場合があります。どれか1つでも欠落または誤入力があると、接続直後に切断されることがあります。

サブスクリプションがVLESS REALITYノードを提供している場合、デスクトップでは通常Xrayコアを使用するv2rayN、AndroidではXrayコアを採用するv2rayNGを選びます。v2flyNGはv2flyコアを使用するため、コアが明確に対応している標準的なVMess、VLESS、TLSの組み合わせに適しています。REALITY設定を使う場合は、現在のコアがサブスクリプションに含まれるすべての項目に対応しているか、先に確認してください。

Xrayコア

推奨

VLESS、XTLS Vision、REALITYなど一般的な新しい組み合わせに対応し、現在のVMessノードも処理できます。

適した用途:新規設定、VLESS REALITY、デスクトップとAndroidでの主な利用

v2flyコア

現在のバージョンが明確に対応しているVMess、標準VLESS、WebSocket、gRPC、TLSなどの組み合わせに適しています。

適した用途:既存のVMessノード、標準TLS設定、既存サーバーとの互換性重視

v2rayNでコアを切り替える方法とノードの確認

v2rayN 7.xの一般的な画面を例にすると、サブスクリプションのインポート後にノードを手動で作り直す必要は通常ありません。ただし、コアの種類とノードのプロトコルが一致していることを確認してください。コアを変更する前にシステムプロキシを停止し、設定を保存してからクライアントを再起動すると、古いプロセスがローカルポートを占有するのを防げます。

v2rayNでよく使われるローカルSOCKS待受ポートは10808です。HTTPポートは現在の設定画面に表示される値を確認してください。ポートが他のプログラムに使用されていると、リモートノードのパラメータが正しくても、ローカルアプリが接続できない場合があります。切り分けでは、クライアントログの待受失敗、ハンドシェイク失敗、DNSエラーも同時に確認し、UUIDを何度も変更するのは避けましょう。

  1. サブスクリプションを更新

    メイン画面を開き、「サブスクリプショングループ」で対象のグループを選択してから「すべてのサブスクリプションを更新」を実行し、ノードパラメータが古いキャッシュではないことを確認します。

  2. プロトコルを確認

    対象ノードをダブルクリックし、プロトコルがVMessかVLESSかを確認します。アドレス、ポート、ユーザーID、トランスポート、セキュリティ方式も照合してください。

  3. コアを選択

    「設定」→「パラメータ設定」→「コアの種類」を開き、VLESS REALITYノードにはその組み合わせに対応するXrayコアを選択します。

  4. ポートを確認

    パラメータ設定でローカル待受ポートを確認します。SOCKSポート10808を使用する場合は、ブラウザーなどのアプリにも同じポートを入力してください。

  5. 起動テスト

    設定を保存し、ノードを選択してシステムプロキシを起動します。まずログでコアが正常に起動したことを確認してから、実際の接続テストを行ってください。

サブスクリプションのインポート後に不用意に変更しない項目

利用シーンで選ぶほうが新旧だけで判断するより確実

サーバーがVMessだけを提供している場合は、そのままVMessを使用してください。プロトコルを変えるためにノードの種類を手動でVLESSへ変更する必要はありません。2つのプロトコルではサーバー側の設定が異なるため、クライアントのプルダウン項目を変更するだけでは変換できません。既存のVMess WebSocket TLSノードが安定して動作しているなら、サーバー側のパラメータを推測して変更するより、継続利用するほうが適切です。

サーバーを新規構築中で、サブスクリプションが両方のノードを提供し、すべての端末が必要な項目に対応したXrayコアを利用できるなら、VLESS REALITYを優先してテストするとよいでしょう。既存のWebSocketリバースプロキシ経由で接続する必要がある場合は、VMess WebSocket TLSとVLESS WebSocket TLSのいずれも候補になります。最終的にはサーバーの構成によって決まります。

推奨構成:2台で同じサブスクリプションを使用

デスクトップ版(v2rayN)
  • VLESS REALITYにはXrayコアを使用
  • VMessノードは互換性確保のため残す
  • ローカルSOCKSポートを10808に設定
  • サブスクリプション更新後にコアの起動ログを確認
Android版(v2rayNG)
  • 同じサブスクリプションURLをインポート
  • REALITYパラメータがすべて揃っていることを確認
  • 必要に応じてアプリごとのプロキシを有効化
  • ノード切り替え後に接続テストを実行

プロトコルはサーバー設定とサブスクリプションによって決まります。両方の端末で同じサブスクリプションを使うと手入力による差異を減らせますが、クライアントのコアとノードパラメータの互換性は端末ごとに確認してください。

結論

よくある誤解とトラブルシューティングの順序

VMessまたはVLESSノードに接続できないときは、まず「コアが起動していない」「ローカルプロキシが通信を受けていない」「リモート側のハンドシェイクに失敗している」「DNS解決に異常がある」を切り分けます。4種類の問題では対処方法が異なるため、プロトコルを変更するだけではポート競合、システムプロキシの未起動、サブスクリプション項目の不足は解決できません。

まずクライアントログでローカル待受が成功していることを確認し、次にシステムプロキシの状態、続いてリモートアドレスとポート、最後にプロトコル固有の項目を確認することをおすすめします。VMessでは端末のシステム時刻が自動同期されているかも確認してください。VLESS REALITYでは、公開鍵、Short ID、SNI、Fingerprint、Flowを重点的に確認します。

VMessのリンクをそのままVLESSのリンクに変更できますか?

できません。プロトコルはサーバー側の設定で決まり、クライアントとサーバーで認証、トランスポート、セキュリティの各パラメータを一致させる必要があります。リンクの先頭やノードの種類だけを変更すると、ハンドシェイクに失敗します。

VLESSは必ずVMessより速いですか?

必ずしもそうではありません。VLESSはプロトコル処理がより簡素ですが、実際の速度は回線、サーバー負荷、混雑状況、トランスポート層の影響を受けることが多くなります。同じサーバー、同じ時間帯で複数回比較してください。

サブスクリプションのVLESS REALITYノードが起動できないのはなぜですか?

まず、その組み合わせに対応するXrayコアをクライアントが使用しているか確認し、公開鍵、Short ID、SNI、Fingerprint、Flow、ポートが揃っているかを確認します。古いサブスクリプションのキャッシュに新しい項目が含まれていない場合もあるため、先にすべてのサブスクリプションを更新してください。

ルーティングの振り分けはプロトコル選びに影響しますか?

ルーティングルールは対象通信を直接接続、プロキシ、ブロックのどの出力へ送るかを決めるもので、VMessとVLESSを変換するものではありません。ノード自体に接続できない場合は、まずプロトコルとトランスポートのパラメータを解決し、その後で振り分けルールを確認してください。

V2Rayクライアントをダウンロード Windows、macOS、Android、Linux