ShadowrocketのVMessとVLESSの違い|暗号化・設定項目・インポート時の確認ポイント

VMessとVLESSの暗号化、UUID、トランスポート設定の違いと、Add Serverで項目を誤入力したときのよくある症状を解説します。

この記事の概要

この記事は、利用中のサービス事業者から設定情報やサブスクリプションを入手済みで、ShadowrocketでVMessとVLESSの設定を確認したい方向けです。プロトコルの暗号化とTLSの役割を整理し、Address、Port、UUID、トランスポート設定を順に確認します。読み終えると、元の設定どおりに入力すべき項目や、インポート後に接続できない場合に確認する層が分かります。

VMessとVLESSの違い:プロトコルの違いであり、速度の段階ではない

VMessとVLESSはいずれも接続設定のプロトコル種別であり、Global Routingのモードや料金プランの名称ではありません。サーバー側で使われているプロトコルに合わせて、Shadowrocketでも該当するTypeを選びます。既存のVMess設定のTypeをVLESSに変更し、同じAddressとUUIDを使っても変換にはなりません。サーバー側の受け入れプロトコルと関連パラメータも一致させる必要があります。

VMessにはプロトコル層の認証とデータ保護の仕組みがあり、一般的な設定ではAEAD認証が使われます。ペイロードの暗号化方式は、元の設定に沿って確認してください。VLESSはよりシンプルなプロトコル構造で、プロトコル自体はペイロードを暗号化しません。そのため、通常はTLSなどの外部のセキュリティ機構で通信を保護します。「VLESSにはプロトコル内の暗号化がない」ことは、「TLSを使うVLESS接続が平文である」ことを意味せず、TLSを自由に無効にしてよいという意味でもありません。

確認項目VMessVLESS
ユーザー識別子通常はUUIDを使用します。サーバー側の設定と一致させてください。通常はUUIDを使用します。サーバー側の設定と一致させてください。
プロトコル層の暗号化関連する仕組みや暗号化オプションがあります。設定に合わせて選択してください。ペイロード暗号化はありません。VMessの暗号化オプションは適用できません。
TLS外部のセキュリティ機構として利用できます。有効にするかどうかはサーバー側の設定によります。通信の保護に使われます。パラメータをサーバー側の設定と一致させてください。
トランスポート方式TCP、WebSocketなど、実際の設定を確認してください。同様にトランスポート方式の確認が必要です。プロトコル名で各パラメータを代用することはできません。
そのまま相互に置き換えられるかクライアントのTypeを変更するだけでは切り替えられません。サーバー側で該当プロトコルを使うための完全な設定を入手してください。

実際の速度は、回線の混雑、遅延、パケットロス、サーバーの負荷、外側のトランスポート方式にも左右されます。接続先が異なる2つの設定が、それぞれVMessとVLESSであっても、1回の速度測定だけでどちらかのプロトコルが必ず速いとは判断できません。まず設定の不足をなくし、接続を安定させたうえで、条件が近い環境で実際のアクセス状況を比較してください。

UUID、Port、TLS:各項目の役割を整理する

UUIDはユーザー識別子であり、サーバーのAddressでもTLS証明書のドメイン名でもありません。一般的なUUID文字列は32個の16進数と4つのハイフンで構成され、8-4-4-4-12の5つのグループに分かれています。書式が正しくても、文字列の形式が要件を満たしているだけで、サーバーがそのユーザーを認証するとは限りません。コピー時に余分な空白が入る、一部が欠ける、期限切れのUUIDを使うといった場合は、認証に失敗することがあります。

36文字
一般的なUUID文字列:32個の16進数と4つのハイフン
1–65535
Portの数値範囲。サーバーで実際に開放されているPortを入力してください。
443
HTTPS/TLSでよく使われるPortの例であり、VMessやVLESS専用のPortではありません。

Addressは接続先を指定し、Portはその接続先のどの入口に接続するかを指定します。TLSでは443がよく使われますが、元の設定にある別のPortを独自に443へ変更しないでください。TLSのServer Name(SNI)は、ハンドシェイクで接続先の名前を示し、関連する証明書の照合にも使われます。接続先のAddressとは異なる場合もあるため、手元の設定に従ってください。

層ごとに確認する:接続先と外側のトランスポート

接続先と認証
  • Type:名前から推測せず、VMessまたはVLESSを確認します。
  • Address、Port:サーバーで実際に待ち受けている接続先に合わせます。
  • UUID:全体をコピーし、元の設定と一文字ずつ照合します。
  • VMessの暗号化パラメータ:元の設定に従い、VLESSには適用しません。
トランスポートとセキュリティの設定
  • TLS:有効・無効をサーバー側の設定と一致させます。
  • Server Name(SNI):元の設定に従って入力します。
  • WebSocket:PathとHostを確認します。
  • Flow、ALPNなどの追加項目:元の設定で指定され、現在のクライアントが対応している場合のみ入力します。

