VMessとVLESSの違いとは?Shadowrocketで手入力する際に確認したい項目

一般ユーザー向けに、暗号化方式、UUID、alterId、TLSの要件を解説。Add Serverで入力する項目と、提供元の設定値との照合方法も紹介します。

この記事の要点

VMessとVLESSは、Type(タイプ)を変更するだけでは相互に切り替えられません。どちらもUUIDを使う場合がありますが、プロトコル層の暗号化、alterId、通信を保護する仕組みの意味は異なります。接続情報を受け取り、Shadowrocketに手入力する方に向けて、プロトコルとTLSを整理し、アドレス、ポート、認証情報、通信方式の順に照合したうえで、項目を一つずつ変えて原因を切り分ける方法を説明します。

まず整理する3つの層:プロトコル、通信方式、TLS

Shadowrocketでは、VMessやVLESSは接続項目のプロトコルタイプです。WebSocketなどはデータを運ぶ通信方式、TLSは通信経路の暗号化と認証を担います。これらは同じ設定ではありません。提供元の案内に「VLESS + WebSocket + TLS」とある場合は、3つの設定を個別に照合してください。VLESSとUUIDだけ入力して終わりではありません。

VMessにはプロトコル層の認証・暗号化機能があり、暗号化の設定はサーバー側との互換性が必要です。VLESS自体は通信内容を暗号化せず、認証機能が暗号化を意味するわけでもありません。一般的な構成ではVLESSをTLSなどの安全な通信方式と組み合わせますが、すべてのVLESS接続でTLSの設定が同じとは限りません。

確認項目VMessVLESS
認証情報通常はUUIDを使用。サーバー側の設定と一致させる通常はUUIDを使用。サーバー側の設定と一致させる
プロトコル層の暗号化独立した暗号化設定があり、サーバー側の指定に合わせるプロトコル自体は通信内容を暗号化しない
alterId旧式の互換用項目。最新のAEAD設定では0を使用VMessのalterIdは使用しない
TLSプロトコル層の暗号化と併用できる。サーバー構成に従って有効化通信の保護に使われることが多い。UUIDで代用できない
通信方式の設定通信方式、Host、Pathなどをサーバー側と一致させるこちらも項目ごとに照合し、別の接続設定を流用しない

プロトコル名だけで接続速度や利用可否は決まりません。どちらもVLESSと表示されていても、サーバー、ポート、通信方式、TLS設定が異なることがあります。原因を調べる際は名前だけで速さを判断せず、設定全体を比較してください。

UUID、alterId、暗号化:推測で入力できない項目

UUIDは識別情報であり、サーバーアドレスでも、自分で生成して使えるニックネームでもありません。一般的なテキスト形式は、ハイフンを含む36文字で、32文字の16進数から構成されます。コピー時は前後の空白、改行、ハイフンの抜けを確認してください。書式が正しくても、サーバーに登録された識別情報と一致しなければ認証に失敗します。

36文字
ハイフンを含むUUIDの一般的な文字数。形式が正しくても認証されるとは限りません
0
最新のVMess AEAD設定で使うalterIdの値。速度調整用ではありません
443
TLSでよく使われるポートの例。実際には指定された値を使用

alterIdはVMessの旧式設計に属する項目です。最新のVMess AEAD設定ではalterId=0を使用します。古い情報を参考に、16、32、64などへ安易に変更しないでください。現在の設定に0以外の値が明記されている場合は、旧設定をすべての接続に適用せず、提供元に現行サーバーの要件を確認してください。VLESSには、VMessのalterIdを流用する項目はありません。

VMessの暗号化設定とTLSは別の層の設定です。設定にauto、aes-128-gcm、chacha20-poly1305などがある場合は、どの項目の値なのか確認し、指定どおりに入力してください。「VLESS自体は暗号化しない」からといって、すべての接続でTLSを無効にするわけではありません。また、VMessの暗号化方式をそのままVLESSに設定することもできません。

判断の順序:まず認証情報、次に通信の保護方式を確認

UUIDの形式に問題がある場合は、まず元の値をコピーし直してください。形式に問題がなくても接続できない場合は、Type、VMessのalterIdと暗号化設定、TLSの状態を確認します。UUIDを何度も変更したり、証明書検証を無効にしたりして試すのは避けてください。

Add Serverの手入力手順:基本項目から通信方式の設定へ

