公式ガイド・機能紹介

Shadowrocket
機能と設定方法

まずGlobal Routingを選び、Configとサーバーを確認します。接続のオン/オフ、ルール、DNS、自動接続はそれぞれ異なる役割を持ちます。トラブル時は一度に複数の項目を変更しないでください。

  • iPhone/iPadでの操作方法
  • 設定前にバックアップ
  • 変更は一度に1項目ずつ

このページでは、iPhoneとiPadでの使い方を説明します。ShadowrocketはAppleプラットフォーム向けの有料アプリです。Mac、Apple TV、Apple Visionへの対応状況とシステム要件、購入対象については、App Storeの表示をご確認ください。入手先はApp Storeのみです。購入前に正規品の確認と購入方法をご覧ください。

Global Routing:3つのモードを選ぶ

Global Routingは接続全体の処理方法を決める項目で、接続のオン/オフとは異なります。HomeでGlobal Routingを開き、目的に応じてConfig、Proxy、Directを選びます。各モードは日本語では「設定」「プロキシ」「直接接続」と説明できますが、操作時は画面に表示される英語表記を確認してください。変更後も、既存の長時間接続にはすぐ反映されないことがあります。確認するときは、開いたままのページを見るだけでなく、リクエストを新たに実行してください。

画面上の項目主な役割確認に適した場面注意点
Config
設定
現在選択されている設定に基づいてルールを照合します。宛先ごとに異なるポリシーを適用したい場合。有効な設定とRuleの並び順を確認してください。
Proxy
プロキシ
リクエストをプロキシモードで処理します。選択中のプロキシ経路を確認する際に使います。ルールの影響を一時的に除き、登録済みサーバーが動作するか確認する場合。これだけで、システム上のすべての通信が同じ経路を通るとは限りません。
Direct
直接接続
リクエストを直接接続で処理します。現在のネットワークで直接アクセスした場合の状態を比較するとき。Directを選んでも、システムのVPN接続がオフになるわけではありません。

ルールに基づいて振り分ける通常の使い方では、まずConfigを選びます。特定の宛先に接続できない場合は、元のモードを記録したうえで、一時的にProxyまたはDirectに切り替えて比較し、最後に元の設定へ戻します。比較結果から分かるのは各経路での動作の違いです。サーバー、DNS、接続先サービスのいずれに原因があるかは断定できないため、ログもあわせて確認してください。

混同しやすい点として、Configは画面上の設定ファイル管理項目であると同時に、Global Routingの選択肢でもあります。前者は設定ファイルの管理、後者は「現在の設定に基づいて処理する」モードを指します。Configを開いてファイルを表示しただけでは、それが有効な設定になったとは限りません。有効化する前に選択状態を確認してください。

Rule:ルールの種類とポリシーを分けて理解する

ルールの種類はリクエストを判定し、ポリシーは一致したときの処理を決めます。Configで使用中の設定を開き、Ruleまたは対応する[Rule]セクションを確認します。ルールは上から順に評価され、最初に一致したルールが適用されると、それ以降は照合されません。より限定的な例外は広い範囲のルールより前に置き、FINALは最後にフォールバックとして配置してください。

DOMAINは完全一致のドメイン、DOMAIN-SUFFIXはドメインの末尾、DOMAIN-KEYWORDはドメインに含まれるキーワードを照合します。IP-CIDRとIP-CIDR6は、それぞれIPv4とIPv6のアドレス範囲を表します。GEOIPはIPアドレスの地域データベースを使って判定します。ドメインルールとIPルールでは照合の観点が異なるため、ページが特定のドメインに属するというだけで、読み込まれるすべてのリソースに同じルールが適用されるとは限りません。

[Rule]
DOMAIN-SUFFIX,apple.com,DIRECT
DOMAIN-KEYWORD,adservice,REJECT
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT
GEOIP,CN,DIRECT
FINAL,PROXY

上記は構文の例であり、完全な設定の代わりにはなりません。DIRECTは直接接続、REJECTはリクエストの拒否、PROXYはプロキシポリシーでの処理を表します。実際に使用されるサーバーは、現在の選択内容も確認してください。ポリシーのキーワードは大文字で記述します。Global Routingの画面上の選択肢であるProxy、Directと同じ設定として扱わないでください。