まとめ:接続先とトランスポートの両方のパラメータを一致させます。UUIDが正しくても、Path、SNI、Portの誤りは補えません。

WebSocketのHostとTLSのSNIは別の層で使われます。前者はHTTPハンドシェイク、後者はTLSハンドシェイクに使われます。サーバー側で同じ値が要求される場合もあれば、異なる値が指定されている場合もあります。Pathには通常、/example-pathのように先頭のスラッシュが含まれます。パスの大文字・小文字、クエリパラメータ、末尾のスラッシュも元の設定どおりに保ってください。ドメイン名やURLのように見えても、これらの値を相互に置き換えないでください。

Add Serverでの入力:元のパラメータを保ち、順に保存する

ShadowrocketのHomeでは接続項目と接続状態を管理し、Configではルール設定、Settingsではアプリの設定を管理します。VMessまたはVLESSを手動で追加する場合は、Homeの追加メニューからAdd Serverを開きます。UUIDをConfigのルール欄に入力するものではありません。プロトコルによって表示される項目は異なります。各項目の詳細は、現在の画面とサーバー側の設定を確認してください。

  1. Typeを選択します。Home → 追加メニュー → Add Serverを開き、VMessまたはVLESSを選択します。最初に種類を決めてからほかのパラメータを入力すると、種類の切り替え後に専用項目を見落とすのを防げます。
  2. 接続先と識別子を入力します。Address、Port、UUIDをコピーします。Address欄にhttps://やWebSocket Pathを追加せず、Portは別の欄に入力してください。
  3. プロトコル固有の項目を確認します。VMessの暗号化方式と、旧設定に含まれるAlterIdは元の設定に合わせます。古い形式のパラメータをAEAD設定へ安易に引き継がないでください。VLESSにFlowなどの指定がある場合は、現在の画面が該当する値に対応しているか確認し、推測で入力しないでください。
  4. トランスポート層を設定します。元の設定でWebSocketを使っている場合に限り、対応するHostとPathを入力します。TCPの設定を、チュートリアルで見かけたという理由だけでWebSocketに変更しないでください。
  5. TLSを設定します。元の設定に従ってTLSを有効にし、Server Name(SNI)と、元の設定で明示されている追加パラメータを確認します。名前の不一致を隠すために証明書の検証を無効にしないでください。
  6. 保存して確認します。Homeに戻って新しい項目を選択し、初回接続に必要なシステムの許可を完了してから、アクセス可能と分かっているHTTPSページを開きます。保存に成功しただけでは、項目が記録されたことしか分からず、認証や通信が成功したとは限りません。

既存の設定にクライアント画面に表示されない必須パラメータが含まれている場合、「空欄でも使えるかもしれない」と判断してはいけません。まず、その設定が現在のShadowrocketで利用できるかを確認し、次にApp Storeで入手できるアプリのアップデートと、サーバー提供元の項目説明を確認してください。一度に変更する値を1つに絞り、変更前後の状態を記録すると、入力ミスと接続環境の変化を切り分けやすくなります。

既存のサブスクリプションと共有リンク:インポート方法の選び方

すでに自分のサブスクリプションを利用している場合は、設定全体をそのまま保つことを優先してください。サブスクリプションURLは複数の接続情報を取得するための入口です。vmess://またはvless://で始まる共有リンクは、通常1つの接続項目を表します。この2つは同じ入力形式ではありません。サブスクリプションURLをサーバーのAddressとして入力したり、単一の共有リンクを継続更新されるサブスクリプションURLとして扱ったりしないでください。

既存の完全な設定をインポート

おすすめ

既存のサブスクリプションまたは完全な共有リンクからインポートすると、UUID、TLS、Host、Pathの入力漏れを減らせます。インポート後もプロトコル種別と重要な項目を確認してください。項目名だけで判断しないでください。

おすすめのケース:Shadowrocketで使える完全なサブスクリプションまたは共有リンクを入手済みの場合

Add Serverで手動入力

確認できているパラメータを一つずつ入力すると、各項目の意味を理解しやすく、1つずつ条件を変えて原因を調べられます。項目の全容が分からない場合は、一般的な初期値で補わず、まず元の設定を確認してください。

おすすめのケース:明確なパラメータ一覧があり、単一項目の追加や入力ミスの確認が必要な場合

インポート済みの項目を編集

変更が必要だと確認できた項目だけを変更し、変更前の値を記録しておきます。サブスクリプションの更新で項目が再生成され、ローカルの変更が上書きされる場合があります。一時的なテストと長期利用の設定を分けて管理してください。

おすすめのケース:既知の項目を確認し、サーバーのプロトコルや認証情報は変更しない場合

まとめ:情報が揃っているか確認してから、プロトコルを選ぶ

