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

VMessとVLESSの暗号化、UUID、TLSの違いを比較し、Add Serverで入力する項目と、サブスクリプション内での見分け方を解説します。

この記事の要点

VMessとVLESSは、名前を置き換えるだけで切り替えられるものではありません。どちらもユーザー識別にUUIDを使うのが一般的ですが、VMessはプロトコル層でデータを暗号化できる一方、VLESS自体にはデータ暗号化機能がないため、TLSなどのセキュリティ層を別途確認する必要があります。すでにサービス提供元とサブスクリプションを利用している方向けに、プロトコル、伝送方式、セキュリティ層の違いを説明し、Shadowrocketで確認する項目とトラブルシューティングの順序を紹介します。

1. プロトコル・伝送方式・TLSを区別する

ShadowrocketでVMessまたはVLESSを選ぶのは、接続に使うプロキシプロトコルを指定することです。伝送方式やセキュリティ設定まで同時に決まるわけではありません。VLESSという名前だけでWebSocketを使うとは限らず、VMessを選んだからといってTLSが有効になるわけでもありません。

接続設定は、双方がユーザーを識別するプロトコル、プロキシデータの伝送方法、クライアントとサーバー間の通信がTLSで保護されているか、という3点に分けて考えられます。サーバー側の設定と各項目を照合し、アドレス、ポート、UUIDだけで済ませず、ほかの項目も確認してください。

層例確認する項目
プロキシプロトコルVMess / VLESSTypeをサーバー側のプロトコルに合わせ、UUIDも同じアカウントのものを指定します。
伝送方式TCP / WebSocketサーバーで指定された方式を選びます。WebSocketの場合はHostとPathも確認します。
セキュリティ層TLS有効かどうかを確認し、ハンドシェイクと証明書検証に使うサーバー名も照合します。

TCPとWebSocketは、ここで説明に使う一般的な設定例であり、対応方式の全一覧ではありません。選択できる項目はアプリ内の表示を確認してください。既存のサブスクリプションに具体的な伝送パラメーターが記載されている場合は、その設定に従い、プロトコル名だけを根拠に項目を補わないでください。

2. VMessとVLESSの暗号化・UUIDを比較

VMessのプロトコル設計には認証とデータ暗号化の仕組みが含まれており、一般的な設定ではAEAD方式が使われます。VLESSはよりシンプルな設計で、プロキシのペイロード自体は暗号化しません。そのため、VLESSの設定にencryption=noneとあっても、「接続全体が暗号化されていない」とは限りません。外側の通信でTLSが使われているかも確認してください。

項目VMessVLESS
ユーザー識別子通常はUUIDを使用します。通常はUUIDを使用します。
プロトコル層の暗号化データ暗号化機能があります。具体的な設定はサーバー側の指定に従ってください。データ暗号化機能はありません。VMessの暗号化アルゴリズム設定をそのまま適用しないでください。
TLSの役割追加の外側の保護として利用できます。VMessという名前だけで有効になるわけではありません。クライアントとサーバー間の接続を保護するために使われます。実際のセキュリティ設定は別途確認が必要です。
旧式の項目古い設定にはAlterIdが含まれる場合があります。現在のAEAD設定では通常0です。VMessのAlterId認証方式は使用しません。
名前を変更して切り替えられるかできません。Typeを変更しても、サーバーの待ち受け方式やアカウント設定は変わりません。

UUIDは認証情報であり、サーバーアドレスやTLS証明書ではありません。2つの設定に同じUUIDが表示されていても、プロトコル、ポート、伝送方式が異なれば別の接続設定です。UUIDを公開画像、診断用の投稿、共有する文章に含めないでください。

2種類
この記事で確認するプロトコル:VMessとVLESS
36文字
標準形式のハイフン付きUUIDの文字数(前後の空白を除く)
443
TLSでよく使われるサーバーポート。ただし、ポート番号だけではTLS有効化の根拠になりません。

判断のポイント:まずTLSを確認し、その後にnoneの意味を考える

VLESSの設定にencryption=noneと表示されている場合は、まずその設定を開いてTLSとサーバー名を確認してください。noneの表示をなくすためにVMessへ変更したり、ポートが443だからTLSは有効だと決めつけたりしないでください。

3. Home → Add Serverで項目を設定する