変更前に設定のコピーを保存し、対象範囲を限定したルールを1つだけ追加します。保存して有効な設定であることを確認したら、再度テストしてください。ルールが反映されない場合は、Global RoutingがConfigになっているか、前にある広範囲のルールが先に一致していないかを確認してから、実際のリクエストで使われているドメインまたはアドレスを調べます。FINALを先頭に移動しないでください。フォールバックが先に適用され、後続のルールが照合されなくなります。並び順についてはカスタムルールとFINALの解説をご覧ください。

SubscribeとAdd Server:登録済み情報を管理する

サブスクリプションはサーバー項目をまとめて管理するためのもの、手動追加は明確な接続パラメーターを入力するためのものです。どちらも、ユーザーがすでに所有している情報を使います。HomeでAdd Serverを開き、手元の情報に合った種類を選んでパラメーターを入力します。サブスクリプションを読み込む場合は、該当する画面でSubscribeを選び、自分のサブスクリプションURLを入力してください。Scan QR Codeなど、アプリが提供する方法で既存の情報を読み込むこともできます。読み込む前に情報の入手元と用途を確認してください。

手動で入力するときは、アドレス、ポート、認証情報、プロトコルごとの要件を項目ごとに確認してください。Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuardなどでは必要なパラメーターが異なります。種類の名前だけを変更して、ほかの項目をそのまま流用しないでください。TLS、通信方式、関連する名前も元の情報に従って入力し、エラーを解消するためだけに検証を無効にしたり、パラメーターを変更したりしないでください。

読み込みに成功しても、サーバーに接続できるとは限りません。Homeに戻ってグループと項目を確認し、使用するサーバーを選んでからConnectivity Testを実行してください。サブスクリプションの更新によって項目が追加、削除、変更されることがあります。重要な手書きメモや個別に加えた変更は事前に保存し、次回の更新後もローカルの変更がすべて残ると想定しないでください。

サブスクリプションURLにはアクセス用の認証情報が含まれる場合があります。スクリーンショット、ログ、問い合わせ用資料では、URL全体や認証項目を隠してください。更新に失敗した場合は、URLにアクセスできない、取得した内容の形式が合わない、読み込み後の項目で接続できない、という3つの状況を切り分けます。最初の2つは取得・解析段階の問題です。最後の場合は、プロトコルのパラメーターと接続経路を確認してください。詳しくは使い方ガイドをご覧ください。

On Demand:条件に応じて接続する

On Demandは条件に応じて接続を開始する機能で、個々のリクエストの振り分けポリシーは決めません。アプリのOn Demand設定を開き、利用できる条件を確認してから、実際のネットワーク利用状況に合わせて設定します。On Demand、Global Routing、Ruleはそれぞれ異なる役割を持ちます。On Demandは接続するタイミング、Global RoutingとRuleは接続後のリクエスト経路を扱います。

設定前に手動接続を試し、現在の設定とサーバーが動作することを確認してください。その後、結果を確認しやすい条件を1つだけ有効にします。保存したら該当するネットワークに切り替え、システムのVPN状態とアプリ内の接続状態を確認し、その条件から外れたときの状態も確認します。Wi-Fiのネットワーク名を条件にする場合は、現在のネットワーク名と一致しているか確認してください。よく似た名前を同じ条件と誤認しないよう注意が必要です。

有効にした状態で手動で接続を切っても、その後に条件が満たされると再接続することがあります。そのため、「切断した直後に再接続した」だけでアプリの異常とは限りません。原因を調べるときは、まずOn Demandを一時停止して手動接続と比較し、関連するシステムのVPN設定も確認してください。自動接続が有効でも、接続先のサービスが常に利用できるとは限りません。ネットワークの変化、認証エラー、サーバーへの到達不能によって、接続やアクセスに失敗することがあります。

自動接続を一時停止する場合は、Homeのスイッチを繰り返し操作するのではなく、On Demandを開いて該当する条件を確認し、無効にしてください。自動接続を再開する前に、選択中のサーバーと有効な設定をもう一度確認し、テスト中に選んだ項目で自動接続しないようにしてください。

Data:通信量を確認する(速度測定ではありません)