2つの設定のうち一方だけがインポートや接続に成功した場合は、VMessとVLESSの性能差だとすぐに決めつけず、欠けている項目とサーバー側の要件を比較してください。まず、現在のサーバー設定に完全に一致する項目を使用します。

サブスクリプションを追加するには、Homeの追加メニューからSubscribeを選び、手元にあるサブスクリプションURLを入力して保存します。形式を示すためのダミー値はhttps://example.com/sub?token=xxxxであり、利用可能なサービスを提供するものではありません。サブスクリプション内のtokenも、個別設定のUUIDも、アクセス権に関わる場合があります。トラブル調査用のスクリーンショットではこれらの値を隠し、完全なURLを公開の場に貼り付けないでください。

接続できないときの切り分け:接続先からルールまで順に確認

トラブルシューティングでは、「アプリの接続スイッチがオン」「サーバーのPortに到達できる」「目的のWebページを開ける」の3つの段階を区別してください。システムにVPN状態が表示されても、リモート側の認証成功を示すわけではありません。遅延の数値だけでは、TLS、WebSocket、目的のサイトへのアクセスをすべて検証したことにはなりません。以下の症状は原因を絞り込む手がかりであり、特定の原因を断定する証拠ではありません。

UUIDは正しそうなのに、接続できないのはなぜ?

まずHomeで項目を開き、Type、UUID、Portが同じ設定情報に基づいているか確認します。次にシステム時刻と認証情報の有効性を確認してください。UUIDだけをコピーし、別の項目のトランスポート設定を流用している場合も、接続に失敗することがあります。

遅延は表示されるのに、Webページが開かない?

テストする項目を選択し、Global Routingを一時的にProxyにしてから、アクセス可能と分かっている同じHTTPSページを開きます。それでも失敗する場合は、TLSとトランスポートを引き続き確認してください。Proxyでは開けるのにConfigでは開けない場合は、ルールと参照先のポリシーを確認します。テスト後は元のモードに戻してください。

ログにTLSハンドシェイクまたは証明書のエラーが表示される。どこを変更すればよい?

項目の編集画面に戻り、TLS、Server Name(SNI)、Addressを確認し、システムの日付も確認してください。名前の不一致、証明書の有効期間、サーバー側の設定が原因となる場合があります。証明書の検証をすぐに無効にせず、まずサーバー側の要件を確認してください。

WebSocketでHTTPエラーが発生する。UUIDの問題?

HTTPエラーはプロトコル認証より前に発生する場合があります。まずトランスポート方式、Host、Path、TLSを確認し、リクエストが正しい接続先に届いているか調べてください。404はPathや接続先の不一致を示すことがありますが、ログとサーバー設定もあわせて確認する必要があります。ステータスコードだけで原因を断定しないでください。

サブスクリプションを更新したら、手動で修正したパラメータが元に戻った?

更新後の項目と既存のサブスクリプションの内容を照合し、ローカルの変更が上書きされたか確認します。一時的なテスト設定は独立した項目として保存し、具体的な差分を記録してください。長期利用では、完全で有効な元の設定を使用してください。

Global RoutingのConfigは現在の設定ルールに従って接続を処理します。Proxyは、そのモードで処理される接続をプロキシ経由にし、Directは直接接続します。Sceneは接続シーンの選択に関する項目であり、4つ目のプロトコルではありません。Configでだけアクセスに問題がある場合は、UUIDを変更するのではなく、Config内のDOMAIN-SUFFIX、GEOIP、IP-CIDR、FINALの順序とポリシーの適用先を確認してください。

接続が自動的に開始または再開される問題を調べる場合は、Settings → On Demandの起動条件も確認してください。On Demandは条件に応じて接続を開始するタイミングを決める機能であり、VMessやVLESSの認証項目を修正するものではありません。テスト条件を揃えるため、現在の設定を記録し、手動接続を検証するのか、自動起動を検証するのかを明確にしてください。2つの問題を混同しないようにします。

設定を保存する前の最終確認

項目を利用できるかどうかは、クライアントとサーバーのプロトコル、認証、トランスポート、セキュリティの各設定が一致しているかで決まります。VMessとVLESSのどちらを選ぶかは、まず既存のサーバー設定に従ってください。同じネットワーク、同じ接続先、近い時間帯で実際の使い勝手を比較できるのは、サーバー側から両方の完全な設定が提供されている場合に限られます。1回の遅延測定や項目名だけでは違いを判断できません。

Shadowrocketはクローズドソースの商用アプリで、主にiPhoneとiPad向けに提供されています。入手先はApp Storeのみです。デベロッパ名はShadow Launch Technology Limited、アプリIDは932747118です。クライアントの買い切り購入と、ユーザーが別途利用する通信サービスは異なります。システム要件と購入の対応状況はApp Storeのページをご確認ください。アプリを購入しても、利用可能なVMessまたはVLESSの設定が自動的に作成されるわけではありません。

App Storeで正規アプリを確認購入と復元の案内