この記事の概要

利用中のサービスやサブスクリプションがあり、Shadowrocketで通信の振り分け方法を選ぶ場合は、まずサーバーが使えることを確認してからGlobal Routingを設定します。普段は内容を確認したConfigを使い、Proxyは一時的に通信をまとめてプロキシ経由にする場合や、切り分けに利用します。Directは直接接続の確認に使います。この記事では、それぞれの違いと切り替え手順、ルールの確認方法を説明し、SceneやOn Demandとの違いも解説します。接続のオン・オフ、通信の振り分け方法、自動接続を混同しないためのポイントも紹介します。

まず結論:普段はConfigを基本にする

Global Routingは、Shadowrocketの処理対象となる通信の経路を選びます。サービスを作成したり、使えなくなったサーバーの設定を修復したりする機能ではありません。通信の一部を直接接続し、残りをプロキシ経由にする場合は、現在の設定ファイルのルールと最終マッチ項目が目的に合っていることを確認したうえで、Configを選びます。Configは「最速の経路を自動選択する」設定ではなく、すべての通信が意図どおりに振り分けられることを保証するものでもありません。

Config

おすすめ

現在の設定ファイルにあるルールとポリシーに従って通信を処理します。ルールの一致結果はDIRECT、プロキシポリシー、その他の定義済みアクションとなり、先行するルールに一致しない場合は最終マッチ項目で経路が決まります。

適した用途:ルールを確認したうえで、直接接続とプロキシ接続を併用する普段の通信。

Proxy

処理対象となる通信をまとめてProxyとして扱い、Configの通常の振り分けルールに従ってDIRECTかプロキシかを個別に選ぶ動作を行いません。DNSやシステムレベルの動作は別途確認が必要です。

適した用途:一時的に通信をまとめてプロキシ経由にする場合や、Configと比較してルールの問題を絞り込む場合。

Direct

処理対象となる通信を直接接続として扱い、選択中のプロキシサーバー経由では転送しません。これはルーティング方法の設定であり、Shadowrocketの接続をオフにする操作とは異なります。

適した用途:現在のWi-Fiまたはモバイル通信で直接アクセスできるかを確認する場合。

ここでは基本となる3つの設定を比較しており、Global Routingの全選択肢を網羅しているわけではありません。画面にSceneが表示されている場合は、シーンの条件に応じて処理方法を選ぶ機能です。切り分けでは現在のシーンと設定を確認し、SceneをConfigの別名と捉えないようにしてください。

Homeで設定を切り替える前に、ほかの条件を固定する

Homeでは現在のサーバーと接続状態を確認し、Configでは設定ファイルを管理し、Settingsではアプリの設定を変更します。HomeのGlobal RoutingでConfigを選ぶ操作と、Config画面で設定ファイルを選ぶ操作は別です。通信がどのルールに従うかを判断するには、ルーティング方法と有効な設定ファイルの両方を確認してください。

  1. サーバーを確認する

    Homeを開き、利用中のサービスから対象のサーバーが選択されていることを確認します。アドレス、ポート、認証情報、プロトコルの設定を確認し、ルーティング方法を切り替える際にサーバーも変更しないようにします。

  2. 設定ファイルを確認する

    Configを開き、現在使用中の設定ファイルを確認します。変更する場合は、先に元の内容を保存してください。サーバーのサブスクリプションをインポートまたは更新しただけでは、新しい通信振り分け設定が選択されたことにはなりません。

  3. ルーティング方法を選択する

    Home → Global Routingに戻り、Config、Proxy、Directのいずれかを選択します。その後Homeに戻って表示を確認してください。前回使った設定の記憶だけで現在の選択を判断しないようにします。

  4. リクエストを再実行する

    接続スイッチの状態を確認し、テストするアプリで対象のページを開き直します。必要に応じて古い接続を終了するかShadowrocketを再接続し、以前のセッションを使ったまま切り替え結果を誤判定しないようにしてください。

  5. 記録して元に戻す

    ネットワークの種類、ルーティング方法、サーバー、ページの結果を記録します。比較が終わったらHome → Global Routing → Configに戻り、普段使う設定ファイルが有効になっていることを確認します。

Configの要点:ルールの順序とFINAL

Configでは設定ファイル内のルールに従ってリクエストを処理し、通常は上から順に一致するものを探します。同じ接続先がドメイン条件とアドレス条件の両方に一致することがあるため、具体的なルールを前に、範囲の広いルールを後ろに配置すると、広い条件が先にリクエストを処理してしまうのを防げます。FINALは最後の受け皿であり、「先行するルールの結果をもう一度確認する」ものではありません。

