2026-08-06 · プロトコル解説 · 約8分

VMessとVLESSの違い:v2rayNGのプロトコル設定ガイド

暗号化、alterId、トランスポート、REALITYへの対応を比較。VMessとVLESSの違いや、ノードのインポート時に確認すべき設定項目を解説します。

この記事の要点

v2rayNGのノード編集画面では、まずプロトコルを確認し、次にトランスポートとセキュリティ設定を見ます。VMessには独自のデータ暗号化機能があり、一般的なVLESS設定ではTLSまたはREALITYで通信を保護します。サブスクリプションを入手済みで、設定項目を確認したいAndroidユーザー向けに、alterId、SNI、トランスポートのパス、flowの違いを解説。インポート設定の誤りと回線の問題を切り分けるのに役立ちます。

ノード編集画面でプロトコル・トランスポート・セキュリティ層を確認

v2rayNGのメイン画面でノードを探し、その項目の編集アイコンをタップして、上部のプロトコルと下部の接続パラメーターを確認します。バージョンによって項目の並び順は異なる場合がありますが、確認する順序は同じです。サーバーアドレスとポート、ユーザーID、トランスポート、トランスポート層のセキュリティを見ます。変更する根拠がない場合は、そのまま戻り、試しに入力した値を保存しないでください。

VMessとVLESSはプロキシプロトコル、TCP・WebSocket・gRPCはトランスポート、TLS・REALITYは接続のセキュリティに関する設定です。それぞれ異なる階層のため、互いに置き換えるものではありません。ノードのプロトコルがVLESSだからといって、トランスポートの種類やREALITYの使用有無までは判断できません。

確認項目VMessVLESS
ユーザー認証通常はUUIDを使用通常はUUIDを使用
プロトコルのデータ暗号化独自のデータ暗号化機能に対応一般的な設定ではencryptionはnone。外側のセキュリティ層で保護
追加ID最新のAEAD設定では0この項目はなし
一般的な接続構成VMess + WebSocket + TLSVLESS + TCP + REALITY、またはWebSocket + TLS
インポート時の確認ポイント追加ID、暗号化設定、トランスポートのパラメーターセキュリティ層、flow、関連するセキュリティ設定

サブスクリプションは設定を配布するためのもので、4つ目のプロトコルではありません。同じサブスクリプションにVMessとVLESSの両方のノードを含められます。ルーティングは接続ごとの出口を決める設定で、VMessを自動的にVLESSへ変換するものではありません。アプリごとのプロキシ設定も、クライアントに流す通信の範囲を変えるだけです。

暗号化方式が異なっても、VLESSのセキュリティ設定を省略してよいわけではありません

VMessの編集画面で「暗号化方式」を見ると、通常はautoなどの選択肢が表示されます。VMessのプロトコル自体の仕組みと、外側のTLSは別の設定です。プロトコルに暗号化機能があっても、サーバー側でWebSocketとTLSの併用が必要な場合があります。TLS設定を削除しても接続が「より直接的」になるわけではなく、サーバーがリクエストを受け付けなくなる可能性があります。

一般的なVLESS設定のencryption=noneは、プロトコル自体ではこの層のデータ暗号化を行わないという意味で、接続全体が保護されないという意味ではありません。続けて「トランスポート層のセキュリティ」が、サーバー指定のTLSまたはREALITYになっているか確認してください。noneだけを見て「証明書の検証をスキップ」を有効にしても、階層の問題は解決せず、TLSの認証機能を弱めることになります。

必要なパラメーターがそろったVLESS設定をサーバーから受け取っている場合

おすすめ

新しい設定を追加でき、必要なパラメーターがそろっている場合は、サーバーから提供されたTLSまたはREALITYの構成をそのままインポートします。セキュリティ層、SNI、flowを維持し、アドレスとUUIDだけをコピーしないでください。

おすすめのケース:新しい接続を追加し、サブスクリプションが現在のv2rayNGコアに明確に対応している場合

