ShadowrocketのVMessとVLESSの違い|暗号化・通信方式・設定項目を比較

VMessとVLESSの暗号化・認証・通信方式の違いを解説。Shadowrocketで入力する項目も比較し、サービス提供元の接続情報を確認できます。

この記事の要点

VMessとVLESSは、Typeを切り替えるだけでは相互に変換できません。どちらもユーザー認証にUUIDを使うことがありますが、プロトコルの暗号化方式は異なり、外側にTLSやWebSocketを組み合わせる場合もあります。サービス提供元の接続情報やサブスクリプションをお持ちの方向けに、「プロトコル → 認証 → 通信方式 → TLS」の順で項目を確認します。Global Routingを使えば、接続の問題とルールの問題を切り分けられます。サブスクリプションとノード情報はサービス提供元から入手してください。

1. VMess・VLESS・TLS・通信方式の違いを整理

Shadowrocketでは、VMessとVLESSは異なるプロキシプロトコルであり、同じ接続の速度設定ではありません。サーバー側のプロトコルに合わせて、クライアントでも同じTypeを選ぶ必要があります。サーバーアドレス、ポート、UUIDがすべて同じでも、VMessをVLESSに変更するだけでサーバーが別のプロトコルを受け付けるわけではありません。

接続情報は、いくつかの独立した層に分けて確認します。VMessまたはVLESSはプロキシプロトコルと認証形式を定め、TCPやWebSocketなどは接続の運び方を定めます。TLSは、その接続を暗号化し、サーバーの身元を確認します。WebSocket自体に暗号化機能はなく、ポートが443だからといってTLSが有効とは限りません。

2種類
この記事で比較するプロトコル:VMess / VLESS
443
TLSでよく使われるサーバーポート。実際の値はサービス提供元の接続情報を確認してください。
4段階
確認する順序:プロトコル、認証、通信方式、TLS

たとえば「VLESS + WebSocket + TLS」は、プロキシ通信にVLESSを使い、WebSocketで通信を運び、該当するTLS終端までの接続をTLSで保護する構成です。それぞれ異なる役割を示すため、互いに置き換えることはできません。

2. 暗号化とUUID:VLESSのnoneは接続全体が保護されないという意味ではない

VMessはプロトコル層でデータを暗号化できます。AEADを採用したVMessの実装では、該当するプロトコルデータの認証保護も行われます。データの暗号化方式はサーバー側と互換性のあるものを選んでください。クライアントに表示されるautoなどの選択肢はVMessの暗号化設定に関係するもので、VLESSの設定要件としてそのまま使うことはできません。

VLESS自体には、VMessのようなプロトコル層のデータ暗号化機能がありません。一般的な設定項目の encryption=none は、この層で暗号化しないことを示します。外側にTLSが正しく設定されていれば、接続はTLSによる保護を受けられます。つまり「VLESSに組み込みのデータ暗号化がない」ことと「VLESSの接続が必ず平文である」ことは別です。サービス提供元が指定するTLSを無効にしないでください。

確認項目VMessVLESS
ユーザー認証情報通常はUUIDを使用します。サーバー側のユーザー設定と一致させてください。通常はUUIDを使用します。サーバー側のユーザー設定と一致させてください。
プロトコル層のデータ暗号化プロトコル層で暗号化できます。サーバー側の指定と互換性のある設定を選んでください。この層での暗号化はありません。一般的なencryptionの値はnoneです。
外側のTLSTLSと組み合わせられます。プロトコル名だけではTLSの有無は決まりません。TLSと組み合わせられます。noneだからといってTLSを無効にしないでください。
AlterId旧式の互換性維持用パラメーターです。現在のAEAD VMessでは通常0に相当します。独自に0以外へ変更しないでください。VMessのAlterIdは使用しません。設定をそのまま流用しないでください。
時刻の確認認証は時刻に関係するため、デバイスの時刻が大きくずれていると接続に失敗することがあります。VMessのような時刻認証方式ではありませんが、TLS証明書の有効期間確認には正しい時刻が必要です。

UUIDは認証情報であり、サーバーのドメイン名やサブスクリプションURLではありません。見た目が同じ形式のUUIDを使っていても、2つのプロトコルでアカウントを共用できるとは限りません。コピー時は引用符、空白、改行が混ざらないようにしてください。診断情報を他人に送る場合は、UUID、サブスクリプショントークンなどの認証情報を隠してください。