接続情報は提供元から入手してください。すでにインポート可能な完全なサブスクリプションがある場合は、読み込み結果を使って各項目を照合すると、手入力による抜けを防ぎやすくなります。アプリの買い切り購入に回線プランは含まれません。この記事では、手元にある接続情報の入力・確認方法のみを説明し、接続用の認証情報は提供しません。

  1. 追加画面を開く。Home(ホーム)の右上にある追加ボタンをタップし、Add Serverを開きます。まずTypeでVMessまたはVLESSを選択してください。タイプを変更した後は、画面に表示される項目を改めて確認します。
  2. 接続先を入力する。サーバーのドメイン名またはIPアドレスをAddressに、指定されたポートをPortに入力します。通常、Addressにhttps://、パス、ポート番号を含める必要はありません。TLSを有効にする場合でも、提供元が指定したポートを使い、独断で443に変更しないでください。
  3. 認証情報とプロトコルの設定を入力する。UUIDを対応する認証情報の項目にコピーします。VMessではalterIdと暗号化設定も確認してください。VLESSにはVMessの値を流用しません。項目名はプロトコルや画面の言語によって異なる場合があります。並び順だけで判断せず、それぞれの意味に合わせて入力してください。
  4. 通信方式を選択する。元の設定に従って通信方式を指定します。WebSocketを使う場合は、HostとPathも確認してください。ほかの通信方式では、「すべて埋める」ためにWebSocket専用の項目を追加しないでください。
  5. TLSを確認する。指定された状態に合わせてTLSを有効または無効にし、Server Name / SNI、証明書の検証、その他の指定項目を確認します。Flowなどプロトコルに関するオプションが明示されている場合も、その値をそのまま使い、独自に追加しないでください。
  6. 保存してHomeに戻る。追加した項目のタイプと名前を確認し、その項目を選んでテストします。使える接続設定が一つしかない場合は上書きせず、比較や復元に備えて元の項目を残してください。

TLS、Host、Path:同じドメイン名でも入力先に注意

TLSは単に「暗号化をオンにする」設定ではありません。通常の証明書検証では、証明書が信頼できること、有効期間内であること、接続先の名前と一致することも確認します。AddressにIPアドレスを指定し、証明書がドメイン名に対して発行されている場合、提供元から別途SNIが指定されることがあります。それぞれの役割に従い、IPアドレスをすべての名前項目にコピーしないでください。

確認方法:通信方式の項目とTLSの項目を分けて確認

WebSocketの設定
  • 通信方式をサーバー側と一致させる。
  • 指定されたリクエスト先のホスト名をHostに入力する。プロトコルの接頭辞は付けない。
  • Pathは先頭のスラッシュ、大文字・小文字、既存のクエリパラメーターをそのまま保持する。
  • /wsと/WSは、自由に置き換えられる値ではありません。
TLSのセキュリティ設定
  • ポート番号から推測せず、元の設定どおりにTLSの状態を指定する。
  • 指定されたサーバー名をSNIに入力する。通常、パスやポート番号は含めない。
  • 証明書の検証は有効のままにする。エラーが出た場合は、名前とシステム時刻を確認する。
  • ALPNなどの追加項目は、明示されている場合に限り指定どおりに入力する。

まずどの層で失敗しているかを確認し、該当する項目を変更します。TLSハンドシェイクの失敗は、通常WebSocketのPathを変えても解決しません。

たとえば、手元の設定でPortが443、WebSocketのPathが/wsと指定されている場合、それはその接続設定に限った値です。すべてのVMessやVLESSが同じ組み合わせを使うわけではありません。この記事のポートとパスは項目の説明用であり、そのまま実際に接続できる設定ではありません。

暗号化設定の選び方:指定値を保ち、試しに置き換えない

手入力では、「選択できる」を「好きな値を選べる」と誤解しがちです。VMessの暗号化設定はプロトコルの実装とサーバー側の要件に適合させ、TLSの状態は接続先のサーバー設定に合わせる必要があります。強そう、速そうという理由で選ぶのではなく、元の接続情報を正確に再現してください。

暗号化とTLS:指定値をそのまま使う

推奨

VMessの暗号化方式は指定どおりに入力し、TLSの状態は接続先のサーバー設定に合わせます。VLESSでは通信の保護方式を個別に確認し、VMessの暗号化項目を流用しないでください。

対象:初めての手入力、サブスクリプションのインポート後の確認、接続情報がそろった状態でのトラブル対処

暗号化とTLS:設定を独自に変更する

クライアント側の設定だけを変えても、サーバー側の設定は変わりません。TLSを無効にする、ポートを変更する、プロトコルの暗号化方式を切り替えると、ハンドシェイクや認証のエラーが増えることがあります。通常のトラブル対処としては適していません。

対象:サーバー側の設定変更が明確で、対応する新しい値を入手してから反映する場合のみ

基本原則:誤りを確認できた項目を一度に一つだけ変更する