安定して動作しているVMess AEAD

現在のプロトコルとトランスポート設定を維持してください。接続に問題がなければ、名称が新しいからといって手動でVLESSに変更する必要はありません。プロトコルの変更には、サーバー側の対応も必要です。

おすすめのケース:現在のサブスクリプションがVMess中心で、普段の接続が安定している場合

判断のポイント:プロトコル名だけでなく、必要な設定がそろった構成を選ぶ

VLESSノードにREALITYの公開鍵など必要な情報がない場合は、サブスクリプションを更新するか、提供元に完全な設定を問い合わせてください。別のノードのパラメーターで補わないでください。すでに使えるVMessノードは、比較用として引き続き利用できます。

追加IDの設定方法:最新のVMessでは通常0

VMessノードの編集画面を開き、「追加ID」またはalterIdを確認します。最新のVMess AEAD設定では0を使用します。古い解説でよく見かける64は、過去の設定に関する値です。互換性や速度を高める汎用値ではありません。また、旧式の認証方式に対する現在のコアの対応状況は、バージョンによって異なる場合があります。

0
最新のVMess AEADで使う追加ID
36
ハイフン付きUUIDの標準文字数
443
TLSサーバーでよく使われるポート番号。必須ではありません

この3つの数値は、それぞれ認証方式、識別子の形式、ネットワークの入口に対応し、互いから推測できるものではありません。UUIDの長さが正しくてもアカウントが有効とは限らず、ポートが443でもサーバーがTLSを使っているとは限りません。ポート番号はサブスクリプションで指定された値を使い、TLSと表示されていても他のポートを443に変更しないでください。

WebSocket・TLS・REALITY:サーバー側の構成と項目ごとに照合

ノード編集画面で「トランスポート」と「トランスポート層のセキュリティ」を開いて確認します。WebSocketノードではパスとHost、TLSノードではサーバー名(SNI)を確認してください。サーバーアドレスは接続先の入口を示し、SNIはハンドシェイク時に接続先のサーバー名を通知します。WebSocketのHostはHTTPリクエストのフィールドです。3つの値は同じ場合も、サーバーの構成によって異なる場合もあります。

よくある2種類の構成と確認方法

VMess + WebSocket + TLS
  • プロトコルがVMessで、追加IDがサーバー側の設定と一致していることを確認します。
  • トランスポートはWebSocketを選び、パスの先頭のスラッシュを残します。
  • HostとSNIはそれぞれ指定どおりに入力します。名前が似ているからといって入れ替えないでください。
  • TLS証明書の検証は有効のままにし、ドメイン名が証明書の要件を満たすようにします。
VLESS + TCP + REALITY
  • セキュリティ層が通常のTLSではなくREALITYであることを確認します。
  • サーバー名、公開鍵、shortId、フィンガープリントの要件を1つずつ確認します。
  • サーバー側でVisionが必要な場合は、flowにx­tls-rprx-visionの正しい設定値を指定します。
  • 別のWebSocketノードのパスやHostを追加しないでください。

ここで紹介したのはよくある2種類の構成で、利用できる構成の一覧ではありません。実際の設定はサーバー側の構成とコアの対応状況に従ってください。

REALITYは、通常のTLS設定のスイッチを切り替えるだけで使えるものではありません。クライアントが持つ公開鍵はサーバーの秘密鍵と対になる必要があります。shortIdはサーバー側で許可された値でなければなりません。サーバー名もサーバー側の要件に合わせる必要があります。サーバーの設計によってshortIdを空にできるため、「空欄」であることだけでは設定ミスと判断できません。

Visionを使うVLESSノードでは、xtls-rprx-visionがよく使われるflowの値です。これは暗号化アルゴリズム名ではなく、任意のWebSocket設定にコピーして使うものでもありません。VMessにこのflowを入力しても、VLESS + REALITYにはなりません。認識されない項目がある場合は、まずクライアントとコアの対応状況を確認し、次にサブスクリプションがそのクライアント向けに生成されたものか確認してください。