3. Shadowrocketの設定項目:共通点と違いを順に確認

Homeでノードを追加または編集するときは、まずTypeを確認してから各項目を入力します。サブスクリプションをお持ちの場合は、拡張パラメーターの転記漏れを防ぐため、サービス提供元のインポートデータを優先してください。下の表では各項目の意味を整理しています。Typeによって表示される選択肢は異なる場合があるため、実際の画面とサービス提供元の案内を確認してください。

項目・パラメーター入力内容よくある間違い
TypeVMessまたはVLESSを正しく選択します。ノード名だけからプロトコルを推測する。ノード名は任意に設定できるため、判断材料にはなりません。
サーバーアドレスサービス提供元から指定されたドメイン名またはIPアドレスを入力します。サブスクリプションURL全体をアドレス欄に入力する、または誤ってhttps://を追加する。
Portサービス提供元が指定するポート番号を整数で入力します(例:443)。TLSは443しか使えないと思い込み、指定されたポートを勝手に変更する。
UUID元の値を一文字も変えずに入力します。ノード名をアカウント情報と取り違える、またはコピー時に文字を抜かす。
通信方式の設定接続情報に従い、TCP、WebSocketなどを選択します。VMessとVLESSのどちらにもWebSocketが必須だと思い込む。
TLS / SNIスイッチ、サーバー名、証明書に関する要件を確認します。接続先アドレスをそのままSNIにコピーし、サービス提供元が指定するドメイン名を見落とす。
WebSocket Host / PathWebSocketを有効にする場合は、サーバー側の指定に従って入力します。Pathの先頭の / を忘れる、またはHostとSNIを同じ項目だと思い込む。

サーバーアドレスは接続先を示します。SNIはTLSハンドシェイクでサーバー名を通知し、対応する証明書の検証設定にも関係します。WebSocketのHostはHTTPリクエスト内のホスト情報です。値が同じ場合もありますが、役割は異なります。サービス提供元から別々に指定された場合は、それぞれの値を維持し、見た目をそろえるために統一しないでください。

  1. まず接続情報の原本を保存し、Type、アドレス、Port、UUIDを確認します。
  2. 次に通信方式を確認します。WebSocketを使う場合に限り、対応するHostとPathを設定します。
  3. 最後にTLS、SNI、その他サービス提供元が指定する項目を確認します。証明書検証を無効にすることを、標準的な対処法にしないでください。
  4. 保存後、Homeに戻ってノードを選び、実際にリクエストをテストします。原因を特定しやすいよう、変更は一度に1項目にしてください。

4. サブスクリプションのインポートと手動入力:2つの確認方法

サブスクリプションは、ノード情報をまとめて提供・更新するための手段であり、VMessやVLESSそのものではありません。1つのサブスクリプションに異なるプロトコルのノードが含まれる場合があり、更新後にアドレス、ポート、通信パラメーターが変わることもあります。インポートに成功しても、認証情報が有効であることや、サーバーが現在利用できることを保証するものではありません。

確認方法:元の接続情報を残し、手動変更を繰り返さない

サブスクリプションがある場合
  • サブスクリプションはサービス提供元から入手し、Homeのサブスクリプション追加画面で登録して更新します。
  • インポート結果を開き、Type、アドレス、ポートがサービス提供元の案内と一致しているか確認します。
  • 更新前に手動で変更した項目を記録してください。更新によってノードの項目が再作成または上書きされる場合があります。
個別ノードの接続情報のみがある場合
  • Homeでノードを追加し、まず正しいTypeを選択します。
  • 項目一覧に従ってUUID、通信方式、TLSのパラメーターを入力し、各プロトコル固有の項目を混同しないでください。
  • 元の情報を記録しておき、設定が変わったら項目ごとに照合します。スイッチの状態を何度も推測して変えないでください。

どちらの方法でもサーバー側の設定が基準です。サブスクリプション、ノードの認証情報、アプリの購入履歴はそれぞれ別に管理されます。