手動で追加する場合は、HomeからAdd Serverを開きます。Typeや伝送方式の選択によって後続の項目は変わり、アプリの画面も更新に伴って変わる場合があります。以下の表は各項目の意味を確認するためのもので、すべての接続で同じ入力欄が表示されるという意味ではありません。

  1. まずTypeを選択します。サービス提供元の情報に従ってVMessまたはVLESSを選び、その後ほかの項目を入力してください。Typeを切り替えた際に一部の設定がリセットされ、見落とすことがあります。
  2. AddressとPortを入力します。Addressには指定されたホスト名またはIPアドレスだけを入力し、Portには指定の番号を入力してください。共有リンク全体をAddress欄に貼り付けないでください。
  3. UUIDを入力します。ユーザー識別子を省略せずにコピーし、前後の空白、文字抜け、誤ってコピーした改行がないか確認してください。別の値を自分で生成して代用しないでください。
  4. 伝送パラメーターを確認します。WebSocketを使う場合は、HostとPathも確認してください。Pathの先頭のスラッシュと大文字・小文字はそのまま保持します。
  5. セキュリティ設定を確認します。元の設定に従ってTLSとサーバー名を指定してください。追加項目は、サービス提供元から明示され、アプリにも該当する設定欄が表示される場合に限って入力します。
  6. 保存してHomeに戻ります。保存した項目を選択してから接続テストを行います。保存できたことは入力内容が記録されたことを示すだけで、サーバーが接続を受け付けたことを意味しません。
項目・概念入力の根拠よくある入力ミス
Address / Port利用中のサービス提供元が案内した接続先アドレスとポート。443を固定値だと思い込み、元の設定で指定された別のポートを上書きする。
UUID現在のサーバーアカウントに対応する完全なユーザー識別子。別の設定のUUIDを使う、またはコピー時に空白が混入する。
VMessの暗号化設定インポートした設定、またはサービス提供元の指定を維持します。別のプロトコルのパスワードやアルゴリズムをそのまま当てはめる。
Host / PathWebSocketなど、該当する伝送方式のサーバー設定。Pathの/を付け忘れる、またはHostはAddressと必ず同じだと思い込む。
TLS / SNIセキュリティ層の設定とサーバー名の指定。IPアドレスで接続する際、IPアドレスを証明書に対応するドメイン名と取り違える。

Address、WebSocketのHost、TLS SNIは同じ場合もあれば、サーバーの構成によって異なる場合もあります。Addressは接続先を指定し、Hostは該当するアプリケーション層のリクエスト情報、SNIはTLSハンドシェイクでサーバー名を示します。「統一」するために3つの値をすべて同じドメイン名に変更しないでください。

4. サブスクリプション内でVMessとVLESSを見分ける

サブスクリプションは設定を配布する方法であり、3つ目のプロキシプロトコルではありません。既存のサブスクリプションに複数のプロトコルが含まれることがあります。名前に「VMess」や「VLESS」と書かれていても、備考欄の名称だけでは確定できません。Homeで該当項目の編集画面を開き、Typeと対応するパラメーターを確認してください。

たとえばhttps://example.com/sub?token=xxxxは、サブスクリプションURLの形式を示す例にすぎず、利用可能なサービスではありません。実際のサブスクリプションに含まれるtokenとUUIDは、どちらも機密情報として保管してください。不具合を説明する場合は、Type、伝送方式、ポート、および認証情報を含まないエラーの内容だけを記録してください。

5. 接続のトラブルシューティング:設定を固定してからルーティングを確認

VMessとVLESSはどちらも、アドレス、認証、伝送方式、TLSの設定が一致しないと接続に失敗する場合があります。トラブルシューティングでは、一度に変更する項目は1つにしてください。まず選択中のサーバーを確認し、次にプロトコルと各項目を照合し、最後に通信が実際にその接続を経由しているか確認します。Type、ポート、TLS、Global Routingを同時に変更すると、どの項目が結果に影響したのか分からなくなります。

元のプロトコルと設定を維持

推奨

利用中のサブスクリプションまたはサービス提供元の指定と項目ごとに照合してから、個別にテストしてください。TLSが明示的に必要な設定では、証明書検証を有効に保ち、原因を調べるために検証を無効化しないでください。

適したケース:初回インポート、手動入力、プロトコルの種類が不明

Global Routing → Proxy

