VMessとVLESSの違いとは?ノード選びの前に知っておきたいプロトコルの基礎

VMessとVLESSの暗号化、時刻認証、トランスポートの違いをわかりやすく解説。クライアントで共有リンクの種類を見分ける方法も紹介します。

この記事の要点

VMessとVLESSはどちらもプロキシプロトコルであり、クライアント名や回線品質のランクではありません。ノードを初めて選ぶときは、まずサブスクリプションの設定一式が現在のコアで認識されることを確認し、暗号化方式、セキュリティレイヤー、トランスポートの組み合わせを見ます。サブスクリプションや共有リンクを入手済みの方向けに、プロトコルの見分け方、時刻ずれの影響、v2rayNで接続設定を確認する手順を解説します。

1分でわかる違い:プロトコル・トランスポート・セキュリティレイヤー

ノード設定には通常、3つの層があります。プロキシプロトコルは認証とリクエスト形式、トランスポートはデータの伝送方法、セキュリティレイヤーは接続の保護を担います。VMessとVLESSはプロトコル、TCPとWebSocketはトランスポート、TLSとREALITYは設定で別途確認するセキュリティ機構です。これらをひとまとめにして「プロトコルの順位」と考えると、設定を誤る原因になります。

確認項目 VMess VLESS
識別と認証 通常はUUIDを使用し、現行の設定ではVMess AEADで認証します。 通常はUUIDを使用し、VMessとは異なるプロトコルと認証形式を採用します。
データ暗号化 AES-128-GCMやChaCha20-Poly1305など、プロトコルにデータ暗号化方式があります。値はコアの対応範囲に合わせてください。 一般的な設定ではencryptionはnoneで、接続の保護には通常TLSまたはREALITYを使用します。拡張機能の対応状況はコアごとに確認してください。
時刻に関する要件 認証に時刻情報を使用するため、クライアントとサーバーの時刻を同期する必要があります。 VMessと同様の認証時刻要件はありませんが、TLS証明書の有効期間などはシステム時刻の影響を受けます。
よくある組み合わせ VMess + TCP、またはVMess + WebSocket + TLS。 VLESS + WebSocket + TLS、またはVLESS + TCP + REALITYなど。

v2rayNは設定を管理し、コアを呼び出してプロキシの入口を提供するデスクトップクライアントです。Project V、V2Fly、Xrayは関連するプロトコルやコアのエコシステムであり、画面上のアプリケーションと同一ではありません。同じv2rayNの画面でも、使用するコアやバージョンによって対応するトランスポートや設定項目が異なる場合があります。

組み合わせ全体を確認してから、プロトコルの変更を検討する

ノード編集画面で「プロトコル、トランスポート、セキュリティレイヤー、flow」の4項目を記録してください。VLESSまたはVMessという名前だけでは接続できるか判断できません。サーバー側に別の設定が用意されていない限り、ローカルのプロトコル選択を変更しても変換はできません。

暗号化の違い:VLESSのnoneは、通信全体が平文という意味ではない

VMessの暗号化設定とTLSは別の設定です。VMessでデータ暗号化を有効にすると、プロキシプロトコル自体が対象データを保護します。さらにTLSを組み合わせると、TLS接続も確立されます。TLSが設定されているからといって、VMessの暗号化項目を安易に別の値へ変更しないでください。サブスクリプションで指定され、コアが対応している設定を維持しましょう。

一般的なVLESS設定のencryption=noneは、VLESSプロトコル層でデータ暗号化を有効にしていないことを示します。TLSまたはREALITYを併用していれば、クライアントからプロキシサーバーまでの通信はそれぞれのセキュリティ機構で保護されます。一方、セキュリティレイヤーなしのTCPを使う場合は、「VLESS」という名前だけで通信が保護されているとは判断できません。

時刻認証とポート:よくある3つの誤解を解消

VMessの認証では時刻情報を使用します。従来の資料では、時刻差の許容範囲を約90秒として同期要件を説明することがありますが、この数値を長時間のずれが許容される目安と考えてはいけません。PCやサーバーがスリープから復帰した後、手動で時刻を変更した後、時刻同期に失敗した場合などに、使えていたノードで突然認証に失敗することがあります。

約90秒
VMessでよく示される認証時の時刻差。時計は同期してください
0
現行のVMess AEAD設定でよく使われるalterIdの値
443
TLSでよく使われるポート。プロトコルの判別には使えません