サブスクリプションURLには認証情報が含まれることがあります。例示用のURL https://example.com/sub?token=xxxx は構造の説明だけを目的としており、インポートには使用できません。実際のURLを公開スクリーンショット、チャット、ログに載せないでください。更新に失敗した場合は、URLの期限切れ、リクエストの未到達、応答内容の解析失敗を切り分けてから、サービス提供元に確認してください。

5. 接続テスト:ノード設定とGlobal Routingの選択を切り分ける

Homeではノードの選択と接続、Configでは構成ファイルとルールの管理、Settingsではアプリの設定を行います。ノードのプロトコルを正しく設定しても、すべてのリクエストがそのノードを経由するとは限りません。Global Routingでトラフィックの処理方法を選び、Configでは現在有効なルールも確認してください。

Config

おすすめ

現在の設定ルールに従って処理します。先行するルールに一致しないリクエストは、通常FINALに渡されます。直結されるかどうかは構成次第であり、「残りはすべて直結」と決まっているわけではありません。

適した用途:ルールを確認したうえで、宛先に応じて処理方法を使い分ける日常的な利用。

Proxy

トラフィックをプロキシ経由にします。宛先別のルールによる影響を一時的に除外して確認できます。テスト時は、選択中のノードと適用される除外設定も確認してください。

適した用途:アクセス先を変えずに、選択したノードでリクエストが完了するかを確認する。

Direct

直接接続します。この状態でWebページが開いても、設定したVMessまたはVLESSノードが有効である証明にはなりません。

適した用途:同じ接続先にローカルネットワークから直接アクセスできるかを比較する。

Sceneを使う場合は、該当するシーンの設定も確認してください。前回選択したノードだけで、現在の通信経路を判断することはできません。切り分け時はネットワークとテスト対象を固定し、最初に現在の状態を記録してから一時的に切り替えてテストし、終わったら元に戻します。On Demandは条件に応じて接続を開始する機能であり、UUID、SNI、WebSocket Pathを修正するものではありません。

6. よくある質問:速度、変換、インポート後の不具合

VLESSはVMessより速いですか?

プロトコル名だけでは判断できません。同じネットワーク、近い時間帯、同じ接続先でテストし、リクエストの成否と遅延を記録してから、サーバーまでの経路、混雑状況、外側の通信方式を確認してください。2つのノードでサーバーが異なる場合、速度差のすべてをプロトコルの違いに結び付けることはできません。また、VLESSにデータ暗号化機能が組み込まれていないからといって、あらゆる状況で通信速度が上がるわけではありません。

TypeをVMessからVLESSに変えるだけで切り替えられますか?

Typeを変更するだけでは切り替えできません。まずサービス提供元から対応するVLESSの接続情報を入手し、Homeで別のノードを新規作成して確認してください。サーバー側も該当プロトコルに対応している必要があります。UUIDが同じでも、サーバー側の対応に代わるものではありません。比較できるよう、元のVMessノードは残しておいてください。

UUIDとポートが正しいのに、WebSocketで接続できないのはなぜですか?

通信方式、Host、Path、TLS、SNIを続けて確認してください。たとえばサーバー指定のPathが/connectの場合、connectや/を入力しても同じパスにはなりません。HTTPステータスエラーが発生したら、サービス提供元の案内に沿ってリバースプロキシの接続先を確認し、ドメイン名を手当たり次第に変更しないでください。/connectはパスの例であり、共通の設定値ではありません。

サブスクリプションを更新したら、以前使えていたノードが接続できなくなりました。

まずHomeで現在選択されているノードを確認し、更新後のType、アドレス、通信パラメーターを照合します。以前手動で変更した項目が上書きされていないかも確認してください。必要な項目が応答データに含まれていない場合は、認証情報を隠したエラー内容を保存し、サービス提供元に問い合わせてください。UUIDやTLS設定を推測で入力しないでください。

7. アプリの入手元とサービス範囲を確認

Shadowrocketはクローズドソースの有料アプリです。購入・入手はApp Storeからの一回限りの買い切りです。公式アイコン、デベロッパ名のShadow Launch Technology Limited、アプリID 932747118を確認してください。主な利用端末はiPhoneとiPadです。システム要件、価格、互換性、購入対象の範囲はApp Storeページの表示をご確認ください。

Shadowrocketの正規版を入手まずApp Storeの情報を確認 →