Dataは通信量を確認する機能で、累計バイト数は現在の通信速度を表しません。Dataを開き、表示中のビュー、項目の対象、画面に表示される集計範囲を確認してから、アップロードとダウンロードの数値を確認します。サーバーごとの表示は、各項目の使用状況を把握するのに役立ちます。デバイスや画面にアプリごとの表示がある場合は、集計対象も確認してください。記録名だけでアプリの通信内容をすべて判断しないようにしましょう。

比較する場合は、まず現在の数値と集計開始時点を記録し、ページを開き直すなど、明確な操作を1回だけ行ってからDataに戻って変化を確認します。短時間で数値が増えたとしても、該当する集計範囲で通信が記録されたことを示すにすぎません。ページでは画像、スクリプト、バックグラウンドのリソースも同時にリクエストされることがあり、通信量の合計を画面上の特定ファイルのサイズと単純に比較することはできません。

数値がゼロの場合は、接続が確立しているか、対象へのリクエストを実際に再送したか、表示している項目が使用中のサーバーと一致しているかを確認してください。ブラウザーのキャッシュ、異なるポリシー経路、集計範囲の違いによって、数値が想定と異なることがあります。数値が大きい場合は、バックグラウンドの通信やテストの繰り返しを先に確認し、すぐに集計の誤りと判断しないでください。

Dataの表示はサービス料金の請求根拠にもなりません。クライアント側の集計範囲と接続先サービスの計測方法は異なる場合があるため、それぞれの説明を確認してください。画面に統計の消去やリセット機能がある場合は、実行前に必要な情報を記録しましょう。以降の比較は、新しい開始時点を基準に行います。数値の詳細はDataの通信量表示についてをご覧ください。

DNS:有効な設定を確認してから変更する

DNSはドメイン名をアドレスに変換する機能です。名前解決の成功と、その後の接続成功は別々に確認します。DNSを確認する際は、Configで有効な設定の関連項目と、Settingsに表示されるDNSオプションの両方を確認してください。一方だけを変更して、すべてのリクエストに影響すると決めつけないでください。実際の動作は設定内容、リクエスト経路、関連オプションにも左右されます。

たとえば、設定内のdns-serverはDNSサーバーの設定を記述する項目です。以下の例はシステムのDNSを使う書き方を示しています。すべてのネットワークに推奨される設定ではなく、完全な設定に必要なほかの項目も含まれていません。

[General]
dns-server = system

変更前に有効な設定をバックアップし、元の値を記録してから、DNS関連の項目を1つだけ変更します。保存後、同じドメインへのリクエストを再度実行してください。必要に応じてアプリの方法で接続を再確立し、以前の接続やキャッシュが比較に影響しないようにします。名前解決が一度遅かっただけでDNS、Global Routing、サーバーを同時に変更すると、どの変更が結果に影響したか判断できません。

ドメインを名前解決できない場合は、まず現在のネットワークでDNSに到達できるか、設定の構文が正しいかを確認します。名前解決できてもアクセスできない場合は、接続先アドレスへの接続、TLS、ルールのポリシーを続けて確認してください。名前解決の結果はキャッシュやネットワーク環境の影響を受けることがあるため、一度の結果を長期的な結論とせず、テスト時のネットワーク条件を記録してください。

Settings:テスト方法、ショートカット、同期

Settingsの各項目は、目的に応じて個別に調整してください。項目や選択肢はデバイスや画面によって異なる場合があります。まず表示名を確認してから操作してください。元の値を記録し、繰り返し検証できる変更を優先します。意味が分からない項目は説明を確認し、すべてのスイッチをオンにする方法を一般的な対処として使わないでください。

Test MethodとConnectivity Test

Test Methodでは接続テストの方法を選び、Connectivity Testではテストを実行します。まずSettingsでTest Methodを確認し、Homeに戻って登録済みのサーバーをテストしてください。項目を比較するときは、テスト方法、テスト対象、現在のネットワーク条件をそろえます。異なる方法で得られた数値をそのまま順位付けして比較することはできません。