alterId=0は「暗号化を無効にする」という意味ではありません。古い解説にある0以外の追加IDを、現行のVMess AEAD設定にそのまま適用しないでください。新しいコアで旧形式の設定が使えるかどうかも異なります。古い共有リンクを受け取った場合は、推測で追加IDを入力せず、提供元に再エクスポートを依頼しましょう。

  1. Windowsで「設定」→「時刻と言語」→「日付と時刻」を開き、自動時刻設定を有効にして同期してください。項目名はWindowsのバージョンによって多少異なる場合があります。
  2. 日付、年、現在時刻が正しいことを確認してください。タイムゾーンを切り替えても、システムの絶対時刻が正しく管理されていれば通常は変わりません。ノードに合わせてサーバー側のタイムゾーンに変更する必要はありません。
  3. サーバーを管理できる場合は、サーバー側の時刻同期も確認してください。PCの時計だけを直しても、サーバー側の時刻ずれは解消しません。
  4. それでも失敗する場合は、クライアントログに記録された具体的なエラーを確認してください。証明書の期限切れ、接続タイムアウト、認証失敗はそれぞれ異なる段階で発生する問題です。すべてを時刻の問題として扱わないでください。

VLESSはVMessと同じ時刻認証方式を使いませんが、システムの日付が間違っていてもよいわけではありません。TLS証明書には有効期間があり、日付が正しくないと証明書検証に失敗します。REALITYの設定にも時間制限が関係する場合があります。どちらのノードをトラブルシューティングする場合も、まず時刻が正しいことを確認してください。

共有リンクの見分け方:まず接頭辞、次に設定項目

単一ノードの共有リンクは、接頭辞を見れば簡単に判別できます。vmess://はVMess、vless://はVLESSです。ノード名に「高速」「専用回線」などの独自表記があっても、プロトコルの種類は変わりません。サブスクリプションURLは多くの場合https://で始まり、設定一式を取得するためのものです。URLだけから、含まれるノードのプロトコルを判断することはできません。

2種類の共有リンクで確認するポイント

VMessの共有リンク
  • 一般的な形式は、vmess://の後にBase64でエンコードされたJSONデータが続きます。
  • 主な項目はadd、port、id、aid、net、tlsです。
  • クライアントにインポートした後、アドレス、ポート、UUID、暗号化、トランスポートを確認してください。ノード名から推測しないでください。
  • Base64はエンコード方式であり、情報を秘匿する仕組みではありません。デコード後の内容には接続情報が含まれます。
VLESSの共有リンク
  • 一般的な形式は、vless://の後にユーザー識別子、サーバーアドレス、クエリパラメーターが続きます。
  • typeはトランスポートの種類、securityはセキュリティレイヤーを示すことが一般的です。
  • TLSではsni、WebSocketではhostとpathを確認する必要があります。
  • REALITYではpbk、sid、fpなどがよく使われます。項目名や解析への対応状況はクライアントによって異なります。

共有リンクの形式は、過去のすべての実装で統一されているわけではありません。クライアントのインポート機能を使い、編集画面で読み込み結果を確認してください。リンク全体を公開ページに掲載しないでください。

v2rayNデスクトップ版では、通常「サーバー」→「クリップボードから一括URLインポート」から操作します。ノード一覧から編集画面を開き、まずプロトコルの種類、次にトランスポートとセキュリティの項目を確認してください。メニュー名はバージョンによって多少異なるため、「クリップボードからインポート」に相当する項目を選びます。インポートに成功しても、UUID、ポート、サーバー側のパラメーターが正しいとは限りません。

サブスクリプション更新後に同じ名前のノードが複数表示された場合は、名前だけで判断せず、種類の列と編集画面をそれぞれ確認してください。「VLESSに変更する」ために共有リンクの接頭辞だけを書き換えるのは避けましょう。VMessのエンコードデータとVLESSのパラメーター構造は異なり、サーバー側でも対応するインバウンド設定が必要です。

ノードの選び方:プロトコル名で速度を比べず、設定の互換性を優先

VMessとVLESSではオーバーヘッドや実装に違いがありますが、Webページの表示速度には回線の混雑、往復遅延、パケットロス、サーバー負荷、トランスポートのカプセル化も影響します。異なるサーバー同士の速度測定だけでは、特定のプロトコルが速いとは証明できません。比較する場合は、デバイス、ネットワーク、接続先サイト、測定時間帯を揃え、できる限り同じサーバー上の2種類の設定を使ってください。

提供元が明示している設定一式

おすすめ

サブスクリプションで指定されたプロトコル、トランスポート、セキュリティレイヤー、flowを維持し、使用中のコアが対応していることを確認してからテストしてください。VMessでもVLESSでも、まず接続できること、検証できること、継続して管理できることを基準に選びましょう。

