VMessとVLESSはプロキシプロトコルであり、クライアントの名称ではありません。主な違いはプロトコル層の暗号化や認証方式、組み合わせて使えるセキュリティ機能にあります。ノード名に「高速」と書かれているかどうかは関係ありません。この記事では、一般的なVMess AEADとVLESS encryption=noneの設定を起点に、TLS、REALITY、Vision、必要なコアを比較し、v2rayNでノードの設定項目を確認する方法を紹介します。サブスクリプションを入手済みで設定の互換性を確認したい方や、古いVMessノードからの移行を検討している方に向けた内容です。
VMessとVLESSの比較:プロトコル・トランスポート・セキュリティ層を区別する
ノードには通常、3種類の情報が含まれます。VMessまたはVLESSはプロキシプロトコル、TCPやWebSocketなどはトランスポート方式、TLSまたはREALITYは接続を保護する仕組みです。これらは互いに置き換えられる同種の選択肢ではありません。たとえば「VLESS + WebSocket + TLS」と「VLESS + TCP + REALITY」は、どちらもVLESSを使いますが、同じクライアント設定をそのまま適用できるわけではありません。
| 確認項目 | VMess | VLESS |
|---|---|---|
| 認証情報 | 通常はUUIDを使用。現行の設定ではAEAD認証を使用 | 通常はUUIDを使用。一般的な基本設定ではペイロードを暗号化しない |
| プロトコル層の暗号化 | AES-128-GCM、ChaCha20-Poly1305などに対応。利用できる方式はコアと設定によって異なる | 一般的な設定はencryption=none。接続の保護はTLSまたはREALITYに任せる |
| TLSとの関係 | TLSと併用可能。プロトコル内蔵の暗号化はTLSとは別の仕組み | 一般的な構成ではTLSまたはREALITYで通信経路を保護 |
| alterId | 過去の互換性のための項目。現行のAEAD設定では通常0 | この項目はない |
| VisionとREALITY | VLESSのVision構成をVMessにそのまま適用することはできない | 対応するXrayのバージョンとトランスポートの組み合わせで利用 |
| 選定のポイント | 現在のサーバーとクライアントが安定して互換性を保てるか | サーバー設定、コアの機能、セキュリティ層がすべて一致しているか |
ここでいうVLESSは、サブスクリプションでよく使われるencryption=noneの構成です。比較的新しいXrayでは、拡張された暗号化機能が利用できる場合もあります。そのため、すべてのVLESS設定が「決して暗号化できない」と一律に説明することはできません。異なるencryption値が設定されている場合は、クライアントとサーバー双方のバージョンおよび関連ドキュメントを確認し、自己判断でnoneに変更しないでください。
見分け方:ノード名ではなく設定項目を確認
ノード名は自由に付けられます。まず編集画面でプロトコルを確認し、次にトランスポート方式とTLS/REALITY、最後にFlowを確認しましょう。3層の設定が一致してから速度を比較してください。
暗号化方式とalterId:VMess AEADは外側のTLSとは別
VMessはプロトコル層でペイロードを暗号化できます。一般的なsecurity=autoでは、コアが実装や実行環境に応じて利用可能な暗号方式を選択します。「TLSを自動で有効にする」という意味ではありません。ノードでTLSも有効になっている場合は、VMess自身の処理に加えて外側のTLSも使われます。役割はそれぞれ異なるため、「暗号化」と書かれているだけで証明書の設定が不要だと判断しないでください。
一般的なVLESSはプロトコル自体をシンプルにし、接続の保護を外側の仕組みに任せます。VLESSの設定にencryption=noneとあっても、接続全体が必ず平文になるわけではありません。TLSまたはREALITYが設定されているかも確認してください。反対に、noneでセキュリティ層も設定されていない場合、HTTPSサイトにアクセスできるからといって、プロキシ経路上の情報もすべて同じように保護されるわけではありません。
古い解説にあるalterId=64は、今もそのまま使える?
alterIdはVMessの旧式認証方式で使われていた項目であり、性能のランクでも、値が大きいほど安全になる設定でもありません。現行の構成では、AEADに対応するalterId=0が一般的です。V2Flyは5.0.0以降、旧式の非AEAD認証をサポートしていません。他のコアでは過去の設定との互換性が異なる場合があるため、特定の古いバージョンで接続できたことを今後も使える保証と考えないでください。
- 新しい設定を作成する場合:サーバーから指定された現行の設定値を使い、古い解説を参考に64や32などの値を追加しないでください。
- 古いノードをインポートできない場合:サービス提供元に最新の共有リンクを依頼し、サーバーが旧式認証に依存していないか確認してください。
- サーバーを自分で管理している場合:両端のアップグレードと認証方式の移行を調整してからサブスクリプションを更新してください。クライアント側の数値だけを変更しないでください。
- 認証エラーが出る場合:UUID、端末の日付とタイムゾーン、クライアントとサーバー双方の設定を確認してください。VMessでは時刻の同期も必要なため、暗号方式だけが原因とは限りません。
通信負荷:VLESSなら必ず速いわけではない
一般的な設定では、VLESSはVMessのプロトコル層によるペイロード暗号化を行わないため、CPU処理を一部減らせる可能性があります。ただし、実際の接続ではTLSまたはREALITY、トランスポートの処理、ネットワーク通信も必要です。ハードウェアアクセラレーションに対応した端末では、AES-GCMの処理負荷が非常に小さいこともあります。通常のウェブ閲覧では、プロトコルの違いよりも回線の遅延や混雑、サーバー負荷のほうが大きく影響することが少なくありません。
異なる地域や事業者のノードを比較して、その速度差をすべてVMessとVLESSの違いによるものと判断することはできません。WebSocket、接続の再利用、ルーティングルール、速度測定に使うファイルの配信元も結果に影響します。この記事では再現可能な実測データを示していないため、「何%向上する」といった数値は保証しません。
- 回線条件をそろえる:できるだけ同じサーバーと出口を使い、近い時間帯に測定してください。トランスポートとセキュリティ層も比較できるよう同じ条件にします。
- テスト内容を統一する:まずウェブページの表示と短時間の接続を確認し、次に同じ大きなファイルをダウンロードします。それぞれ3回以上繰り返し、最高値だけでなくばらつきも見てください。
- 端末の負荷を記録する:デスクトップのタスクマネージャーでコアのCPU使用率も確認します。帯域が大きく、CPU使用率が上限に近い場合は、プロトコルの処理負荷が影響している可能性があります。
- まず基準条件に戻す:測定中にDNS、ルーティング、TUN、接続の再利用設定を同時に変更しないでください。変更する項目を一つに絞ってから判断しましょう。
運用の目安:安定しているVMessは名称だけを理由に移行しない
現在のノードで必要な帯域を確保でき、コアとの互換性にも問題がなければ、まずは使える設定を維持しましょう。REALITYやVisionが必要になった場合は、サーバーが明確に対応しているVLESS構成を選び、動作確認済みのノードを1つ残しておくと切り戻しに便利です。
XTLS・Vision・REALITY:組み合わせとコアの対応状況を確認
XTLS、Vision、REALITYは、自由に選んで使える3つの高速化ボタンではありません。一般的なxtls-rprx-visionはVLESSのFlow値です。REALITYは接続を保護する仕組みであり、VMessやVLESSとは別のプロキシプロトコルではありません。実際に利用できる組み合わせは、Xrayのバージョン、トランスポートの種類、サーバー設定によっても異なります。
一般的なVLESS + TCP + REALITY + Visionのノードでは、UUID、アドレス、ポート、serverName、サーバーの公開鍵に関する項目、shortId、Flowを確認します。画面上の公開鍵項目はPublic keyなど別の名称で表示されることがあります。ノード提供元の説明と使用中のコアを基準にしてください。通常のTLSで使う証明書のドメイン名をREALITYのserverNameにそのままコピーしたり、TLSの選択欄をREALITYに変えただけで移行できたと考えたりしないでください。
Xrayコア
推奨この記事で扱うVLESS + REALITY / Visionの構成に使用します。クライアントの画面で必要な項目を保存できることに加え、実際に起動するコアのバージョンがサーバー側の機能に対応している必要があります。アプリに「VLESS」と表示されていても、すべての拡張機能に対応しているとは限りません。
適した用途:サーバーがREALITYまたはxtls-rprx-visionを明確に要求する構成
V2Flyコア
対応バージョンでVMessなどを利用できますが、XrayのREALITY / Vision設定には対応できません。既存ノードを使い続ける場合も、トランスポート方式、認証方式、バージョンを個別に確認し、異なるプロジェクトの機能一覧を混同しないでください。
適した用途:互換性のある設定がすでにあり、サーバーがV2Flyの機能を明確に採用している環境
v2rayNでVMessとVLESSのノードを見分ける方法
まずメイン画面のノード一覧にある「種類」または「プロトコル」列を確認し、次にノードの編集画面で詳細を確認します。v2rayNはデスクトップ版によってメニューの表示名、列名、レイアウトが変更されることがあります。以下では一般的な操作手順を紹介します。画面が異なる場合は項目名ではなく設定の意味を確認し、ノード名だけで種類を判断しないでください。
- 共有リンクをインポート:共有リンク全体をコピーし、メイン画面の「サーバー」→「クリップボードからURLを一括インポート」を使います。バージョンによっては、クリップボードからインポートする別のメニューが用意されています。サブスクリプションURLを単一ノードのJSONとして貼り付けないでください。
- 編集画面を開く:ノードの行をダブルクリックするか、右クリックメニューから編集を選びます。VMessには通常、暗号方式やalterIdの項目があり、VLESSにはencryptionやFlowなどの項目があります。
- セキュリティ層を確認:トランスポート方式、TLS/REALITY、SNI/serverNameをそれぞれ確認します。ポートが443でもTLSが有効とは限りません。必ずセキュリティ層の項目を見てください。
- 使用中のコアを確認:現在のバージョンのコア選択画面で使用するコアを確認し、起動ログで実際のコア名も照合します。REALITY / Visionが必要な場合は、V2Flyコアを誤って選ばないでください。
- 通信がアプリに届いているか確認:ノードを選択したら、トレイメニューの「システムプロキシ」→「システムプロキシを自動設定」を選び、システムプロキシに従うアプリを接続します。システムプロキシを使わないアプリは個別設定するか、ガイドに沿ってTUNを使用してください。
共有リンクの先頭部分から、ノードの種類をおおまかに見分けることもできます。vmess://はVMessを示し、一般的にはBase64でエンコードされたノードJSONが含まれます。vless://はVLESSを示し、トランスポートやセキュリティ層の設定をURLのクエリパラメーターに含む形式が一般的です。Base64はエンコード方式であり、暗号化ではありません。リンク内のUUIDやサーバー情報は接続用の認証情報として大切に管理してください。
両端の確認方法:同じノードで実際の対応状況を個別に確認
デスクトップ:v2rayN
- まずノードのプロトコルを確認し、次に実際に起動しているコアを確認します。
- トランスポート、セキュリティ層、Flowを一つずつ確認します。
- ノードへの接続、システムプロキシ、TUNをそれぞれ区別します。
Android:v2rayNG / v2flyNG
- v2rayNGはXrayを使用します。対応状況は使用するバージョンによって異なります。
- v2flyNGはV2Flyを使用するため、REALITY / Visionの設定をそのまま使うことはできません。
- サブスクリプションをインポートできても、一覧内のすべてのノードが動作するとは限りません。
共有サブスクリプションで共有されるのはノードの提供元であり、コアの対応機能が自動的に統一されるわけではありません。両方の端末で使用するノードを個別に確認してください。
インポート・接続時のよくある問題:設定項目から原因を特定
トラブル対処では、まず3つの段階を切り分けます。リンクを正しく解析できたか、コアを起動できたか、サーバーまで接続できたかを確認してください。インポートに失敗する場合は形式と項目の対応状況、起動に失敗する場合は設定とコアを確認します。接続がタイムアウトする場合は、アドレス、ポート、ネットワークを調べます。どの段階でもUUIDや暗号方式を何度も変更するのは避けてください。
VMessをVLESSに変更したら、すぐ接続できなくなったのはなぜ?
VMessとVLESSではハンドシェイクの形式が異なるため、サーバー側も対応するプロトコルに設定されている必要があります。元のノード種別に戻し、提供元からVLESS専用の共有リンクを入手してください。アドレス、ポート、UUIDが同じでも、サーバーが両方のプロトコルを受け付けるとは限りません。
VLESSにnoneと表示される。暗号化を有効にし忘れた?
表示されている項目がencryptionなのか、セキュリティ層なのかをまず確認してください。一般的なencryption=noneはTLSまたはREALITYと併用できます。セキュリティ層も設定されていない場合は、自己判断で推測せず、サーバーの構成と利用するネットワークを確認してください。
サブスクリプションにVLESSがあるのに、クライアントでFlowに対応していないと表示される
ノードの編集画面でFlowを確認し、実行ログでコア名を調べてください。サーバーの指定に合うクライアントとコアに更新します。接続を確保するためにFlowを削除したり、Visionノードをそのままv2flyNGに設定したりしないでください。
TLSで証明書エラーが発生した。検証をスキップしてもよい?
まずシステム時刻を合わせ、SNI/serverNameと証明書のドメイン名を確認し、証明書の有効期限とサーバー側の証明書チェーンを調べてください。allowInsecureを恒久的な対処として使わないでください。証明書の検証が弱まり、UUID、Flow、ポートの誤りも解決できません。
遅延テストは成功するのに、ブラウザーでページを開けない
ノードが選択中か確認し、システムプロキシまたはTUNがブラウザーの通信を処理しているか調べてください。ローカルプロキシを手動設定する場合は、クライアントが実際に待ち受けているポートを確認します。たとえば、この端末の設定が10808の場合に限り10808を入力してください。サーバー側の443をローカルプロキシのポートに指定しないでください。
選び方をまとめると、現在のVMessが安定しているなら互換性を優先して維持し、サーバーでREALITY / Visionが必要な場合は、対応する機能を備えたVLESSとXrayの組み合わせを選びます。プロトコル名だけで分かるのは情報の一部です。実際に利用できるかどうかは設定全体とクライアント・サーバー双方の実装で決まります。ルーティング、DNS、TUNの関係を詳しく知りたい場合は用語ガイドを、初期設定はクイックスタートを参照してください。