VMessとVLESSは別々のプロトコルであり、同じノードの速度設定を切り替えるものではありません。どちらもユーザー識別にUUIDを使うことが一般的ですが、暗号化の仕組みとサーバー設定は異なります。サービス提供元の接続情報を持ち、ShadowrocketのAdd Serverで手動入力する、またはインポート内容を確認する方向けに、プロトコル・トランスポート・TLSの違いを整理します。各項目を確認したうえで条件をそろえてテストし、設定ミスをプロトコルの性能差と取り違えないようにしましょう。
1. VMessとVLESSの主な違い
まず、プロトコルの種類はサーバー側の設定と一致させる必要があります。VMessのサーバーに接続する際、クライアントのTypeをVLESSに変更しても接続できません。逆の場合も同様です。アドレス、ポート、UUIDがすべて同じでも、プロトコルのハンドシェイク形式が異なれば接続に失敗します。既存のサブスクリプションはサービス提供元から取得し、手動入力する場合も同じ接続情報一式を参照してください。
| 確認項目 | VMess | VLESS |
|---|---|---|
| ユーザー識別 | 通常はUUIDを使用し、サーバー側のユーザー設定と対応します | 通常はUUIDを使用し、サーバー側のユーザー設定と対応します |
| プロトコル自体の暗号化 | プロトコル層に認証とデータ暗号化の仕組みがあり、方式は選択した暗号化設定によって異なります | 基本プロトコルにデータ暗号化は含まれず、外側のセキュアな通信方式も含めて安全性を判断します |
| トランスポートの組み合わせ | サーバー設定に応じてTCPやWebSocketなどを使用します | サーバー設定に応じてTCPやWebSocketなどを使用します |
| TLS | プロトコル内の暗号化設定とは別の設定です | 外側の通信を保護するために使われることが多く、UUIDを使用しているからといって省略できるものではありません |
| プロトコルの変更 | 対応するサーバー設定が必要です。クライアントのTypeだけを変更しても接続できません | |
「VLESSは軽量」という説明は、プロトコル設計上の選択を表すもので、あらゆるネットワークで速いという意味ではありません。実際の通信速度や使用感は、サーバーの負荷、回線の混雑状況、トランスポート方式、ローカルネットワークにも左右されます。接続先の異なる2つのノードを比較しても、速度テストだけでVMessとVLESSの一般的な優劣は判断できません。
2. UUID・暗号化方式・TLSの役割
UUIDはユーザーを識別するためのもので、サーバーアドレスやTLS証明書ではありません。一般に、ハイフンで区切られた16進数の文字列です。コピーする際は、空白や改行を混ぜずにすべての文字を正確に入力してください。同じUUIDを異なるプロトコルで使用できるかどうかは、サーバー側に該当ユーザーが設定されているかによります。文字列の形式だけでは判断できません。
VMessの暗号化方式とTLSの有効・無効は、別々の層に属する設定です。VMessでは、プロトコル内でAES-128-GCMやChaCha20-Poly1305などの方式を使用できます。実際の設定は、サービス提供元の接続情報とアプリに表示される選択肢を照らし合わせてください。TLSが有効だからといって、VMessの暗号化設定を自由に変更してよいわけではありません。
確認の順序:まずセキュアな通信を確認し、その後に接続可否を判断
VLESSの接続情報でTLSが無効になっている場合は、外側の通信を保護する仕組みが明確に設定されているか、まずサービス提供元に確認してください。「UUIDを入力した」「ポートが443」というだけでは、通信が暗号化されている根拠にはなりません。
TLSではサーバーの身元確認も行われます。接続先のアドレスにIPアドレスを使い、証明書の検証にはドメイン名をServer Nameとして指定する場合があり、両者は一致しないことがあります。エラーを解消するために証明書の検証を無効化するのではなく、Server Name、証明書のドメイン名、端末の日付と時刻を確認してください。VMessの認証にも時刻の同期が必要です。端末の時刻が大きくずれている場合は、システムの自動設定に戻してから再試行してください。
3. Home → Add Serverで項目を入力する
HomeからAdd Serverを開き、まずTypeを選んでからアドレスと認証情報を入力します。プロトコルやトランスポート方式によって表示される項目は異なります。表示されない項目を、別の項目に代用して入力しないでください。画面のレイアウトはアプリの更新で変わる場合があります。古いスクリーンショットの配置をまねるのではなく、項目の意味とサーバー側の指定が一致しているか確認しましょう。
- Type:サービス提供元から指定されたVMessまたはVLESSを選択します。インポート後も、ノード名だけで判断せずTypeを確認してください。
- AddressとPort:Addressには接続先のホスト名またはIPアドレスだけを入力し、共有リンク全体は貼り付けません。Portにはサービス提供元が指定した値を入力します。たとえば接続情報に8443とある場合、TLSを有効にしても443に変更しないでください。
- UUID:ユーザー識別子を省略せずにコピーします。VMessにAlter IDの指定がある場合は、実際の接続情報に従って入力してください。現在一般的なVMess AEADの設定では通常0を使用します。VLESSではVMessのAlter IDの仕組みを使用しません。
- VMessの暗号化設定:サービス提供元が指定した方式と一致しているか確認します。プロトコルの暗号化設定とTLS、WebSocketを同じ設定項目として扱わないでください。
- トランスポート設定:提供された情報に従ってTCPやWebSocketなどを選択します。WebSocketを使う場合は、HostとPathも確認してください。Pathの先頭にあるスラッシュも設定値の一部です。
- TLSとServer Name:TLSを有効にするか、証明書の検証に使用するドメイン名、追加要件の有無を確認します。Flowなどの拡張パラメーターが指定されている場合は、選択した設定で対応していることと、正しい項目に設定されていることも確認してください。
4. TCPとWebSocket:トランスポートの設定を個別に確認する
VMessとVLESSはプロキシプロトコル、TCPとWebSocketは通信を運ぶ方式、TLSは通信を保護する仕組みの一部です。たとえば「VLESS + WebSocket + TLS」は各要素を組み合わせた構成であり、互いに自由に置き換えられる3つのプロトコル設定ではありません。サーバー側がWebSocketを使う場合、UUIDとTLSだけを正しく入力しても接続できません。
よくある2種類のトランスポート構成で確認する点
TCP + TLS
- Address、Port、UUIDを確認します。
- 選択したトランスポート方式がサーバー設定と一致しているか確認します。
- TLSのServer Nameと証明書の検証を確認します。
- サービス提供元から追加パラメーターが指定されている場合は、対応状況を一つずつ確認します。
WebSocket + TLS
- まずアドレス、ポート、UUID、TLSを確認します。
- 次にWebSocketのHostを一文字ずつ確認します。
- Pathの大文字・小文字、スラッシュ、必要なクエリパラメーターをそのまま保持します。
- 接続先アドレス、Host、Server Nameの用途を区別します。
Address、Host、Server Nameがすべて同じとは限りません。それぞれ接続先、WebSocketリクエスト、TLSのサーバー認証に使われます。
たとえば、接続先アドレスがedge.example.com、WebSocketのHostがws.example.com、Server Nameがtls.example.comのように、特定の構成では3つの値が異なる場合があります。実際にそう設定するかどうかは、サーバーの設定情報で確認してください。すべてを接続先のIPアドレスに置き換えると、TLSの検証に失敗したり、リクエストが正しいサービスに転送されなかったりすることがあります。
5. 接続テスト:Global Routingの影響を切り分ける
ノードを保存したら、Homeでそのノードを選び、Global Routingも確認します。この設定はトラフィックの振り分け方法を制御するもので、VMessをVLESSに変換するものではありません。Configは設定済みのルールに従って処理し、Proxyはプロキシ処理の対象となるトラフィックをプロキシ経由にします。Directは直接接続します。Sceneは設定されたシーンに応じて処理されるため、名前だけで実際の接続経路を判断しないでください。
Config:通常のルール設定に戻す
推奨ノード単体で接続できることを確認したら、Configで実際にどのルールが適用されるかを確認します。ルールではPROXY、DIRECT、REJECTを指定できるため、すべてのリクエストが現在のノードを経由するとは限りません。
適した用途:既存の設定を使った日常利用と、トラフィック振り分けの確認
Proxy:ルールの影響を一時的に切り分ける
テスト中は一時的にProxyを選び、同じノードとテスト先を固定して、ルールによる直接接続の影響を減らします。テスト後は、元のGlobal Routing設定に戻してください。
適した用途:問題がノードの接続か、トラフィックの振り分けルールかを確認
Direct:ローカルネットワークの基準を確認する
本来直接アクセスできる接続先に、ローカルネットワークから直接接続できるかを確認します。この状態でWebページが開いても、VMessまたはVLESSのノードが正常とは限りません。
適した用途:Wi-Fi、モバイル通信、ローカル接続の問題を切り分ける
テストでは一度に変更する条件を一つに絞ってください。ネットワーク、ノード、接続先を固定し、タイムアウトの有無、TLSエラーの有無、特定のWebサイトだけで失敗するかを記録してから、別のローカルネットワークでも試します。ポートに接続できた、または遅延時間が表示されたという結果は、そのテストに応答があったことを示すだけです。プロキシ認証、トランスポート経路、リクエスト全体の成功を意味するものではありません。
- 接続直後にTLSエラーが出る:まずServer Name、端末の時刻、証明書の検証を確認し、UUIDは先に変更しないでください。
- WebSocketのハンドシェイクで404などのHTTPステータスが返る:まずHost、Path、サーバー側の転送経路を確認します。ステータスだけでUUIDが正しいとは判断できません。
- 長時間タイムアウトする:まずAddress、Port、ネットワークからの到達性を確認し、続いてトランスポートと認証を確認します。タイムアウトだけで特定の項目が原因とは断定できません。
- Proxyでは接続できるが、Configでは一部の接続先にアクセスできない:すぐにプロトコルを変更せず、Configのルール順序と適用されるポリシーを確認してください。
6. インポート・更新時によくある設定の問題
既存のサブスクリプションは、サービス提供元が案内する方法で追加し、インポート後にType、トランスポート、TLSの情報を確認してください。サブスクリプションを更新するとノードの設定が上書きされる場合があるため、手動で変更する前に元の情報を控えておきましょう。更新後に問題が起きた場合は、まずアドレス、ポート、トランスポートの設定が変わっていないか比較してください。複数の項目を続けて変更してから元の値を思い出そうとするのは避けましょう。
UUIDがあるのに接続できないのはなぜ?
UUIDで解決できるのは、ユーザー識別に関する問題の一部だけです。Home → Add Serverから該当ノードの編集画面を開き、Type、Address、Port、UUID、トランスポート、TLSの順に確認してください。特にWebSocketのHostとPath、TLSのServer Nameを見落とさないようにしましょう。
VMessをVLESSに変更すると速くなる?
そのまま変更することはできません。サービス提供元からVLESS用の接続情報一式を入手し、別のノードとして保存してください。サーバー、回線、テスト条件を比較できる場合に限り、テスト結果を参考にできます。異なる回線による速度差を、プロトコル名の違いだけに結びつけることはできません。
サブスクリプション更新後に、変更したPathが消えた場合は?
まず、サブスクリプションの更新によって設定が再配信されたかを確認し、最新の値をサービス提供元に問い合わせてください。一時的に検証する必要がある場合は、その設定を手動の別ノードとして保存してテストします。サブスクリプション管理下のノードを、継続的な手動設定として扱わないでください。確認できていない古いPathを繰り返し入力するのは避けましょう。
On Demandを有効にするとプロトコルのエラーは直る?
直りません。Settings → On Demandは、条件に応じて接続するための設定であり、UUID、TLS、トランスポートの項目を修正するものではありません。まず手動接続が正常に動作することを確認し、その後On Demandを確認してください。テスト中は接続条件を一定に保ち、自動接続状態の変化によって判断が乱れないようにしましょう。
最終確認のポイントは、プロトコルの種類をサーバー側と一致させ、トランスポートとTLSの各項目を順に照合し、リクエストが意図したルールで処理されていることを確認することです。それでも原因を特定できない場合は、「VMessが遅い」「VLESSがつながらない」と伝えるだけでなく、認証情報を隠した設定項目、ネットワークの種類、エラーの内容をサービス提供元に伝えると、問題の切り分けに役立ちます。その他の設定方法はノード管理とGlobal Routingの使い方をご覧ください。