テスト結果が返ってきても、すべてのWebサイトやアプリが正常に使えるとは限りません。テストに失敗しても、認証情報が間違っているとは限りません。対象を1つ決めて実際のリクエストを行い、名前解決、接続の確立、コンテンツの取得の各段階を切り分けてください。数値を小さくするためにテスト方法を何度も切り替え、実際にアクセスできたかどうかを見落とさないようにしましょう。

Today Widget

Today Widgetは、システムの該当エリアから使うショートカットです。追加できるかどうかや表示される操作は、現在のシステムとアプリの画面表示によって異なります。まずアプリ内の関連設定を確認し、次にシステムのウィジェット編集画面で追加できるか確認してください。これは操作へのショートカットであり、独立した設定環境ではありません。使う前にアプリ内でサーバー、Global Routing、有効な設定を確認してください。

ショートカットを操作した後の状態が想定と異なる場合は、アプリを開いて実際の接続状態を確認し、続いてOn Demandによる再接続が発生していないか調べます。ウィジェットに前回表示された文字だけで、現在のリクエスト経路を判断しないでください。

iCloud同期

iCloud同期では、必要な条件が満たされると、アプリが対応するデータを同期します。まずシステム設定でiCloudの利用状況とアプリの権限を確認し、次にShadowrocket内の関連項目を確認してください。同期の対象範囲はアプリの表示に従います。「同期を有効にする」と、すべてのデバイスでサーバー、設定、統計、接続状態が完全に一致するという意味ではありません。

別のデバイスで操作する前に、同期された内容と選択状態を確認し、問題がないことを確かめてから接続してください。削除、上書き、一括変更を行う前に、元に戻せるコピーを保存します。App Storeの購入済み項目から復元できるのはアプリの購入資格です。すべての接続パラメーターが復元されるわけではありません。それぞれ別に確認してください。機種変更の手順は購入済み項目からの復元方法をご覧ください。

Diagnostics:順を追って問題の範囲を絞り込む

診断では、すべての設定を次々に変更するのではなく、「どの段階で失敗しているか」を確認します。SettingsからDiagnostics、または現在の画面で利用できる診断ツールを開き、Connectivity Testや接続記録とあわせて確認してください。ツールの名称、記録範囲、利用できる機能はアプリ内の表示に従います。テスト後は必要な結果を記録してください。

  1. まず基本のネットワークを確認します。現在Wi-Fiとモバイル通信のどちらを使っているか、問題が特定のネットワークだけで起きるかを記録してください。ネットワーク自体でアクセスできない場合は、まずその接続の問題を解決します。
  2. 選択項目の組み合わせを確認します。Homeで選択中のサーバー、Global Routing、有効なConfigファイル、On Demandの状態を確認してください。接続スイッチがオンであることは、確認を始めるための手がかりにすぎません。
  3. テスト条件をそろえます。Test Methodを確認し、同じネットワークで同じ項目にConnectivity Testを実行して、結果を記録します。異なる方法で測定した数値を混ぜて比較しないでください。
  4. ルールと名前解決を確認します。対象を1つ決めてリクエストの手がかりを調べ、ドメインの名前解決、一致したポリシー、接続エラーを確認します。Configでのみ失敗する場合は、Ruleの並び順を再確認してください。
  5. 元に戻して再テストします。変更は一度に1項目だけ行い、同じリクエストを再度実行してください。改善しなければ元の値に戻してから次の項目を試し、一時的な設定を重ねないようにします。

「タイムアウト」「認証エラー」「名前解決エラー」は、それぞれ異なる手がかりです。タイムアウトの場合はネットワークの到達性、接続先アドレス、接続先からの応答を確認します。認証エラーの場合は、登録済みの認証情報とプロトコルのパラメーターを確認してください。名前解決エラーの場合は、まずDNS関連の設定を確認します。1つのエラー表示だけで接続経路全体の原因を特定することはできません。

問い合わせ用の情報をまとめる際は、デバイスの種類、現在のネットワーク、Global Routingのモード、接続に失敗する対象の種類、機密情報を伏せたエラーメッセージを記録します。サーバーの認証情報、サブスクリプションURL全体、設定内の機密項目は公開しないでください。接続手順の問題については接続に関するよくある質問をご覧ください。アプリを入手できない、または購入を復元できない場合は、ネットワーク設定を繰り返し変更せず、App Storeガイドをご確認ください。