おすすめのユーザー:サブスクリプションを初めてインポートする方、日常利用の方、サーバーを管理しない方。

すでに使えるVMess設定がある

対応している認証方式を使い、時刻同期が正常で、暗号化とTLSのパラメーターが正しいことを確認してください。プロトコル名が古くからあるという理由だけで、問題なく使えているノードを削除する必要はありません。

おすすめのケース:現在のサービスがVMessのみを提供している、または既存の接続設定を維持する必要がある場合。

必要なパラメーターが揃ったVLESS設定

サーバーからTLSやREALITYなどの設定一式が提供されている場合は、コアの対応状況とすべての項目を確認してから使ってください。別のノードの公鍵、サーバー名、flowを現在の設定に流用しないでください。

おすすめのケース:提供元が対応する構成を導入し、サブスクリプションまたは共有リンクを一式提供している場合。

デスクトップ版v2rayNでは複数のコア設定を管理できますが、実際の対応範囲は選択したコアによって異なります。Android版のv2rayNGはXrayコア、v2flyNGはV2Flyコアを使用しており、同じ拡張パラメーターを受け付けるとは限りません。たとえば、両方にVLESSと表示されていても、XrayのREALITYとVisionの組み合わせがそのままV2Flyコアで動作するとは限りません。

クライアントを変更する前に、サーバー側の構成が対応しているか確認

ノードの設定一式を記録し、コアの対応機能と照合してください。REALITYへの対応不足が原因なら、システムプロキシを変更してもプロトコルの機能は補えません。ノードが使えるのにブラウザーがプロキシを経由しない場合は、UUIDを変更し続けるのではなく、アプリの通信がプロキシに入る経路を確認してください。

よくある質問:インポート、ハンドシェイク、ブラウザー接続を分けて確認

「設定を解析できるか → サーバーに接続できるか → ハンドシェイクを完了できるか → アプリの通信がプロキシに入るか」の順に確認してください。一度に変更する項目は1つにし、比較できるよう元のサブスクリプション設定を残しておきましょう。

昨日まで使えたVMessノードで、今日は認証に失敗するのはなぜですか?

まずPCの時刻を同期し、サブスクリプションが更新されたか、UUIDが変わっていないか確認してください。ログに認証エラーが明記されている場合は、提供元にサーバーの時刻とユーザーの状態を確認してもらいましょう。接続タイムアウトの場合は、alterIdを変更する前にアドレス、ポート、ネットワーク到達性を確認してください。

VLESSの設定がnoneになっています。AESに変更する必要はありますか?

VMessの暗号化オプションをVLESSに適用しないでください。ノード編集画面を開き、TLSまたはREALITYがサブスクリプションの設定と一致しているか確認します。セキュリティレイヤーが空欄なら、提供元に設定一式を確認してください。未対応のencryption値を独自に入力すると、解析やハンドシェイクに失敗することがあります。

どちらもポート443なのに、接続できるノードとできないノードがあるのはなぜですか?

443はサーバーの待ち受けポートにすぎません。プロトコル、UUID、トランスポート、セキュリティレイヤー、サーバー名を照合してください。WebSocketではパスとHost、REALITYでは公鍵、shortIdなどのパラメーターも確認します。同じポートを使っていても、ノードの設定が同じとは限りません。

インポートには成功しましたがTLSハンドシェイクに失敗します。証明書検証を無効にすべきですか?

まずシステムの日付、サーバー名、証明書の有効期間を確認し、接続先アドレスとサーバー側の設定も照合してください。証明書検証は有効のままにします。提供元の証明書が期限切れなら、提供元に更新してもらいましょう。検証を無効にすると重要な本人確認を省略することになり、日常的な解決方法として適切ではありません。

ノードテストは成功するのにブラウザーで開けません。VLESSに変更すべきですか?

まずv2rayNのメイン画面にある「システムプロキシ」から「システムプロキシを自動設定」を選びます。次に、ブラウザー独自のプロキシ設定や拡張機能が設定を上書きしていないか確認してください。必要に応じてルーティングルールも確認します。システムプロキシとTUNは通信を取り込む方式、VMessとVLESSはノードのプロトコルです。プロトコルを切り替えてもアプリの通信が自動的にプロキシを経由するわけではありません。

最後に、クライアントとコアのバージョン、ノードのプロトコルとトランスポート、エラー発生時刻、ログに記録されたエラーの種類を簡潔に記録してください。提供元に報告する際は、UUID、サブスクリプションURL、共有リンク全体を伏せましょう。設定の互換性とネットワークのどちらに問題があるか特定しやすくなり、同じ設定を何度も変更する手間も減らせます。

v2rayN をダウンロード