ShadowrocketのGlobal Routingでは、ルールに応じた振り分け、すべてプロキシ経由、すべて直接接続のいずれかを選べます。利用できるサブスクリプションや設定をすでにお持ちで、どのモードを選べばよいか迷っている方向けに、Config / Proxy / Directの違い、同じ接続先を使った比較テスト、通常設定への戻し方を説明します。モードの切り替えはプロトコルの変更ではなく、有効なサーバー設定の代わりにもなりません。
Global Routingで設定できること・できないこと
Home → Global Routingで選ぶモードによって、Shadowrocketの処理対象となる接続の出口が決まります。Configは現在の設定にあるルールに従って処理し、Proxyは対象の接続を現在選択中のプロキシにまとめて渡し、Directは直接接続します。ここでいう「すべて」はルーティングの判断を指し、端末上のあらゆるシステム通信が必ず同じ経路を通るという意味ではありません。
ルーティングモードとサーバーのプロトコルは別の要素です。利用中のサーバーがShadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuardのいずれでも、Config / Proxy / Directの基本的な意味は変わりません。Proxyに切り替えてもサーバーアドレス、ポート、認証情報は自動修正されず、Configに戻しても用途に合ったルールが自動作成されるわけではありません。
Config / Proxy / Directを選ぶ目安
普段使いにConfigを選ぶ前提は、その動作を理解した設定が有効になっていることです。ルールによる振り分けでは、すべての接続を同じ出口に固定せず、接続先ごとに異なる処理を指定できます。ルールにはDIRECTやプロキシのポリシーなどを設定できます。先行するルールに一致しない接続の行き先はFINALで決まり、「残りはすべて直接接続」とは限りません。
Config
おすすめ現在の設定にあるルールとポリシーに従って出口を選びます。ルールの順序、ポリシーの参照先、FINALを確認してください。Configだけで失敗する場合は、ルールや設定との関連付けが原因の可能性があります。
適しているケース:理解できるルール設定があり、日常的に通信を振り分けたい場合。
Proxy
処理対象の接続を、現在選択中のプロキシにまとめて送ります。通常の振り分けルールごとに出口を決めることはありません。現在のサーバーやポリシーが利用できない場合は、Proxyにしても接続に失敗することがあります。
適しているケース:プロキシ経由の出口を一時的に確認するときや、Configでルールに一致するかを比較して調べるとき。
Direct
処理対象の接続を直接接続します。変更されるのはルーティング方法であり、接続スイッチを切ったり、システムのVPN設定を削除したりする操作ではありません。また、現在のネットワークにあるアクセス制限を回避するものでもありません。
適しているケース:現在のネットワークで直接接続できるかを比較する場合や、ローカルの接続先を一時的に確認する場合。
Proxyにすれば必ずConfigより速くなるわけではなく、Directでも遅延が低くなるとは限りません。速度は現在のネットワーク、接続先のサービス、選択中の出口、DNSの結果、接続の再利用などに左右されます。具体的な問題がなければ、「全体」を意味する名前だけを理由にモードを切り替える必要はありません。まずは用途に合ったルーティングを選びましょう。
決まった手順でモードを切り替える
開始前に、現在のモード、選択中のサーバーまたはポリシー、Configで使用中の設定を記録します。利用者自身がサービス提供元とサブスクリプションを用意している必要があります。Homeに利用可能なサーバーがない場合は、先に既存の情報を使い方ガイドに従って読み込んでから比較してください。サブスクリプションの更新、サーバーの切り替え、ルールの変更を同じテストで行わず、Global Routingだけを変更します。
-
元の設定を記録
Homeで現在のサーバーまたはポリシーを記録し、Configを開いて使用中の設定を確認します。元のGlobal Routingのモードも記録してください。テスト後に元へ戻します。
-
モード設定を開く
Home → Global Routingに戻ります。まずConfigを選び、接続したらアクセス権のある固定の接続先を開いて、読み込めるか、接続記録にどのような処理結果が表示されるかを記録します。
-
Proxyと比較
Home → Global RoutingでProxyを選び、サーバーとネットワークは変えずに保ちます。同じ接続先へ再度接続し、プロキシ経由に切り替わったか、失敗が続くかを確認します。
-
Directと比較
Home → Global RoutingでDirectを選び、同じ接続先をテストします。現在のネットワークで直接接続した結果だけを記録し、一度の成功や失敗をすべての接続先に当てはめないでください。
-
元の設定に戻す
Home → Global Routingに戻り、元のモード(通常はConfig)に戻します。再接続して反映されたことを確認してください。設定に問題が見つかった場合は、別途修正してテストし、一時的な切り分け用の状態を長期間そのままにしないでください。
Configで出口が想定と異なる場合:ルールの順序を確認
Configの基本はルールとの照合です。通常は設定内の順序に従ってルールを確認し、一致したルールに指定されたポリシーを適用します。そのため、より具体的な例外ルールは、それを上書きする可能性のある広範なルールより前に置きます。以下は構文を読むためのルール例で、完全な設定ではありません。現在のファイルにそのまま上書きして使う設定例でもありません。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
DOMAIN-SUFFIX,example.com,PROXYはexample.comとそのサブドメインに一致します。ここでのPROXYは、現在の設定で利用可能なプロキシの処理方法を参照している必要があります。IP-CIDR,192.0.2.0/24,DIRECT,no-resolveはIPアドレス範囲を指定するルールの例です。192.0.2.0/24はドキュメント用の例示アドレスです。no-resolveは、このIPルールとの照合のためにドメイン名の名前解決を積極的に行わないという意味で、接続全体でDNSが不要という意味ではありません。GEOIP,CN,DIRECTはIPアドレスの地理情報データベースに基づいて照合します。Webページの言語、ドメインの末尾、利用者の所在地で判定するものではありません。結果は名前解決で得られたIPアドレスやデータベースの内容によって異なる場合があります。FINAL,PROXYは、それ以前のルールに一致しなかった接続を処理します。FINAL,DIRECTに変更すると、一致しなかった接続のデフォルトの出口も変わります。FINALはルール一覧の末尾に置いてください。
Proxyでは接続できるのにConfigで失敗する場合は、新しい接続が実際にどのルールに一致したかを確認し、そのルールのポリシーを調べます。Webページは複数のドメインに同時にリクエストすることがあります。トップページのドメインがプロキシ経由でも、画像、ログインAPI、その他のリソースが同じ出口を通るとは限りません。実際の接続記録で関連ドメインを確認し、Webページのアドレスをルールに1つ追加しただけで振り分けがすべて整ったと判断しないでください。
サブスクリプションの更新と設定の更新も別の操作です。既存のサブスクリプションを更新すると、主にサーバー一覧やそのパラメーターが変わります。それだけでConfigのルールも更新されたとは限りません。Configで現在の設定が実際に選択されているか、ルールが参照するポリシーから利用可能なサーバーを選べるかを確認してください。ルールの詳細はRulesの機能説明をご覧ください。
比較結果から問題を絞り込み、早合点しない
以下はテスト結果を読み解くための例であり、特定のネットワークでの実測報告ではありません。比較するときは、同じ接続先、同じネットワーク、同じプロキシを使い、新しい接続を確認してください。途中でWi-Fiからモバイル通信に切り替えたり、サーバーを変更したりすると、モードだけを比較した結果ではなくなります。
| 確認された結果 | 優先して確認する項目 | 次の手順 |
|---|---|---|
| Proxyでは成功、Configでは失敗 | ルールの一致状況、ポリシーの参照先、現在の設定、設定に関連付けられたDNS | 失敗した接続の実際の処理結果を確認し、該当する設定を修正して再テストします。 |
| Directでは成功、Proxyでは失敗 | プロキシ経由の接続状況、サーバー情報、認証、現在のポリシー選択 | 手元にあるサービス情報を確認し、ネットワークを変えずにそのサーバーをテストします。 |
| Proxyでは成功、Directでは失敗 | 現在のネットワークから接続先への直接接続経路とDNSの結果 | 特定の接続先だけに影響するか確認し、すべての通信にProxyが必要だと決めつけないでください。 |
| 3つのモードすべてで失敗 | 基本的なネットワーク、接続先サービスの状態、DNS、接続の許可、テスト方法 | まず他の接続先が正常か確認してから、項目ごとに切り分けます。モードを繰り返し切り替えるのは避けてください。 |
サーバーテストで表示される遅延は、実際のリクエストの結果を保証するものではありません。遅延値が表示された場合、該当のテスト方法で応答を受け取れたことは示しますが、接続先のWebページのDNS、認証、データ転送、すべてのリソースが正常であることまでは示しません。反対に、テストが一度タイムアウトしても、すべてのアプリの通信ができないとは限りません。実際の接続記録もあわせて確認してください。
On Demandとルーティングモードは別々に確認
Settings → On Demandでは、条件に応じて接続を開始する動作を管理します。Global Routingでは、接続後にどの出口を使うかを管理します。互いに代用できる設定ではありません。On Demandを有効にしても、すべての接続先が自動的にプロキシ経由になるわけではなく、Directを選んでもオンデマンド接続が解除されるわけではありません。「なぜまた接続したのか」を調べるときは、ルーティングモードを何度も変えるのではなく、接続のトリガー条件を確認してください。
接続の開始条件と出口の選択を区別する
接続が開始されるか
- 設定場所:Settings → On Demand。
- 有効になっているトリガー条件と、現在のネットワークがその条件を満たしているかを確認します。
- 手動で比較テストをする間は、On Demandの元の設定を記録し、自動再接続が判定に影響しないようにします。
接続がどの経路を通るか
- 設定場所:Home → Global Routing。
- Config / Proxy / Directを切り替えて出口の動作を比較します。
- Configではルールとポリシーも確認します。Sceneを使っている場合は、シーンの条件も調べてください。
まず接続が開始された理由を確認し、次に新しい接続がどの出口を使うかを調べます。テスト後はルーティングモードとオンデマンド接続の設定を元に戻してください。
Shadowrocketを経由しない状態のネットワークを確認するには、接続を切り、システム上でも切断状態になっていることを確認します。On Demandが有効な場合は、接続が再び開始されていないかも確認してください。これはDirectを選ぶテストとは目的が異なります。前者は未接続の環境を、後者はShadowrocketの接続中に直接接続した場合の動作を確認します。
普段使いと設定の復元を確認
切り分けが終わったら、動作を説明できる設定を維持します。ルールによる振り分けが必要な多くの日常利用では、Configを使ってルールを管理するほうが、比較用のProxyやDirectに長期間とどまるより問題を特定しやすくなります。ただし、すべての接続をプロキシ経由または直接接続にすることが本来の用途であれば、それに合ったモードを選んでも構いません。出口の変化とその影響を理解して使うことが大切です。
- Home → Global Routingが、テスト用の一時的なモードのままではなく、意図したモードに戻っていることを確認します。
- Configで意図した設定が有効になっていることと、FINALおよびポリシーの参照先が用途に合っていることを確認します。
- 現在のサーバーまたはポリシーが有効であることを確認します。サブスクリプションを更新した場合は、ポリシーで選択されているサーバーを再確認してください。
- Settings → On Demandが元の設定に戻っていることを確認し、よく使う接続先で再テストします。
- テスト条件と一致したルールを記録します。サブスクリプションのリンク、認証情報、その他の資格情報は記録に含めないでください。
ShadowrocketはApp Storeで入手できるクローズドソースの有料アプリで、主にiPhoneとiPadで利用できます。正規アプリかどうかは、デベロッパ名のShadow Launch Technology LimitedとアプリIDの932747118を確認してください。アプリの買い切り料金に通信サービスの料金は含まれません。接続に必要なサブスクリプションや設定は、利用者自身で用意する必要があります。システム要件や一般的な購入対象機種については、App Storeの記載をご確認ください。