DOMAIN-SUFFIX
ドメインのサフィックスで照合
IP-CIDR
IPv4アドレス範囲で照合
GEOIP
IP地理情報データベースで照合
FINAL
それまでのルールに一致しなかったリクエストを処理

以下はルールの順序を理解するための例であり、完全な設定ファイルではありません。サンプルのドメインexample.comは構文説明用です。PROXYに対応するポリシーが実際の設定内で解決できる必要があります。別のポリシー名を使う場合は、設定済みの名前に置き換えてください。そのまま貼り付ければ動作すると考えないようにしましょう。

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
  • DOMAIN-SUFFIX,example.com,PROXY:このドメインとサブドメインをPROXYポリシーに渡します。名前の似た別のドメインまで自動的に対象になるわけではありません。
  • IP-CIDR,192.168.0.0/16,DIRECT,no-resolve:指定したアドレス範囲に直接接続します。no-resolveは、このアドレスルールの照合時に追加のドメイン名前解決を行わないことを示します。
  • GEOIP,CN,DIRECT:利用可能なIP地理情報データベースに基づき、接続先IPの地域を判定します。ブランドやドメインのサフィックスで判定するルールではありません。
  • FINAL,PROXY:それまでのルールに一致しなかったリクエストをPROXYに渡します。FINAL,DIRECTにすると、最後の処理方法が変わります。

したがって、「Configなら残りの通信はすべて直接接続になる」という理解は誤りです。残りの通信の扱いはFINALを確認してください。また、特定のサイトを調べる際は、ページが複数のドメインにアクセスする可能性にも注意が必要です。メインページがあるルールに一致しても、画像、ログイン用API、その他のリソースも同じルールに一致するとは限りません。

ProxyとDirectで比較可能なテストを行う

ルーティング方法の切り替えは、問題の範囲を絞り込むために行います。一度の成功だけで設定全体が正しいとは判断できません。同じデバイス、同じネットワーク、同じサーバーを使い、同じ接続先にアクセスして、各回で変更する設定は1つだけにします。テスト中にサブスクリプション更新、DNSの変更、ルール編集を同時に行うと、どの変更が結果に影響したのか分からなくなります。

比較方法:接続先を固定し、Global Routingだけを変更する

Proxyで比較
  • 元のサーバーを使ったまま、Home → Global Routing → Proxyに切り替えます。
  • 読み込めなかったページに再度アクセスし、表示できるかと具体的なエラーを記録します。
  • Proxyでは接続でき、Configでは接続できない場合は、ルールの一致結果、ポリシーの選択、DNSの違いを優先して確認します。
Directで比較
  • 同じネットワークのまま、Home → Global Routing → Directに切り替えます。
  • 現在のネットワークから直接アクセスできるはずの接続先を選び、リクエストを再実行します。
  • Directでは接続でき、Proxyでは接続できない場合は、サーバーへの接続状態とプロキシ経由で接続先にアクセスできるかを確認します。

比較結果は問題を調べる手がかりです。テスト後はConfigに戻し、新しいリクエストで普段の振り分けを確認します。

確認された現象次に確認する項目
Proxyでは接続できるが、Configでは接続できない接続先に一致するルール、参照先のポリシー、FINALを確認します。サーバーの故障とすぐに判断しないでください。
Directでは接続できるが、Proxyでは接続できないサーバーのアドレス、ポート、認証情報、必要な通信パラメーターを確認し、接続先がその出口からのアクセスを拒否していないか調べます。
3つの設定すべてで接続できないまずネットワークと接続先サイトの状態を確認し、その後に名前解決を調べます。必要に応じて接続スイッチをオフにした状態でも比較します。
切り替えても以前のページ表示が変わらない接続をやり直して、キャッシュや古いセッションの影響を除外します。短時間に何度も切り替え、画面に残った古い内容だけで判断しないでください。

表の内容は条件に基づく判断の目安であり、本サイトでの実測データではありません。Directでもアプリ内のDNS設定が影響する場合があります。そのため、Directで接続できないことだけでは、Wi-Fiやモバイル通信が切断されたとは判断できません。接続スイッチをオフにしたテストは別の条件として記録してください。

DNS、Scene、On Demandの違い