ルールの影響を切り分ける場合は、一時的にProxyを使ってWebリクエストをテストできます。これですべてのシステム通信が必ずProxy経由になるわけではなく、サーバー設定の誤りも解決しません。

適したケース:サーバーテストは応答するが、Webリクエストがルールによって別のポリシーに振り分けられている疑いがある

Global Routing → Config

現在のConfigに設定されているルールに従って通信を処理します。テスト後は元の設定に戻し、対象のリクエストに適用されたルールとポリシーを確認してください。ルールの振り分け結果をプロトコルの性能と混同しないでください。

適したケース:接続を確認した後の日常的なルール振り分けと適用状況の確認

  1. Homeで対象項目を選び、備考名と実際のTypeを照合して、別のサーバーをテストしていないか確認します。
  2. Connectivity Testを実行し、その項目に応答または失敗のどちらが表示されるか記録します。テスト結果が示すのは該当する検査の結果であり、すべてのWebサイトやアプリにアクセスできることを保証するものではありません。
  3. システムの案内に従ってVPN構成を許可し、接続スイッチをオンにしてから、実際のWebページをテストします。Global RoutingがDirectの場合、Webページに直接接続できてもプロキシプロトコルが使える証明にはなりません。
  4. 証明書関連のエラーが発生した場合は、まずシステム時刻、TLSのサーバー名、証明書に対応するドメイン名を確認してください。タイムアウトの場合は、アドレス、ポート、ネットワーク到達性も確認します。エラーの内容は手がかりであり、それだけで原因が確定するわけではありません。
  5. Configを使っている場合は、ルールの順序と、DOMAIN-SUFFIX、IP-CIDR、GEOIP、FINALに指定されたポリシーを確認してください。これらはリクエストの振り分け方法を決めるもので、VMessを自動的にVLESSへ変換するものではありません。

確認の順序:到達性、認証、伝送方式、セキュリティ層、ルーティング

元の設定を保存し、まず失敗時の状況を記録してから、各層を順番に確認してください。項目を変更しても改善しない場合は元に戻し、次の項目を確認します。確証のない変更を続けて重ねないでください。

6. VMessとVLESSに関するよくある質問

UUIDが同じなら、VMessをVLESSに変更できますか?

UUIDが同じでも切り替えられるとは限りません。Homeで項目を開いてTypeを確認し、そのポートで実際に受け付けているプロトコルを、利用中のサービス提供元に確認してください。ユーザー識別子が同じでも、サーバー側のプロトコル、伝送方式、セキュリティ設定が一致している必要があります。別のプロトコルが必要な場合は、サービス提供元が用意した該当の項目を使用してください。

VLESSにnoneと表示されています。暗号化アルゴリズムを手動で選ぶべきですか?

VMessのアルゴリズムを適用しないでください。VLESSはプロトコル層でデータを暗号化しないため、TLSなどのセキュリティ層の設定を確認してください。元の設定でTLSを使うことが明記されている場合は、項目の編集画面でTLSとサーバー名を確認します。セキュリティ設定が不明な場合は、接続する前に利用中のサービス提供元へ確認してください。

ポートを443に設定したのに、TLSエラーが表示されるのはなぜですか?

443はポート番号にすぎません。TLSが指定どおり有効か、SNIが証明書に対応しているか、デバイスの日付と時刻が正しいかを確認し、Addressが正しいサーバーに接続しているかも照合してください。証明書検証を無効にして、サーバー名の不一致を隠さないでください。

必ず速く、低遅延になるプロトコルはどれですか?

プロトコル名だけでは判断できません。比較する際は、接続ネットワーク、サーバーの設置場所、伝送方式、TLS、テスト対象をできるだけそろえ、HomeでConnectivity Testを繰り返してから実際のリクエストも確認してください。異なるサーバーで一度だけ得られた応答結果を、VMessまたはVLESSだけに起因するものと判断することはできません。

サブスクリプション更新後、手動で修正した項目が元に戻った場合はどうすればよいですか?

まず、変更されたのがサブスクリプションで管理されている項目か、独立して保存したテスト用項目かを確認します。次に更新後のType、アドレス、セキュリティ設定を照合してください。変更前後の差分から認証情報を除いた内容を、利用中のサービス提供元に伝えてください。UUIDを何度も上書きしたり、サブスクリプションURL全体を公開したりしないでください。

App Storeで正規アプリを確認 →