第1段階
サーバーと Subscribe
Home で自分のサーバー項目が選択されていることを確認し、Address、Port、プロトコル、認証情報が正しいか確認します。Subscribe は登録済みの購読内容を更新するためのもので、Global Routing の選択は変更しません。
機能と基本設定
Global Routing から Diagnostics まで、画面上の位置を確認しながら各設定項目の役割を理解します。
このページでは、iPhone と iPad でよく使う Shadowrocket の機能を取り上げ、「何か、どこにあるか、どう設定するか、何に注意するか」の順に解説します。設定を変更する前に、利用するサーバー情報または Subscribe がすでに登録されていることを確認し、問題が起きたときに戻せるよう現在の Config を控えておくことをおすすめします。
読み方
Shadowrocket の設定は、それぞれ独立したスイッチではありません。現在のサーバーが接続先を決め、Global Routing が通信の処理方法を選び、Config のルールが各リクエストを PROXY、DIRECT、REJECT のどれで処理するかを決めます。さらに DNS と On Demand が名前解決や発動タイミングに影響します。この順番で理解すると、トラブル発生時にどの段階で変化したのかを見つけやすくなります。
第1段階
Home で自分のサーバー項目が選択されていることを確認し、Address、Port、プロトコル、認証情報が正しいか確認します。Subscribe は登録済みの購読内容を更新するためのもので、Global Routing の選択は変更しません。
第2段階
Config にはルールと関連設定が保存されます。Config モードでは、リクエストが上から順に DOMAIN、GEOIP、IP-CIDR などのルールに照合され、最初に一致した結果で処理方法が決まります。
第3段階
DNS、Test Method、On Demand、Diagnostics は、名前解決、テスト方法、自動発動、問題の切り分けを制御します。変更後は、一度に1つの要素だけを確認してください。
Global Routing
Global Routing は Home で最初に確認したい主要な設定の1つです。日本語の説明では3つのモードを設定、プロキシ、直接接続と表現できますが、画面上の名称はそれぞれ Config、Proxy、Direct です。これらが決めるのは全体の振り分け方法であり、サーバーのプロトコル種別ではありません。
Config は現在の Config にあるルールを順番に照合し、リクエストごとに異なる処理方法を適用します。Proxy は現在選択中のプロキシ方針をすべての接続に適用するため、サーバー自体が動作するかを一時的に確認するのに適しています。Direct はリクエストを直接接続するため、ルール処理を一時停止してローカルネットワークの状態を確認する場合に使えます。モードを切り替えると、その後に開始する新しい接続に反映されます。すでに確立した接続で変化を確認するには、対象のアプリやページを開き直す必要があります。
Home を開き、Global Routing の選択項目を確認します。端末のサイズによって画面上の配置は変わる場合がありますが、名称は Config、Proxy、Direct と表示されます。選択する前に Home で現在のサーバー項目も確認し、「サーバーの選択ミス」と「振り分けモードの選択ミス」を混同しないようにします。
日常的にドメイン、IP アドレス、地域条件で通信を振り分ける場合は、通常 Config を使います。サーバーを登録した直後にルールの影響を除外して接続を確認したい場合は、短時間 Proxy に切り替えます。現在の Wi-Fi やモバイル通信が正常かだけを確認したい場合は、Direct に切り替えて比較します。確認が終わったら、実際の目的に合うモードへ戻してください。
| 説明 | 画面上の名称 | 処理方法 | 適した場面 | 注意点 |
|---|---|---|---|---|
| 設定 | Config |
現在の Config にあるルールを上から順に照合 | 日常のルール振り分け、ドメインや IP 条件による処理方法の選択 | ルールの順序、最終ルール、処理方法の名称が結果に影響する |
| プロキシ | Proxy |
新しい接続に現在のプロキシ方針を一律適用 | サーバーの利用可否を確認し、ルールの影響を一時的に除外 | 特定の Config ルールが正しいかを判断する用途ではない |
| 直接接続 | Direct |
新しい接続を対象先へ直接アクセス | ローカルネットワークの確認、接続結果の比較 | 切り替え後は新たにリクエストを開始して結果を確認する |
Config
ルール振り分けは「照合条件」と「実行する処理方法」で構成されます。条件がリクエストを識別し、処理方法が一致後の動作を決めます。Shadowrocket は Config に記載された順番でルールを確認するため、より具体的な条件は通常、範囲の広い条件より前に置きます。
DOMAIN は完全なドメインを照合し、特定のホストを指定する場合に適しています。DOMAIN-SUFFIX はドメインのサフィックスで照合し、ドメイン本体と下位ドメインをまとめて対象にできます。DOMAIN-KEYWORD はドメインにキーワードが含まれるかで照合するため範囲が広く、意図しない一致に注意が必要です。GEOIP は対象 IP の地理データベース上の情報で照合し、IP-CIDR と IP-CIDR6 はそれぞれ IPv4、IPv6 のアドレス範囲で照合します。USER-AGENT はリクエストの User-Agent 条件に基づいて処理します。
Config を開き、現在の Config を選択してルールの内容を確認します。ルールは通常、キーワード、照合値、処理方法の3つで構成されます。例:
DOMAIN-SUFFIX,example.com,PROXY
GEOIP,CN,DIRECT
FINAL,PROXY
1行目はドメインのサフィックスが example.com の場合に PROXY を使用します。2行目は指定の GEOIP 条件に一致した場合に DIRECT を使用します。最後の FINAL は、それまでのルールに一致しなかったリクエストを受け取ります。この例は構文を説明するためのもので、あらゆるネットワーク環境にそのまま適用できるものではありません。
まず具体的なルールを書き、次に範囲の広いルールを書き、最後に明確な最終処理方法を残します。たとえば、単一ドメインの DOMAIN は、それを含む可能性がある DOMAIN-SUFFIX や DOMAIN-KEYWORD より前に置きます。IP ルールでは対象アドレスが IPv4 か IPv6 かを確認してください。ドメインの名前解決後に異なるアドレスへ接続される場合、ドメインだけを見ても最終的に一致したルールは判断できません。
よく使う処理方法には PROXY、DIRECT、REJECT があります。PROXY はプロキシ方針で処理し、DIRECT は直接接続し、REJECT はリクエストを拒否します。Config でカスタムの処理グループ名を参照する場合は、Config 内に定義済みの名称と一致させる必要があります。大文字・小文字、句読点、カンマの位置を正しく保ち、手動編集による余分な空白や全角記号の混入を避けてください。
ルールは多ければよいわけではありません。2つのルールの範囲が重なる場合、前のルールが先に一致し、その判定では後のルールは使われません。「特定のドメインが想定どおり処理されない」場合は、実際にアクセスしているドメイン、DNS が返したアドレス、ルールの順序、処理方法の名称、現在の Global Routing が Config かどうかを順番に確認します。切り分けが終わってから重複した項目を整理し、Config を読みやすく保ちます。
DOMAIN は完全なドメインに正確に一致し、DOMAIN-SUFFIX は指定したサフィックスを対象にします。細かく制御する場合は、先に DOMAIN を記述します。
IPv4 と IPv6 のアドレス範囲をそれぞれ処理します。アドレス範囲の形式とプレフィックス長を正確に指定し、想定外の範囲まで対象にしないよう注意します。
条件に一致した後、指定した処理方法を実行します。カスタムの処理グループは、Config にすでに存在する名称を使用します。
それまでのルールに一致しなかったリクエストを処理します。FINAL の処理方法は全体の動作に大きく影響するため、変更前に利用目的を確認してください。
Add Server · Subscribe
Shadowrocket では、Add Server からサーバー情報を手動入力できるほか、Subscribe からユーザー自身が登録済みの購読内容を更新できます。どちらの方法でも最終的には Home で選択できるサーバー項目になりますが、管理方法は異なります。
Add Server は、明確なサーバー情報を1件登録する場合に適しています。対応するプロトコルには Shadowsocks、VMess、VLESS、Trojan、HTTP、SOCKS5、WireGuard、Hysteria2 などがあります。必要な項目はプロトコルごとに異なりますが、通常は Address、Port、Password、その他の認証パラメータを入力します。Subscribe は、ユーザー自身のサービス提供元が提供・管理する複数の項目をまとめて管理する場合に適しており、更新時にクライアントが購読内容を再読み込みします。
Home でサーバーの追加画面を開くと、Add Server、Scan QR Code、Import from Cloud JSON などの方法を選べます。購読の入口は通常 Subscribe と表示されます。画面に表示されるプロトコル種別、入力項目、転送パラメータは、手元のサーバー情報と1項目ずつ対応させてください。あるプロトコルのパラメータを別のプロトコル画面に入力しないようにします。
手動追加では、まずプロトコルを選び、Address と Port を入力してから、認証情報と転送項目を補完します。保存後 Home に戻り、その項目を選択します。Subscribe から登録する場合は、ユーザー自身が所有する購読アドレスを貼り付けて保存し、更新を実行します。返された項目から使用するサーバーを選択してください。Scan QR Code を使う前に、QR コードが本当に自分のサーバー資料から取得したものか確認します。Import from Cloud JSON は、準備済みの JSON 設定を取り込む場合に適しています。
Subscribe の更新後に項目が変わった場合は、サービス提供元から返された現在の内容を基準にします。Subscribe で管理されている項目を手動で変更しても、次回の更新時に置き換えられる可能性があります。個別のパラメータを長期保存したい場合は、元の情報を控えたうえで、手動項目と Subscribe のどちらで管理するかを決めてください。
サーバー名は識別しやすくするためのラベルにすぎず、接続品質を保証するものではありません。テストでは、項目が Connectivity Test を完了できるか、実際に Web ページを開けるか、Global Routing が正しく設定されているか、DNS が名前解決できるかを分けて確認します。遅延値は特定のテスト条件での応答を示すだけで、実際の閲覧速度とは異なります。認証情報などの機密データは、自分の端末と信頼できるバックアップだけに保存してください。
On Demand
On Demand は現在のネットワーク条件に応じて接続を開始または停止する機能です。特定の Wi-Fi、モバイル通信、ドメインへのアクセス条件に応じて自動的に切り替えたい場合に適しています。接続のタイミングに影響しますが、Global Routing や Config のルールを置き換えるものではありません。
手動接続では Home を開いてユーザーがスイッチを操作します。On Demand では、あらかじめ設定した条件に基づき、ネットワーク環境の変化時にシステムが発動の要否を判断します。一般的な判定要素には、現在のネットワーク種別、Wi-Fi 情報、ドメイン条件があります。接続が発動した後のリクエストも、その時点で選択されているサーバー、Global Routing のモード、Config のルールに従って処理されます。
Settings を開き、On Demand 関連の項目を確認します。接続機能を初めて有効にする際は、システムから VPN 構成の許可を求められる場合があります。On Demand のルールを上から判定する場合は、条件名を分かりやすくし、意味が反対で範囲の重なる条件を作らないようにします。
まずは単一の条件から始めます。たとえば1種類のネットワーク環境だけで有効にし、Wi-Fi とモバイル通信を切り替えたときの動作を確認します。発動が安定してから、ドメインやネットワークの例外を追加してください。変更後は、画面をロックして解除する、ネットワークを切り替える、新しいリクエストを開始するなどの操作で、システムが条件を再評価しやすくなる場合があります。テスト時は現在のネットワーク名、Global Routing のモード、選択中のサーバーを記録します。
On Demand を有効にした後、接続が頻繁に切り替わる場合は、まず条件の範囲が広すぎないか、複数の条件が重なっていないか、Wi-Fi とモバイル通信の間でネットワークが繰り返し変化していないかを確認します。自動発動が原因か判断したい場合は、一時的に On Demand を無効にし、Home から手動接続して比較します。確認後は、整理したルールに戻します。
まず観察できる基本動作を作ります。
Wi-Fi とモバイル通信を分けて観察します。
一度に追加する判定条件は1つだけにします。
Data
Data は Shadowrocket が処理した通信記録を確認するための機能で、アプリや接続段階ごとの利用状況を比較するのに適しています。クライアント側の統計画面であるため、集計期間と現在の接続状態を合わせて読み取る必要があります。
Data は、クライアントの動作中に確認されたアップロードとダウンロードのデータを集計します。一定時間内の通信量の変化や、特定の操作で大量の転送が発生したかを確認できます。また、リクエストがクライアントを通過したかの判断にも役立ちますが、どのルールに一致したかや、サーバー速度を単独で示すものではありません。
下部ナビゲーションから Data を開きます。端末のサイズによってリストの表示密度は異なりますが、集計範囲、アプリまたは接続項目、アップロードとダウンロードの方向を確認します。Config を切り替えた直後は、切り替え後の新しいリクエストから観察し、それ以前に蓄積されたデータを今回の判断に含めないようにします。
Data は主に確認用で、頻繁に調整する必要はありません。比較テストでは、現在の数値を控えるか統計をリセットしてから、ページを開く、コンテンツを再生する、更新を1回実行するなど明確な操作を行い、Data に戻って増加分を確認します。繰り返しテストでは、できるだけ同じネットワーク、同じサーバー、同じ Global Routing のモードを保ちます。
クライアント、システム、サービス提供元の統計は、集計方法や更新タイミングが異なる場合があり、数値が完全に一致するとは限りません。Data に通信量が表示されることは、リクエストが該当する処理を通過したことを示すだけです。処理方法を確認するには Log や Diagnostics も併用してください。統計が急増した場合は、まず前面およびバックグラウンドで通信中のアプリを確認し、今回のテストとの関係を判断します。
Settings
Settings には、名前解決、テスト、ウィジェット、同期に関する項目がまとめられています。ここでの変更はすべての Config に影響する可能性があるため、「元の値を記録し、1項目だけ変更し、すぐに確認する」方法が適しています。
概要:DNS はドメイン名を接続に必要なアドレスへ変換します。名前解決に失敗すると、サーバーテストは正常でも Web ページを開けない場合があります。
場所:Settings の DNS 関連項目を開き、現在の名前解決設定と利用可能な選択肢を確認します。
設定方法:まず現在正常に動作している設定を維持します。変更が必要な場合は一度に1項目だけ変更し、ドメインへのアクセスと直接 IP へのアクセスをそれぞれテストして、問題が名前解決にあるか判断します。
注意点:DNS とルールは互いに影響する場合があります。特に GEOIP、IP-CIDR、IP-CIDR6 が名前解決の結果に依存する場面では注意が必要です。変更後は新しい接続を開始し、古いページのキャッシュだけを確認しないでください。
概要:Test Method は、クライアントがサーバーの応答をどの方法でテストするかを決めます。方法によって確認するネットワーク上の段階が異なるため、結果に差が出る場合があります。
場所:Settings を開き、Test Method を確認して、現在の画面で選択できるテスト方法を確認します。
設定方法:日常的に比較する場合は、同じ方法を維持します。特定のネットワーク制限を調べる場合だけ切り替え、Connectivity Test を再実行してください。
注意点:テスト値が低いからといって、実際の転送が必ず速いとは限りません。Web ページの読み込みは DNS、回線、対象サーバー、転送パラメータにも左右されるため、実際のアクセス結果と合わせて判断します。
概要:Today Widget はシステムのウィジェットからアクセスでき、状態の確認やクライアントが対応するクイック操作に利用できます。
場所:まず Shadowrocket の Settings で関連項目を確認し、その後システムのウィジェット編集画面から追加します。
設定方法:追加後、ウィジェットに表示される Config と現在の接続状態が一致しているか確認します。システムの更新がすぐ反映されない場合は、Shadowrocket を開いて状態を確認してからウィジェットを見直します。
注意点:ウィジェットの表示はシステムの更新スケジュールに依存するため、短時間はアプリ内の状態とずれる場合があります。重要な操作は Home に戻って確認してください。
概要:iCloud 同期は、同じユーザーが利用する Apple デバイス間で、クライアントが対応するデータ項目を同期する機能です。
場所:Settings で iCloud 関連のスイッチを確認し、端末のシステム設定でも iCloud の状態を確認します。
設定方法:有効にする前に現在使える Config を控え、その後もう一方の端末で同期が完了するまで待って項目ごとに照合します。両方の端末で大量の変更を同時に行わないでください。
注意点:同期は即時ミラーリングではありません。ネットワーク状態、システムの処理タイミング、項目の種類によって反映までの時間が変わります。重要な認証情報はユーザー自身で適切に管理してください。
| 設定項目 | 主な役割 | 変更後の確認方法 |
|---|---|---|
| DNS | ドメイン名前解決に関する動作を制御 | ドメインへ再アクセスし、直接 IP 接続の結果と比較 |
| Test Method | Connectivity Test のテスト方法を決定 | サーバーを固定し、同じ方法で繰り返しテスト |
| Today Widget | システムウィジェットの状態またはクイックアクセスを提供 | Home に戻り、ウィジェットの表示と実際の状態を確認 |
| iCloud | クライアントが対応するデータ項目を同期 | 同期完了を待ち、2台の端末の内容を項目ごとに比較 |
Diagnostics · Connectivity Test
Diagnostics は「アクセスできない」という状態を、ローカルネットワークが動作しているか、サーバーが応答しているか、DNS の名前解決が完了しているか、どの処理方法がルールで選ばれたか、対象への接続がどの段階で停止したかという具体的な問題に分解します。
Connectivity Test はサーバーの応答をすばやく確認するのに適しています。Log はクライアントがリクエストを処理した際のイベントを記録し、Diagnostics はより対象を絞った確認や診断に使います。まず簡易テストを実行し、問題を一度再現してから、そのリクエストの時刻に対応する記録を確認するという順番で併用します。
Connectivity Test は通常、サーバーリストまたは関連する操作画面から実行できます。Log と Diagnostics はクライアント内の該当ページ、または Settings の診断エリアにあります。端末のレイアウトによって場所が変わる場合があるため、探す際は英語の名称を確認してください。
診断内容を共有する前に、サーバーアドレス、認証情報、Subscribe アドレス、個人のネットワーク名が含まれていないか確認します。自分で確認する場合は、発生時刻、対象ドメイン、現在のモード、変更内容を控えれば十分です。Proxy ではアクセスできるのに Config ではアクセスできない場合は、ルールを重点的に確認します。両方ともアクセスできず Direct が正常な場合は、サーバーとプロトコルパラメータを確認します。サーバーテストは応答するのにドメインへアクセスできない場合は、まず DNS と対象ドメインの記録を確認します。
ルールの順序、FINAL の処理方法、カスタム処理グループ名、選択中の Config が正しいか確認します。
現在のサーバー、プロトコル項目、認証パラメータ、Connectivity Test の結果を確認します。
DNS、実際の名前解決結果、DOMAIN 系ルールが想定した対象に一致しているかを確認します。
推奨手順
問題が起きたときは、スイッチを何度も切り替えるより、決めた順番で確認する方が効果的です。以下の手順は、初回設定にも Config 更新後の回帰確認にも使えます。
Home でパラメータが揃ったサーバーを1つ選び、まず Connectivity Test を実行します。Subscribe から登録した場合は、更新が完了していることを先に確認します。
短時間だけ Global Routing を Proxy に切り替え、明確なリクエストを1つ実行します。この手順は接続経路の確認だけを目的とし、最終的に使うモードを示すものではありません。
対象ドメインに一致する DOMAIN、DOMAIN-SUFFIX、その他の条件を確認し、最終的な処理方法が想定した PROXY、DIRECT、REJECT になっているかを確認します。
サーバーとルールを確認した後で、名前解決の問題を調べます。DNS を変更したら新しいリクエストを確立し、IPv4 と IPv6 の条件も同時に確認します。
まず手動接続が安定していることを確認し、その後で自動発動の条件を追加します。接続自体の問題と発動タイミングの問題を分けて確認できます。
アプリとデバイス
Shadowrocket は iPhone と iPad を主な利用端末としています。Mac、Apple TV、Apple Vision の互換性は同じ App Store 製品ページで確認でき、システム要件は App Store ページの記載に準拠します。端末によって配置や表示項目が異なる場合がありますが、このページでは機能を英語の画面名称で確認します。