この記事は、自分で用意したサービスと設定情報があり、ShadowrocketでVMessまたはVLESSを追加する方向けです。プロトコル、通信方式、TLSの3つを区別し、Address、Port、UUID、Host、Pathの順に確認します。設定をそのまま転記する項目と、プロトコル名だけでは判断できない項目が分かります。接続先やサブスクリプションは提供していません。
VMessとVLESS:認証方式は似ていても、暗号化の仕組みは異なる
VMessとVLESSは、クライアントとサーバー間で使うプロキシプロトコルです。サーバーアドレスや通信方式ではありません。どちらも通常UUIDでユーザーを識別しますが、プロトコルのハンドシェイクは異なります。既存のVMess設定でTypeだけをVLESSに変更しても接続できません。サーバー側に該当プロトコルの接続口が必要です。
VMessはプロトコル層でデータを暗号化でき、具体的な方式は設定によって異なります。VLESS自体はこの層のデータ暗号化を行わず、通常はTLSなどのセキュリティ層と組み合わせます。そのため、「VLESSにはプロトコル層の暗号化がない」ことは「VLESSの通信は必ず平文」という意味ではなく、クライアント側のTLSを無効にしてよい理由にもなりません。
| 確認項目 | VMess | VLESS |
|---|---|---|
| ユーザー認証 | 通常はUUIDを使用。サーバー側の登録内容と一致させる | 通常はUUIDを使用。サーバー側の登録内容と一致させる |
| プロトコル層の暗号化 | 対応。方式は設定で指定 | この層でのデータ暗号化は行わない |
| TLS | 有効にするかどうかはサーバーの接続口による | 通常はセキュリティ層と併用。設定内容を確認 |
| 通信方式 | TCPやWebSocketなど、サーバーの設定に合わせる | 同様にサーバーの設定に合わせる。プロトコル名からは判断できない |
| 追加パラメーター | 設定にAlterIdがある場合は、その値を変更せず確認 | Flowが設定されている場合は、対応条件を確認 |
判断のポイント:サーバーの接続口を確認してからTypeを選ぶ
設定情報を確認し、VMessとVLESSのどちらが明記されているか確かめます。別のプロトコルを使う場合は、サーバー側にその接続口が別途用意されているときに限り、別の設定を作成してください。Typeの変更で「プロトコルをアップグレード」しようとしないでください。
プロトコル名だけでは、接続速度は判断できません。通信経路、サーバーの負荷、通信設定、証明書の状態などが影響します。問題を調べるときは元の設定を残し、別のテスト用設定を作成しましょう。同じ設定の複数項目を一度に変更するより、原因を特定しやすくなります。
Add Server:まずAddress、Port、UUIDを入力
Homeの右上にある追加ボタンをタップしてAdd Serverを開き、まずTypeを選んでから、選択したプロトコルに応じた項目を入力します。Typeによって表示される項目は異なります。ここでいうUUIDはサービス提供元から渡されたユーザー識別子です。フォームではUser IDなどの項目名で表示される場合もあります。備考やサブスクリプションのアクセストークンと間違えないでください。
- Addressを確認。サーバーのドメイン名またはIPアドレスを入力します。アドレスとポートが別々に案内されている場合は、それぞれの欄に入力してください。アドレスの前にWebページのプロトコルを付けたり、WebSocketのPathを末尾に追加したりしないでください。
- Portを確認。サービス提供元が指定した整数のポート番号を入力します。たとえば設定に
443とあれば、443を入力します。この番号はTLS接続でよく使われますが、ポート番号だけでは、その接続口でTLSが有効かどうかは分かりません。 - UUIDを確認。内容をすべてコピーし、前後の空白や文字の抜け、改行がないか確認します。UUIDは一般に、ハイフンで区切られた32桁の16進数で表されます。サーバーから割り当てられた値を、自分で生成したものに置き換えないでください。
- プロトコル固有の項目を確認。VMessの暗号化関連オプションやAlterId、VLESSのFlowなどは、手元の設定情報に従ってください。指定のない項目を、別の設定からそのままコピーしないでください。
- 保存してHomeに戻る。SERVERリストに新しい設定が表示され、選択されていることを確認します。リストに表示された時点で保存は完了していますが、接続に成功したとは限りません。
自分のサブスクリプションから設定を取り込んだ場合は、手入力で同じ設定を作る前に、取り込まれた内容を確認してください。サブスクリプションには通信方式やセキュリティのパラメーターも含まれる場合があります。アドレス、ポート、UUIDだけをコピーすると、接続の成立に必要な項目が抜けることがあります。サブスクリプションから作成された設定を手動で編集する前に、別のコピーを保存しておきましょう。更新時に変更が上書きされるのを防げます。
通信方式:TCP、WebSocketとHost・Pathの関係
通信方式は、プロキシデータをどのように伝送するかを決めるもので、UUID認証を置き換えるものではありません。VMessとVLESSはどちらも複数の通信方式を利用でき、実際の選択はサーバー設定と現在のクライアントの対応状況によります。WebSocketを選んだ場合、HostとPathはリクエストに関する項目として使われます。すべての接続で必要な共通項目ではありません。
| 項目 | 役割 | よくある入力ミス |
|---|---|---|
| Transport | サーバーと同じ通信方式を選ぶ | サーバー側はWebSocketなのに、クライアント側はTCPを選択している |
| Host | WebSocketハンドシェイクで使うHTTP Host。サーバー側の振り分けに使われる場合がある | サーバーのIPアドレスをHostに設定し、元のドメイン名を上書きしてしまう |
| Path | WebSocketリクエストのパス。例:/ws | 先頭のスラッシュを付け忘れる、または大文字・小文字を変更する |
| SNI | TLSハンドシェイクで使うサーバー名 | Hostを入力すればSNIも自動で同じ値になると思い込む |
たとえば設定情報に、Addressがedge.example.com、Portが443、TransportがWebSocket、Hostがgateway.example.com、Pathが/wsと記載されているとします。これは各項目の関係を示す例であり、利用可能な接続先ではありません。AddressとHostが異なっていても、必ずしも誤りではありません。見た目をそろえるために、両方を同じ値に変更しないでください。
- Pathは大文字・小文字、末尾のスラッシュ、設定に明記されたクエリ部分も含め、元の値をそのままコピーします。
- HostにはWebページのURL全体を入力しません。フォームでHostとPathが分かれている場合は、それぞれの欄に入力してください。
- サービス提供元から別の通信方式を指定された場合は、その方式専用の項目を確認し、WebSocketのHostやPathを当てはめないでください。
TLS:接続口の要件に従って有効化し、ポート番号だけで判断しない
TLSは通信のセキュリティ層を担います。有効にした後は、サーバー名と証明書の検証も確認してください。スイッチがオンかどうかだけでは不十分です。Addressには接続先のIPアドレスまたはドメイン名を指定できます。SNIはTLSハンドシェイクで使われる名前です。ドメイン名の検証が必要な設定では、案内されたドメイン名を入力します。
ここでは同じクライアント内でのセキュリティ設定の違いを比較します。VMessとVLESSの優劣を示すものではありません。推奨設定は、サーバーがTLS接続口を明確に提供している場合に限ります。別のセキュリティ方式を使う設定では、その方式のパラメーターを個別に確認してください。
TLS接続口:検証を有効にしてSNIを確認
推奨サーバーがTLSを要求する場合はTLSを有効にし、設定情報に従ってSNIを入力して、証明書の検証を有効にします。証明書エラーが発生したら、まずドメイン名、システム時刻、サーバー証明書を確認してください。検証を無効にすることを通常の対処方法にしないでください。
適用条件:サービス提供元がTLS接続口を明示しており、証明書が指定された名前と一致する
非TLS接続口:明示された設定に従う
TLSを使わないと設定情報に明記されている場合に限り、その接続口の要件に従って無効にしてください。VMessのプロトコル層の暗号化とTLSは別の層です。VLESSも、プロトコル名だけでは接続全体の安全性を判断できません。
適用条件:設定情報に非TLS接続口が明記され、セキュリティ層の構成も説明されている
判断のポイント:証明書エラーでは検証を緩めず、まず名前を確認
設定情報に記載されたSNIと入力値を一字ずつ照合し、システム設定で日付と時刻も確認します。名前と時刻に問題がないのに失敗する場合は、サービス提供元にサーバー証明書の状態を確認してください。
HostとSNIに同じドメイン名を入力することはよくありますが、両者は同じものではありません。HostはHTTPリクエスト、SNIはTLSハンドシェイクで使われます。エラーが発生する段階も異なります。TLSが成立しなければ、その後のWebSocketリクエストは完了できません。
保存後に接続できない場合:接続の段階ごとに確認
Homeのスイッチがオンなら、端末側のVPN設定が動作を開始したことを示しますが、接続先での認証が完了したとは限りません。Connectivity Testに遅延が表示されても、該当テストで結果が得られたことを示すだけです。UUID、WebSocketハンドシェイク、すべてのWebページへの接続が正常とは限りません。以下の手順を順番に確認し、一度に変更するパラメーターは一つのまとまりに絞ってください。
- 選択中の設定を確認。Homeに戻り、SERVERで現在選択されている設定を確認します。新しい設定を編集したのに、古い設定で接続しているケースを防げます。
- 基本的な接続性を確認。Connectivity Testを実行します。タイムアウトする場合は、まずAddress、Port、現在のネットワークを確認してください。タイムアウトだけでUUIDの誤りとは判断できません。
- 認証と通信方式を確認。Type、UUID、VMessの追加項目またはVLESSのFlowを再確認し、Transport、Host、Pathも確認します。プロトコルと通信方式を同時に切り替えないでください。
- TLSを確認。TLSの設定、SNI、証明書関連のエラーを確認します。端末の時刻が正しくないと、検証や認証に影響する場合があります。まず正しい時刻に設定してください。
- ルールの影響を切り分ける。Home → Global Routingで一時的にProxyを選択し、選択中の設定を使って同じ接続先をテストします。Proxyは、このテストの通信をできるだけプロキシ経由にする設定です。テスト後は元のモードに戻してください。サーバー側の設定項目の誤りは修正されません。
- 通常の設定に戻す。Proxyでは接続でき、Configでは失敗する場合は、Configで現在の設定とルールの振り分け先を確認し、DirectまたはREJECTに該当していないか調べます。ドメイン名でのアクセスだけが失敗する場合は、UUIDを無作為に変更せず、DNSを確認してください。
Global RoutingのDirectは、接続先のプロキシが動作しているかを確認する用途には使えません。Configは選択中の設定に従って接続を処理します。Sceneでは、現在のシーンで実際に使われているポリシーも確認してください。接続が自動で再開する場合は、Settings → On Demandで自動接続の条件を確認します。On Demandは接続を開始する条件を制御する機能であり、VMessやVLESSの設定項目を修正するものではありません。
よくある質問:プロトコル、ポート、サブスクリプション更新
同じUUIDなのに、VMessでは接続できてVLESSでは接続できないのはなぜ?
UUIDは認証情報の一部にすぎず、2つのプロトコルではハンドシェイクも異なります。Add Serverに戻り、Typeを元の設定で指定されている値に戻してください。VLESSを使う必要がある場合は、VLESS用の接続口が別途あるか、対応するPort、通信方式、セキュリティのパラメーターをサービス提供元に確認してください。
Portが443なら、TLSを必ず有効にする必要がありますか?
ポート番号はセキュリティ設定を示すものではありません。現在の設定を開き、元の設定情報に従ってPortとTLSを個別に確認してください。TLSを有効にするのは、設定情報に明記されている場合に限ります。別の設定からポート番号とTLSのスイッチだけを組み合わせて、新しい設定を作らないでください。
UUIDが同じに見えるのに認証に失敗します。まず何を確認すればよいですか?
まずUUID全体をコピーし直し、前後の空白を削除してから、Typeとプロトコル固有の項目を確認します。次に端末の時刻とアカウントの状態を確認してください。有効期限や利用停止の状況はサービス提供元に確認が必要です。ローカルのフォームだけでは判断できません。
手動で直した設定が、サブスクリプション更新後に元に戻るのはなぜですか?
サブスクリプションを更新すると、リモート側の内容に基づいて設定が再作成または上書きされることがあります。比較用に手動で作成した設定を別に残してから、自分のサブスクリプションを更新し、項目ごとの差分を確認してください。リモート側の設定に誤りが続く場合は、機密情報を伏せた差分をサービス提供元に伝えてください。設定全体を何度も上書きしないでください。
最終確認では、意図した設定が選択されていること、プロトコルがサーバーと一致していること、通信方式とTLSの項目が合っていることを確認し、明示したGlobal Routingのモードで実際の接続先にアクセスできるかテストします。保存できたこと、スイッチがオンであること、テストで遅延が表示されることは、それぞれ異なる段階を示しており、互いの代わりにはなりません。基本操作は使い方ガイドをご覧ください。DNSやルールの振り分けについては、トラブル対処もご確認ください。