この記事は、接続情報やサブスクリプションをすでにお持ちで、ShadowrocketでVMessとVLESSの設定を確認したい方を対象としています。プロトコル、認証情報、トランスポート、TLSの4つを整理し、Home → Add Serverの順に項目を確認します。UUID、alterId、暗号化オプション、Host、SNIの役割を把握し、接続トラブルが発生した段階から原因を切り分けられます。
1. VMessとVLESSの違い:プロトコルの暗号化とTLSは別のもの
Shadowrocketはサーバー項目に接続情報を保存します。VMessとVLESSはプロトコルの種類であり、Global RoutingのルーティングモードでもTLSのオン・オフを表す名称でもありません。どちらを選ぶかは、利用するサーバーの設定に従って決めます。クライアント側でTypeだけを変更しても、同じ接続先をVMessからVLESSに切り替えることはできません。
VMessにはプロトコル層の認証と、任意のデータ暗号化機能があります。一般的な暗号化オプションはauto、aes-128-gcm、chacha20-poly1305です。VLESS自体には汎用的なデータ暗号化層がありません。一般的な設定で使われるencryption=noneはこの層を指し、外側のTLSまで無効にするという意味ではありません。どちらのプロトコルでも、サーバーの指定に従ってトランスポートとセキュリティ層を設定してください。
| 確認項目 | VMess | VLESS |
|---|---|---|
| 認証情報 | 通常はUUIDを使用。サーバー側の設定と一致させる | 通常はUUIDを使用。サーバー側の設定と一致させる |
| プロトコル層の暗号化 | 暗号化方式を設定可能。接続情報の指定に従う | 一般的なencryptionの値はnone。この層ではデータを暗号化しない |
| alterId | 旧仕様との互換性に関する項目。現在のVMess AEAD設定では通常0 | この項目は使用しない |
| TLSとトランスポート | 個別に確認する。プロトコル名だけでは判断できない | 個別に確認する。プロトコル名だけでは判断できない |
VLESSのflowも、VMessの暗号化方式に代わる項目ではありません。接続情報にflowが明記されている場合は、選択したType、トランスポート、セキュリティ設定がその組み合わせに対応しているか確認し、記載どおりに入力してください。通常のVLESS設定に独自に追加する必要はありません。同じプロトコル名でも、すべての拡張設定を相互に置き換えられるわけではありません。
2. Add Serverの順にAddress、Port、UUIDを確認
Homeの右上にある追加ボタンをタップしてAdd Serverを開き、まずTypeでVMessまたはVLESSを選び、その後に各項目を入力します。表示される項目は種類によって異なり、画面のラベルもアプリの言語やバージョンによって変わることがあります。似た名前の項目を見つけるためにプロトコルの種類を変更せず、それぞれの項目の意味を確認してください。
- Address:利用中のサービスから指定されたドメイン名またはIPアドレスを入力します。通常、独立したアドレス欄には
https://、パス、サブスクリプションのクエリパラメーターは含めません。サブスクリプションURL全体を貼り付けないでください。 - Port:サーバーが実際に待ち受けているポート番号を入力します。例の
443は説明用の値であり、TLSを使うサービスがすべて同じポートを使用するわけではありません。 - UUID:使用中の認証情報を一字ずつコピーし、前後の空白や改行を取り除きます。UUIDの形式に見えても、サーバーでその認証情報が有効とは限りません。
- プロトコル固有の項目:VMessでは暗号化オプションとalterIdを確認します。VLESSでは既存の接続情報にあるencryption、flowなどを確認してください。該当項目が見つからない場合は、メモ欄に値を入れるのではなく、Typeと対応状況を確認します。
- トランスポートとTLS:続けてTransport、TLS、および関連するサブ項目を確認し、すべて確認してから保存します。メモはサーバー項目を識別するためのもので、サーバー認証には使われません。
123e4567-e89b-42d3-a456-426614174000はUUIDの文字列形式を示す例であり、実際に使える認証情報ではありません。UUIDとサブスクリプションURL内のtokenも別のものです。UUIDはサーバー認証情報で、tokenはサブスクリプション全体の取得に使われる場合があります。トラブルシューティングの際は、どちらの実際の値も公開しないでください。
3. VMessのalterIdと暗号化オプションの設定方法
alterIdはVMessの旧仕様との互換性に関する項目です。一部の共有データでは同じ項目をaidと表記します。現在のVMess AEAD設定では通常0を使用します。ここでの0は認証を無効にする値でも、TLSを無効にする値でもありません。古い接続情報に0以外の値が含まれている場合は、互換性について元のサービス提供元に確認してください。速度を上げるための数値として任意に変更しないでください。
- 接続情報がautoの場合:元の値を選択し、実装側で適切な暗号化方式が使われるようにします。デバイスの機種だけを理由に別の値へ変更しないでください。
- 接続情報に暗号化アルゴリズムが明記されている場合:対応状況を確認し、指定された値を入力します。暗号化オプションはVMessのプロトコル層でのデータ処理に関するもので、証明書のドメイン名照合とは関係ありません。
- noneやzeroが表示される場合:autoの汎用的な代わりとして扱わないでください。それぞれ意味と適用条件が異なるため、サーバー側の設定と合わせて確認が必要です。
- インポート後にalterIdの入力欄がない場合:まずインポートした設定を維持し、元の接続情報と現在の対応状況を確認してください。UUID、Address、Portに数値を付け足さないでください。
VMessの認証は時刻にも関係します。接続情報が完全に一致しているのに認証エラーが続く場合は、Appleデバイスの日付と時刻が正確か、システムで自動設定が有効になっているか確認してください。時刻の修正で解消できるのはこの要因に限られ、誤ったUUID、無効な認証情報、到達できないサーバーポートは修正できません。
4. Transport、TLS、Host、SNIの役割
Transportは、TCPやWebSocketなど、プロトコルデータをどのように運ぶかを決めます。TLSは安全な接続と証明書の検証を担います。Addressはネットワーク接続先のアドレス、SNIはTLSハンドシェイクで使われるサーバー名、WebSocketのHostはHTTPリクエストヘッダーの項目です。設定によっては値が同じ場合も異なる場合もあるため、互いの欄に代わりに入力しないでください。
| 項目またはパラメーター | 設定の根拠 | 誤入力時によくある症状 |
|---|---|---|
| Transport | WebSocketなど、サーバー側で指定されたトランスポートと一致させる | ポートには到達できるが、その後のプロトコル接続を確立できない |
| Path | 例:/edge。先頭のスラッシュ、大文字・小文字、必要なクエリパラメーターをそのまま保持 | WebSocketのハンドシェイクに失敗し、HTTP 404が返ることがある |
| Host | edge.example.comなど、接続先サービスが指定するHTTP Host | 誤ったサイトにリクエストが送られ、403または404が返ることがある |
| TLS / SNI | サービスの指定に従ってTLSを有効にし、指定されたサーバー名を入力 | 証明書の名前が一致しない、またはTLSハンドシェイクに失敗 |
表にあるドメイン名とパスは説明用であり、接続先ではありません。HTTPステータスコードも原因を探る手がかりにすぎず、403や404だけで誤りの箇所を特定することはできません。リバースプロキシの設定でも同じ結果になる場合があります。サービス側のHost、Pathの指定と、クライアントの現在値を一つずつ照合してください。
接続情報の指定に従ってTLSを有効にし、証明書を検証する
推奨サービスでTLSが明示的に必要な場合は、TLSを有効にし、正しいSNIを入力したうえで証明書検証を有効にしてください。証明書エラーが出た場合は、検証を無効にするのではなく、デバイスの時刻、ドメイン名、サーバー証明書を確認します。
対象:接続情報でTLSの使用が明示されているVMessまたはVLESS接続
接続情報の指定に従ってTLSを無効にする
サーバー側でTLSを使わないと明示されている場合に限り、TLSを無効にします。クライアント側だけでTLSを有効にするとハンドシェイクが一致しません。また、VLESS自体にはデータ暗号化機能がないため、通常の非TLS接続を暗号化接続と同等に扱うことはできません。
対象:サービス提供元が明示した管理下のテスト、または既定のセキュリティ層を使用するその他の状況
要点:TLSエラーではUUIDを変更する前に名前を確認
エラーが証明書の検証段階で発生している場合は、まずSNI、証明書が対象とするドメイン名、デバイスの時刻を照合します。UUIDとトランスポートの設定は変えずに修正してから再テストすると、どの項目が影響したのか判断できます。
5. 保存後の確認方法:接続の問題とルーティングの問題を切り分ける
サーバーを保存しただけでは設定の登録が完了した状態であり、その項目が現在の接続に使われているとは限りません。Homeで対象のサーバーを選び、現在使用する項目に設定してから接続スイッチをオンにします。初回接続時は、システムの案内に従ってVPN構成の追加を許可してください。その後Connectivity Testを実行し、対象項目、Global Routingのモード、エラーメッセージを記録します。
- まず基本的な到達性を確認:タイムアウトが表示されたら、Address、Port、現在のネットワークを確認します。ポートに接続できない場合、UUIDやWebSocket Pathを何度変更しても通常は解決しません。
- 次にセキュリティと認証を確認:証明書エラーではTLSとSNIを、認証エラーではUUID、VMessのalterId、デバイスの時刻を確認します。エラー名は実際の表示に従ってください。
- 続いてアプリケーション層のトランスポートを確認:TCP接続は確立するのにWebSocket接続に失敗する場合は、Transport、Host、Pathを照合します。遅延の数値が表示されても、プロキシ経路全体が使えるとは限りません。
- 最後にルーティングを確認:Global RoutingがDirectの場合、対象の通信はプロキシを経由しません。Configでは設定されたルールに従って接続が処理されます。ルールの影響を切り分けるには、一時的にProxyを使って同じ接続先を比較テストし、終了後に元のモードへ戻してください。
Configモードでは、DOMAIN-SUFFIX、GEOIP、IP-CIDR、FINALなどのルールにより、接続に適用するポリシーが決まります。これらのルールでプロトコル認証の失敗を修正することはできません。たとえばDOMAIN-SUFFIX,example.com,PROXYは、該当するドメインのサフィックスに一致した接続をPROXYポリシーに渡す設定です。そのポリシーで実際に選択されている項目が編集中のものと異なる場合、変更した設定は現在のリクエストに使われません。
テストを手動で行う場合は、Settings → On Demandの現在の設定も確認し、自動接続によって状況の確認が妨げられないようにしてください。トラブルシューティング中は一度に変更する項目を一つにし、サーバーや重要な設定を変更した後は再接続します。プロトコル、TLS、ルール、DNSを同時に変更すると、復旧しても原因を特定しにくくなります。
6. UUID、サブスクリプションのインポート、プロトコル切り替えに関するよくある質問
同じUUIDならVMessからVLESSにそのまま変更できますか?
UUIDが同じという理由だけで切り替えることはできません。まずサーバー側にVLESSの接続先が用意されていることを確認します。次にHome → Add Serverから該当する種類の項目を新規作成し、その接続先のAddress、Port、UUID、トランスポート、セキュリティ情報を入力してください。比較できるよう元の項目は残し、唯一使える設定を上書きしないでください。
VLESSのencryptionがnoneなのに、なぜTLSを有効にするのですか?
それぞれ役割の階層が異なります。encryption=noneは、VLESS自体にこの層のデータ暗号化機能がないことを示します。サービスでTLSが必要な場合は、サーバー名を正しく入力し、項目でTLSを有効にしてください。noneを理由にTLSを自動的に無効にしないでください。
サブスクリプションにサーバー項目がある場合、1つずつ手入力する必要はありますか?
通常は必要ありません。Homeの追加メニューからSubscribeを選び、サブスクリプションURL全体をURL欄に入力して保存し、更新してください。インポートしたサーバー項目を開けば各設定を確認できます。サブスクリプションURLは項目を取得するためのものであり、VMessやVLESSのAddressではありません。
Hostを変更したのに、サブスクリプション更新後に元へ戻るのはなぜですか?
サブスクリプションの項目はサブスクリプションの内容によって管理されているため、更新時にローカルでの変更が上書きされる場合があります。まず比較用に必要な設定を保存し、トラブルシューティング用の手動テスト項目を別に作成してください。長期的に修正する場合は、元のサブスクリプション内容を確認します。一時的なローカル変更を、サブスクリプション側にも反映されたものと考えないでください。
どちらのプロトコルもインポートできる場合、どちらを残せばよいですか?
まず認証、TLS、トランスポートの設定をそれぞれ確認します。そのうえで同じネットワーク、同じ接続先、同じルーティングモードでテストしてください。既存サービスの設定と一致し、テストに成功した項目を残します。プロトコル名だけでは遅延やスループットは判断できず、実際の接続確認に代わるものでもありません。
この記事は、利用者が自身のサービスとサブスクリプションをすでに持っていることを前提に、設定項目と操作方法を解説しています。トラブルの報告時には、プロトコルの種類、トランスポート、TLSの有効・無効、エラーが発生した段階、値を伏せた項目の構成を伝えると役立ちます。UUID、サブスクリプションURL全体、その他の認証情報は公開しないでください。