インポート後に接続できないときは、失敗した段階を確認してからプロトコルを確認

v2rayNGの右上にある「+」→「クリップボードからインポート」で共有リンクをインポートできます。サブスクリプションの場合は、サイドバーの「サブスクリプショングループ設定」を開き、新しいグループを追加してURLを保存します。その後、メイン画面のメニューからサブスクリプションを更新してください。バージョンによって「サブスクリプションを更新」や、更新方法を選ぶメニュー項目として表示される場合があります。リンクを貼り付けられたことは、クライアントが解析できたことを示すだけで、アカウント、サーバー、ネットワークが利用可能であることを意味しません。

  1. インポート内容を確認:新しい項目の編集画面を開き、プロトコル、ポート、UUID、トランスポート、セキュリティ層を照合してください。ノード名だけを見ないでください。名前に「VLESS」と書かれていても、実際のプロトコル設定の代わりにはなりません。
  2. 起動後にログを確認:サイドバーから「ログ」を開きます。コアの起動前に項目や設定のエラーが表示される場合は、まず設定の互換性を確認してください。この段階で遅延を何度も測定してもあまり意味はありません。
  3. 接続エラーとハンドシェイクエラーを切り分ける:接続タイムアウトの場合は、サーバーへの到達性とポートを確認します。証明書やハンドシェイクのエラーは、時刻、SNI、証明書、セキュリティ層の設定を確認してください。エラーメッセージは手がかりの1つです。全体の状況とあわせて判断してください。
  4. 最後に通信の対象範囲を確認:ノードには接続できるのに特定のアプリが通信できない場合は、VPNの権限、アプリごとのプロキシ設定、ルーティングルールを確認してください。アプリが対象から除外されている場合、VMessとVLESSを切り替えても自動的にプロキシ経由にはなりません。

VMessノードをそのままVLESSに変更できますか?

クライアント側でプロトコル名を変更するだけでは使えません。まずサーバー側でVLESSの接続先と必要な設定一式を用意し、新しいノードとしてインポートしてください。元のノードも残しておけば、切り戻しや比較に便利です。

VLESSでnoneと表示されます。暗号化を有効にし忘れていますか?

まずnoneがどの項目に表示されているか確認してください。プロトコルのencryptionであれば、TLSまたはREALITYの設定を続けて確認します。トランスポート層のセキュリティも空欄なら、推測で設定せず、提供元に構成を確認してください。

REALITYのインポート後にハンドシェイクが失敗し続けます。証明書の検証を無効にすべきですか?

証明書の検証をスキップしても解決策にはなりません。まずサブスクリプションに記載されたサーバー名、公開鍵、shortId、フィンガープリント、flowを照合し、コアの対応状況とサーバーの状態も確認してください。

同じサブスクリプションがデスクトップで使えるのに、Androidでは使えないのはなぜですか?

まずv2rayNとv2rayNGで、同じ名前のノードの実際の設定と更新日時を確認します。次にAndroidのVPN権限とアプリごとのルールを確認してください。同じ名前の項目でも、同じタイミングでサブスクリプションを更新したとは限りません。

プロトコルの選び方:安定しているノードを維持し、同じ条件で比較する

「軽量」という理由だけでVLESSのほうが速いとは判断できません。実際の速度は回線の混雑、サーバー負荷、トランスポート、接続先のサイトにも左右されます。地域や接続先が異なる2つのノードを比べても、プロトコルの性能差を1回の速度測定で証明することはできません。

実際の設定では、「プロトコル・トランスポート・セキュリティ層」をひとまとまりとして扱います。まずサブスクリプションを更新し、設定項目を照合してから、ルーティングとアプリごとのプロキシ設定を調整してください。これなら使える接続を維持しながら、サーバー設定の誤りをプロトコル自体の信頼性の問題と取り違えずに済みます。

クライアントをダウンロードv2rayNG / v2rayN