元の値を記録してから変更し、同じ接続先で再テストします。Type、ポート、TLS、Pathを一度に変更すると、接続が復旧しても原因を特定できません。後でサブスクリプションを更新した際に、設定の食い違いが再発する可能性もあります。

保存後も接続できない場合:失敗した段階ごとに確認

遅延時間が正常でも、接続認証まで完了したとは限りません。テストによっては、接続先ポートへの到達、接続の確立、特定のリクエストへの応答時間だけを測定します。一つの数値だけでは、UUID、TLS、通信方式の設定がすべて正しいとは判断できません。「接続を確立できるか」「証明書エラーが出るか」「特定のWebサイトだけ失敗するか」など、状況を区別できる情報を記録してください。

  1. 新しい項目が選択されているか確認する。Homeで現在の選択項目を確認し、古い設定でテストしていないか確かめます。必要に応じて接続を停止してから再度有効にし、新しいリクエストを送ってください。
  2. 接続がタイムアウトする場合は接続先を確認する。AddressとPortの入力漏れや、値が一緒に入力されていないかを確認します。利用可能であれば、別のネットワークでも再テストしてください。ポートに接続できない段階で、まずUUIDが原因だと決めつけないでください。
  3. TLSエラーが出た場合は名前と時刻を確認する。デバイスのシステム時刻が正確か、SNIが元の設定と一致しているかを確認してください。証明書の期限切れやサーバー側の設定不備は提供元に問い合わせてください。検証を回避する設定を恒久的な対処にしないでください。
  4. ハンドシェイク後すぐ切断される場合は認証情報と通信方式を確認する。UUID、VMessのalterIdと暗号化設定、WebSocketのHostとPathを再確認してください。切断したという状況だけでは原因を特定できないため、確認可能な接続エラー情報も参考にしてください。
  5. 一部のリクエストだけ失敗する場合はルーティングを確認する。Home → Global Routingを開き、現在の選択を確認してください。Proxyはルール判定の影響を一時的に切り分ける際に使えますが、有効な接続項目が必要です。Directでは、その項目を使ったプロキシ接続が成功するか確認できません。テスト後は元のルーティング設定に戻してください。

Configはルールなどの設定を管理する項目であり、誤ったUUIDは修正できません。On Demandは接続を開始する条件を管理するため、欠けているTLS設定を補うことはできません。まず明確なテスト条件で一つの接続項目を動作させ、その後に自動接続やルールによる振り分けを確認してください。複数の要因を同時に変更しないようにします。

手入力でよくある疑問:プロトコルの変更、サブスクリプションの更新、情報のマスキング

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

UUIDが同じでも、変換できるとは限りません。両者はハンドシェイクと必要な設定項目が異なり、サーバー側に対応するプロトコルの接続先が必要です。まず提供元からVLESSの接続情報一式を入手し、独立した項目を新規作成してください。既存項目のTypeだけを変更しないでください。

VLESSにはプロトコル層の暗号化がないため、TLSを手動で必ず有効にする必要がありますか?

まず、元のサーバー構成で使われている通信の保護方式を確認してください。一般的なVLESS設定ではTLSなどを使って通信を保護しますが、クライアント側だけでTLSを有効にしても、通常の接続先がTLS対応に変わるわけではありません。元の設定に保護方式の説明がない場合は、推測せず提供元に確認してください。

サブスクリプションを更新すると、手動で変更した設定が消えるのはなぜですか?

サブスクリプションの更新時に、管理対象の接続項目が再登録されることがあります。まずHomeでサブスクリプションの項目と個別に手入力した項目を区別してください。比較が必要な場合は、元の項目を残したまま独立した項目を新規作成します。サブスクリプションの内容自体に誤りがある場合は、変更と上書きを繰り返すのではなく、提供元に元の接続情報を確認してください。

入力項目を見てもらう場合、どの情報を隠せばよいですか?

UUID全体、サブスクリプションURL内のtoken、パスワード、共有リンク全体を隠してください。Type、通信方式、TLSの有効・無効、エラーの状況、機密情報を伏せた項目構成は共有できます。公開する文章にコピーする前に再確認してください。QRコードにも認証情報がすべて含まれている場合があります。

最後に、Type → AddressとPort → UUID → プロトコル固有の項目 → 通信方式 → TLSと名前に関する項目の順で確認します。元の接続情報がそろっていない場合は、先に不足分を確認してください。別の接続設定のドメイン名、パス、認証情報を組み合わせないでください。サブスクリプションの読み込みと管理についてはサブスクリプションガイドをご覧ください。初めて使う場合は、入門ガイドに沿ってシステムの許可と基本的な接続確認を行ってください。

App Storeで正規アプリを確認