既存のVMessノードはそのまま使えます。新しくノードを作成し、クライアントがXrayコアに対応している場合は、VLESSを優先的に検討しましょう。サブスクリプションのノード選び、サーバーの手動追加、プロトコル互換性の確認を行う方に適した内容です。プロトコル、トランスポート層、TLS、REALITYの関係を整理し、端末とサーバーの条件に合わせて選べるようになります。
VMessとVLESSの違いとは
VMessとVLESSはいずれもクライアントとサーバー間の認証とデータのカプセル化を担いますが、設計上の重点が異なります。VMessはプロトコル層に認証と暗号化の仕組みを備えており、現在の一般的な設定ではAEADモードを使用し、alterIdは0に設定します。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ドメインはサーバー側と一致させる必要があります。
有効なローカル比較テストの方法
- 同じサーバー、同じ出口回線、同じ時間帯に固定し、プロトコル構成だけを入れ替えます。
- 各構成で30秒間の連続通信を5回行い、中央値を記録します。1回だけのピーク値で結論を出さないでください。
- テスト前にシステムのダウンロード、クラウド同期、動画再生を停止し、他の通信による帯域占有を避けます。
- 接続成功の可否、最初のページが正常に読み込まれるか、継続通信が途切れないか、クライアントプロセスのCPU使用率をそれぞれ記録します。
- たとえばVMessがWebSocket、VLESSがTCPのように、2つの構成でトランスポート層が異なる場合、結果は構成全体を示すものであり、プロトコルだけが原因とは判断できません。
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を何度も変更するのは避けましょう。
-
サブスクリプションを更新
メイン画面を開き、「サブスクリプショングループ」で対象のグループを選択してから「すべてのサブスクリプションを更新」を実行し、ノードパラメータが古いキャッシュではないことを確認します。
-
プロトコルを確認
対象ノードをダブルクリックし、プロトコルがVMessかVLESSかを確認します。アドレス、ポート、ユーザーID、トランスポート、セキュリティ方式も照合してください。
-
コアを選択
「設定」→「パラメータ設定」→「コアの種類」を開き、VLESS REALITYノードにはその組み合わせに対応するXrayコアを選択します。
-
ポートを確認
パラメータ設定でローカル待受ポートを確認します。SOCKSポート
10808を使用する場合は、ブラウザーなどのアプリにも同じポートを入力してください。 -
起動テスト
設定を保存し、ノードを選択してシステムプロキシを起動します。まずログでコアが正常に起動したことを確認してから、実際の接続テストを行ってください。
サブスクリプションのインポート後に不用意に変更しない項目
- VMessノードのUUID、トランスポートパス、Host、TLSドメイン、ポート。
- VLESS REALITYノードの公開鍵、Short ID、SNI、Fingerprint、Flow。
- サブスクリプショングループ名は変更できますが、自動更新を行うとノードパラメータが再書き込みされ、手動で変更したリモート側の項目が上書きされる場合があります。
- ルーティングモードは通信を直接接続、プロキシ、ブロックのどれに振り分けるかを決めるだけで、VMessノードをVLESSノードに変換するものではありません。
利用シーンで選ぶほうが新旧だけで判断するより確実
サーバーが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ノード: パラメータが正しく、接続も安定しているなら、そのまま使い続けて問題ありません。古い名称だからという理由だけで変更する必要はありません。
- 新規ノード: クライアントとサーバーの両方がXrayコアを使用している場合は、VLESS、XTLS Vision、REALITYの組み合わせを優先的に検討します。
- WebSocket接続が必要: サーバーの既存構成に合わせてVMessまたはVLESSを選び、パス、Host、TLSドメインを一致させます。
- Androidでv2flyNGを使用: 現在のv2flyコアが明確に対応しているプロトコルとトランスポートの組み合わせを選び、インポート後にログで項目の互換性を確認します。
- サブスクリプションが両方のプロトコルを提供: 同じ地域、同じサーバー回線で5回比較テストを行い、より安定した構成を残します。
よくある誤解とトラブルシューティングの順序
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を変換するものではありません。ノード自体に接続できない場合は、まずプロトコルとトランスポートのパラメータを解決し、その後で振り分けルールを確認してください。