Global Routingは「リクエストの経路をどう選ぶか」、DNSは「ドメイン名をどう名前解決するか」、On Demandは「どの条件で接続を開始するか」を扱います。相互に関係しますが、代わりになるものではありません。たとえばProxyに切り替えても、誤ったDNS設定が自動で修正されるわけではありません。Configを使い続けていても、システムが必ず自動接続するとは限りません。

  • DNS:まずドメイン名を解決できるか確認し、その後で接続先への通信経路を調べます。アドレスベースのルールが一致するかどうかは、リクエストで使われるアドレスや関連する名前解決の動作にも左右されます。ルールの記述だけを見て判断しないでください。
  • Scene:Home → Global Routing → Sceneを使っている場合は、選択中のシーンと条件も確認します。比較結果を明確にするため、一時的にConfig、Proxy、Directのいずれかを明示的に選択し、テスト後に元のシーン設定に戻す方法があります。
  • On Demand:Settings → On Demandで保存済みの条件を確認します。接続を開始する条件に関わる機能であり、Configファイル内のDOMAIN-SUFFIX、IP-CIDR、FINALの代わりにはなりません。

サブスクリプション更新後に通信振り分け設定を再確認する

この記事では、利用中のサービスやサブスクリプションがあることを前提としています。サーバーのサブスクリプション更新で主に変更されるのはサーバー情報です。Config内のルール、ポリシーの参照先、FINALまで自動的に修正されるわけではありません。更新によって項目名や利用可能なサーバーが変わった場合は、既存のポリシー選択を改めて確認してください。

プロトコルもGlobal Routingの代わりにはなりません。Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuardは接続プロトコルやトンネル方式を示すものです。プロトコルを選択しただけではProxyやConfigを選んだことにはなりません。プロトコルのパラメーターは利用中のサービスから提供された情報に従い、プロトコル名からポートや認証方式を推測しないでください。

  • Homeで更新後のサーバー項目が引き続き使えることを確認し、選択中のサーバーが今回のテスト条件に合っているか確認します。
  • Configで有効な設定ファイルを確認し、ルールが参照するポリシー名が存在すること、実際に選択されているポリシーが想定どおりであることを確認します。
  • Home → Global Routingで現在の設定を確認し、前回の切り分けでProxyまたはDirectのままになっていないか確認します。
  • 直接接続する想定の接続先と、プロキシ経由で接続する想定の接続先をそれぞれテストします。結果が想定と異なる場合は、サブスクリプションを繰り返し更新するのではなく、ルールを1つずつ確認してください。

普段の設定と復元時の確認

普段はConfigを基本にするという推奨は、設定ファイルの内容を確認し、目的に合っていることを前提としています。どの設定ファイルを読み込んでも保証されるわけではありません。サーバー項目だけがあり、ルールが整理されていない場合は、Configを常用する前に設定内容と最終的な処理方法を確認してください。ProxyとDirectにはそれぞれ用途がありますが、テスト時の設定を気づかないまま普段の設定として残さないようにしましょう。

Proxyを選ぶと、デバイスのすべての通信がプロキシ経由になりますか?

そのように断定することはできません。ProxyはShadowrocketの処理対象となる通信のルーティング方法を示します。システムのルーティング範囲、DNS設定、接続の種類によって実際の経路が変わる場合があります。特定のリクエストを確認する場合は、モード名だけでなく、そのリクエストの診断情報を確認してください。

ConfigのほうがProxyより遅い場合、Proxyを常用すべきですか?

まず、同じ接続先にアクセスしたときに、両方で同じポリシーとサーバーが選ばれているか確認してください。Configで別の出口やDIRECTが選ばれている場合、同じ経路同士の速度比較にはなりません。設定を変更する前に、ルール、名前解決、接続の再利用状況を確認してください。

トラブルの切り分け後、何を元に戻せばよいですか?

Home → Global Routing → Configに戻し、Configで有効な設定ファイルを確認します。テスト前に保存したDNSとSettings → On Demandの設定も元に戻してから、リクエストを再実行してください。普段Sceneを使っている場合は、元のSceneに戻し、条件も確認します。機械的にConfigへ切り替える必要はありません。

本サイトはShadowrocketの公式サイトで、この記事は公式マニュアルです。Shadowrocketはクローズドソースの有料アプリです。入手先はApp Storeのみです。iPhone、iPadをはじめとするAppleデバイスの対応状況、システム要件、購入に関する一般的な適用条件は、App Storeのページをご確認ください。アプリの買い切り価格と通信サービスのプランは別のものです。この記事では、利用中のサービスにおけるアプリの設定方法のみを説明します。