Shadowrocketは、この記事で取り上げる7種類の接続プロトコルに対応しています。ただし、既存サーバーのTypeを切り替えて別のプロトコルに変更することはできません。利用中のサービスから取得した設定情報やサブスクリプションをお持ちの方は、まず表でプロトコルを確認し、認証・トランスポート・TLSの3層に分けて各項目を照合してください。そのうえで、接続の問題とルールの問題を切り分けます。7種類というのはこの記事での分類であり、アプリで選べるTypeの総数ではありません。
7種類のプロトコルとAdd ServerのType
既存の設定に記載されたプロトコルを確認し、Home → 右上の「+」→ Add Server → Typeで該当する種類を選びます。ポート番号や名称だけで判断しないでください。同じ443番ポートでも、使用するプロトコルが異なる場合や、TCPとUDPを使い分ける場合があります。Typeはクライアントとサーバーの通信方式を決めるため、サーバー側の設定と一致させる必要があります。
| プロトコル | 対応するType | 主な特徴 | 最初に確認する項目 |
|---|---|---|---|
| Shadowsocks | Shadowsocks |
パスワードと指定された暗号化方式を使ってプロキシ接続を確立します。アルゴリズムは両端で一致させる必要があります。 | Address、Port、Password、Method、および既存の設定で指定されたプラグイン項目。 |
| VMess | VMess |
UUIDでユーザーを識別し、複数のトランスポート方式と組み合わせて使用できます。プロトコル認証とTLSは別の層です。 | UUID、暗号化オプション、トランスポート方式、およびTLS、Host、Pathなどの関連項目。 |
| VLESS | VLESS |
UUIDで認証します。プロトコル自体はペイロードを暗号化しないため、通信経路の保護は実際のトランスポート設定によります。 | UUID、トランスポート方式、TLS、および設定で指定されたその他のハンドシェイク項目。 |
| Trojan | Trojan |
通常はTLSで接続し、Passwordで認証します。 | Password、Port、TLSのサービス名、証明書検証に関する設定。 |
| HTTP / SOCKS5 | HTTP / SOCKS5 |
異なる2種類のプロキシプロトコルです。サーバーによってはユーザー名とパスワードが必要です。Typeは相互に置き換えられません。 | サーバーが実際に使用するプロトコル、Address、Port、認証の要否、およびTLSが明示されているか。 |
| WireGuard | WireGuard |
鍵とピアの設定を使ってUDPベースのトンネルを構築します。一般的なプロキシのパスワード方式は使用しません。 | ローカルの秘密鍵、ピアの公開鍵、Endpoint、トンネルアドレス、ルーティング範囲。 |
| Hysteria2 | Hysteria2 |
QUICをベースとし、UDPを使用します。認証、TLS、任意の難読化パラメーターを一致させる必要があります。 | Address、Port、認証情報、TLSのサービス名、およびUDP経路が利用可能かどうか。 |
HTTPとSOCKS5は一覧で把握しやすいように1つの分類にまとめていますが、Typeではそれぞれ別に選択してください。Hysteria2も、名前が似ている別のプロトコルで代用することはできません。表示される項目や選択可能な組み合わせは、アプリ内の該当Typeの編集画面で確認してください。
結論:設定情報に合わせてTypeを選ぶ
既存の設定にVLESSと明記されている場合は、まずVLESSを選び、対応するトランスポート設定を確認してください。なじみのある別のプロトコル名に置き換えたり、例として示した443番をすべてのサーバーで固定の値と考えたりしないでください。
認証・トランスポート・TLSを分けて確認
プロトコル名が示すのは接続の一部にすぎません。認証は「どの認証情報を使うか」、トランスポートは「データをどのように運ぶか」を示し、TLS設定はハンドシェイクや証明書の検証に関わります。この3層を分けて確認すれば、「UUIDが正しいのに接続できない」「アドレスは名前解決できるのにハンドシェイクに失敗する」といった場合に、無関係な項目を何度も変更せずに済みます。
- 認証層:ShadowsocksのPasswordには正しいMethodが必要です。VMessとVLESSのUUIDは省略せずにコピーしてください。TrojanのPasswordはUUIDではありません。また、WireGuardの秘密鍵をパスワード欄に入力することもできません。どれも文字列として表示されても、互いに置き換えることはできません。
- トランスポート層:既存の設定でWebSocketが指定されている場合は、対応するトランスポートの選択肢、Host、Pathも確認してください。Pathの先頭のスラッシュや大文字・小文字は、元の値をそのまま保持します。Address、Port、UUIDだけを入力して、ほかの項目を省略することはできません。
- TLS層:接続先にはIPアドレスとドメイン名のどちらも使えます。SNIはTLSハンドシェイクでサーバー名を示すためのもので、接続先アドレスと常に同じとは限りません。既存の設定に合わせて入力してください。WebSocketのHostとTLSのSNIは別の層に属するため、必ず同じ値だとは限りません。
- ネットワーク層:WireGuardとHysteria2はUDPを使用します。TCP接続が利用できても、同じネットワーク上でUDP経路も利用できるとは限りません。該当するプロトコルでの実際の接続結果を確認してください。
VLESS自体がペイロードを暗号化しないからといって、すべてのVLESS接続が平文で通信するわけではありません。実際の通信経路はTLSなどの設定によります。一方、HTTPやSOCKS5という表示だけで、通信全体が暗号化されていると判断することもできません。プロトコル名だけでなく、実際に有効なトランスポートとセキュリティ設定を確認してください。
既存の設定情報を使った追加と接続確認
手動追加は各項目を個別に照合するときに、サブスクリプションの読み込みはお手元の設定をまとめて登録するときに便利です。どちらの方法でも、登録内容をサーバーの実際の設定に合わせる必要があります。この記事では、すでにお持ちの設定の使い方を説明します。サーバー、サブスクリプション、サービスの提供・販売・推奨は行いません。
-
設定情報を確認する
まずプロトコル、サーバーアドレス、ポート、認証情報を確認し、その後TLS、トランスポート、その他の追加項目を整理します。ポートには既存の設定に記載された値を使ってください。443番を初期値と決めつけないでください。
-
Typeを選択する
Home → 右上の「+」→ Add Server → Typeを開き、既存の設定と完全に一致するプロトコルを選択してから、編集画面に戻って該当項目を入力します。
-
入力して保存する
Address、Port、認証項目を順に入力します。TLSや追加のトランスポート設定が必要な場合は、該当する項目も確認してください。保存後はHomeに戻り、追加した項目を選択します。
-
接続を確認する
HomeでGlobal Routingを確認し、Connectivity Testを実行して、明確に指定したテスト先を開きます。テスト先、ネットワーク環境、エラーメッセージを記録し、一度に複数の項目を変更しないようにしてください。
サブスクリプションリンクをお持ちの場合は、Home → 右上の「+」→ Type → Subscribeを開き、ご自身のサブスクリプションURLを入力して保存します。その後、Homeで該当するサブスクリプションを更新してください。更新後は、現在選択されている項目を改めて確認します。リモート設定によってアドレス、ポート、認証情報が変更される場合があります。個別項目の編集とサブスクリプションの更新は別の操作です。また、ローカルでの変更が次回の更新で上書きされることもあります。
- 保存できたことは項目が記録されたことを示すだけで、サーバーの認証が完了したことを意味しません。
- 遅延テストの結果は、該当するテスト方法で測定した結果を示すもので、すべてのWebサイトにアクセスできることを意味しません。
- 設定を変更する場合は、まず元の情報を残し、一度に1項目だけ変更してください。これにより、変化の原因を確認しやすくなります。
プロトコルとGlobal Routingは役割が異なる
プロトコルは接続の確立方法を決め、Global Routingはリクエストを直結またはプロキシのどのポリシーで処理するかを決めます。Hysteria2を選択しても、すべてのリクエストがHysteria2を使うわけではありません。HomeのGlobal RoutingにはProxy、Direct、Config、Sceneがあります。Sceneはシーン設定に使うもので、8種類目の接続プロトコルでも、自動速度測定の結果でもありません。
Config
おすすめ現在有効なConfigのルールに従ってリクエストを処理します。ルールに一致した後の動作は指定されたポリシーによって異なります。先行するルールに一致しなかったリクエストは、FINALなどのフォールバック設定で処理されるため、すべて直結するとは限りません。
適した用途:Configのルールを確認した後の日常利用
Proxy
引き受けたリクエストをプロキシ経由で処理します。Configでの結果と比較し、ルールによる振り分けの問題を切り分ける際に使えます。ただし、サーバー認証やネットワーク条件を回避することはできません。
適した用途:プロキシ接続とルール処理の結果を一時的に比較
Direct
リクエストを直結で処理します。この状態でWebページを開けても、選択したプロキシ項目が利用可能だとは証明できません。プロトコル接続を確認する際は、どの経路をテストしているかを明確にしてください。
適した用途:現在のネットワークでの直結アクセスを比較
Configでは、DOMAIN-SUFFIXはドメインのサフィックス、IP-CIDRはIPアドレスの範囲、GEOIPはIP地理データベースの分類に基づいて照合します。FINALは先行するルールに一致しなかったリクエストを処理します。これらはルールのキーワードであり、Add Serverで選ぶプロトコルの種類ではありません。確認時は、まずリクエストがどのルールに一致したかを調べ、次にそのポリシーでどの接続項目が使われているかを確認してください。
Settings → On Demandでは、条件に応じて接続を開始する動作を設定できますが、あるプロトコルを別のプロトコルに変換する機能ではありません。原因を調べる間はOn Demandが有効かどうかを記録し、自動接続や再接続をプロトコルの切り替えと誤認しないようにしてください。設定場所はOn Demandの設定方法をご覧ください。
よくある質問と確認手順
以下の問題は、すでにお持ちの設定情報をもとに確認してください。ほかの設定は変えずにType、認証、トランスポートを見直し、その後Global Routingと対象のリクエストを確認します。原因を特定する代わりに、プロトコルを何度も切り替えないでください。
同じアドレスとポートで、別のプロトコルに変更できますか?
クライアントでTypeを変更するだけでは、プロトコルを変換できません。Homeから該当項目の編集画面を開き、Typeが既存の設定と一致しているか確認してください。サーバーが別のプロトコルも実際に提供している場合に限り、そのプロトコルに対応した設定を使用できます。アドレスとポートが同じでも、サーバーが2種類のプロトコルに対応しているとは限りません。
VMessとVLESSはどちらもUUIDを使うのに、なぜそのまま置き換えられないのですか?
UUIDは認証情報の形式であり、ハンドシェイクのプロトコルが同じという意味ではありません。まずTypeを確認し、次にトランスポート方式、TLS、Pathを確認してください。元の設定がVLESSなら、UUIDをVMessにコピーして試し続けないでください。元のTypeに戻り、不足している項目を確認してください。
Hysteria2がWi-Fiでは失敗し、別のネットワークでは接続できるのはなぜですか?
同じ項目と同じテスト先を使って2つのネットワークを比較し、エラーメッセージを記録してください。Hysteria2はUDPを使用するため、ネットワーク経路の違いが接続に影響する場合があります。続いてPort、認証情報、SNI、任意の難読化パラメーターを確認します。この現象だけでサーバー障害と断定したり、特定のプロトコルが常に速いと判断したりすることはできません。
サブスクリプションの更新後、以前は使えていた項目に接続できなくなりました。
Homeで意図した項目が選択されていることを確認し、編集画面で更新後のType、Address、Port、認証情報を確認してください。古いパスワードを新しい項目にそのまま入力しないでください。手元にある最新の設定情報と照合し、Global Routingも変更されていないか確認します。
接続済みと表示されていれば、プロトコル設定はすべて正しいですか?
そうとは限りません。システムの接続状態、サーバー認証、接続先へのアクセスはそれぞれ別の段階です。Homeに戻ってGlobal Routingを確認し、Connectivity Testを実行してから、具体的な接続先を検証してください。想定した項目を経由したリクエストが実際に結果を返した場合に限り、その経路が今回利用できたと判断できます。すべてのネットワークや接続先で利用できるという意味ではありません。
選択の基準はプロトコル名の順番ではなく、既存のサーバー設定との互換性です。各項目の意味を確認するにはプロトコル用語集をご覧ください。現在の設定ファイルや診断の入口を確認するにはConfigの設定方法をご覧ください。プロトコル、トランスポート、ルールを分けて記録しておくと、次回の更新や問題の切り分けに役立ちます。