ShadowrocketのOn Demand設定|Wi-Fi・モバイル通信・ドメインで自動接続

ShadowrocketのOn Demandが、指定したWi-Fi名やモバイル通信、アクセス先ドメインに応じて接続・切断する仕組みを解説。ルールの優先順位や競合、機能をオフにした後の動作も確認できます。

この記事の概要

On Demandは、システムがVPN接続をいつ確立・切断するかを制御します。一方、Ruleは接続確立後のリクエストをどのように振り分けるかを決めます。利用可能な設定をすでに持っているiPhone・iPadユーザーを対象に、Settings → On Demandの確認場所、Wi-Fiとモバイル通信の条件の並べ方、ドメインによるトリガーの制約、自動接続をオフにした後の復帰手順を説明します。設定前に手動接続を確認し、設定後はネットワーク条件を一度に一つだけ変更してください。

1. On Demand、Global Routing、Ruleの違い

On Demandはプロキシの振り分けルールではなく、システムが実行するオンデマンド接続の設定です。まずHomeで接続設定を手動で利用できることを確認し、次にSettings → On Demandで自動接続を確認します。手動接続に失敗する場合、自動接続条件を追加しても、サーバーアドレスや認証情報、ネットワークへの到達性の問題は解決しません。

ネットワーク条件の変化 オンデマンド条件の判定 システムがトンネルを確立 振り分けルールを照合 リクエストの経路を選択

Global Routingは、接続中のルーティング方式を決めます。Proxy、Direct、Configはそれぞれプロキシ、直接接続、設定に基づく振り分けに使用します。Sceneは状況に応じた選択をまとめる機能で、特定の出口を固定するものではありません。この記事の自動接続を調べる際は、まずConfigを選び、Config内で現在選択されているファイルを確認してください。Sceneとオンデマンド条件を同時に切り替えないようにします。

VPNに接続されていても、すべてのリクエストがプロキシを経由するとは限りません。Config内のDIRECTルールに一致したリクエストは直接送信されますが、On Demandの接続状態は維持されます。逆に、FINAL,PROXYを設定しても、トンネルが確立していない状態でOn Demandの代わりに接続を開始することはできません。問題を切り分ける際は、システムの接続状態と、リクエストに適用されたポリシーを分けて記録してください。

2段階
設定場所:Settings → On Demand
2層
接続条件を確認してから通信の振り分けを確認
4種類
以下でDOMAIN-SUFFIX、GEOIP、IP-CIDR、FINALを比較

2. 設定前に手動接続の状態を記録する

自動接続の設定は、再現できる手動テストを基準に進めます。変更を始める前に、現在の設定名、Global Routingの選択、On Demandの状態を記録してください。画面に表示される具体的な項目は、インストール中のバージョンで実際に確認します。システムが対応するオンデマンド機能すべてが、現在の画面に必ず表示されるとは限りません。

  1. Homeで現在の接続設定を選び、手動で接続を開始します。利用できることが分かっている宛先にアクセスし、リクエストが完了することを確認してください。
  2. Configを開いて、現在の設定ファイルを確認します。振り分けを検証する場合は、Global RoutingをConfigに固定し、ルールファイルを同時に変更しないでください。
  3. Settings → On Demandを開き、全体のスイッチと既存の条件を確認します。初回の設定ではテスト条件を一つだけ追加し、複数の例外を一度に設定しないでください。
  4. システムの案内に従ってVPN設定の保存または更新を許可し、システムのSettings → General → VPN & Device Managementで、現在のVPN設定とConnect On Demandの状態を確認します。システム画面の階層はOSのバージョンによって異なる場合があります。
  5. Homeに戻って接続状態を確認し、実際にネットワークを一度切り替えてください。設定画面を閉じただけでは、トリガーが機能することを確認したことにはなりません。

3. Wi-Fi名とモバイル通信の条件を設定する

ネットワーク条件は「具体的な例外を先に、一般的な条件を後に」並べます。システムはオンデマンドルールを順番に判定するため、先に一致したルールによって、後続の条件が評価されないことがあります。たとえば、自宅のWi-Fiでは自動接続せず、それ以外のネットワークでは自動接続したい場合は、指定したWi-Fiの例外を先に設定し、その後に対象範囲の広いネットワーク条件を設定します。

Wi-Fi名には、ルーターの型番や端末のメモ名ではなく、実際のSSIDを指定します。まずシステムのSettings → Wi-Fiで現在の名称を確認し、Settings → On Demandに戻って該当条件を確認してください。複数のアクセスポイントで同じSSIDを使っている場合、名前だけでは区別できません。また、名称の一致はネットワークの安全性を保証するものではありません。

指定したWi-Fiの例外設定

確認場所
Settings → On Demand
照合対象
Wi-Fiの実際のSSID(例:Home-WiFi)
動作
Disconnect(画面に該当する動作が表示される場合のみ設定)
条件の順序
すべてのWi-Fiを対象とする一般条件より前

Home-WiFiは名称の例です。保存時には、端末が現在接続している実際のSSIDを入力してください。

モバイル通信での接続設定

確認場所
Settings → On Demand
照合対象
Cellularのネットワーク条件。実際の画面に表示される選択肢を確認してください。
動作
Connect(画面に該当する動作が表示される場合のみ設定)
確認方法
Wi-Fiをオフにし、モバイルデータ通信が利用できることを確認してから新しいリクエストを送信

テスト前に、端末がモバイルデータ通信に対応していることを確認してください。Wi-Fiのみ対応のiPadでは、このテストは行えません。

確認時は、「ネットワークがまだ利用できない」状態と「オンデマンドルールが一致しなかった」状態を区別してください。Wi-Fiからモバイル通信に切り替えた後、システムがデータ通信できることを確認し、VPNの状態を見てから宛先にアクセスします。公共Wi-FiでWeb認証が必要な場合は、先に認証を済ませてください。On Demandの設定を何度変更しても、認証の代わりにはなりません。

4. ドメインによる接続トリガーとDOMAIN-SUFFIXによる振り分けの違い

ドメインによる接続トリガーは「そのドメインにアクセスするとき、接続を確立する必要があるか」を判定します。一方、DOMAIN-SUFFIXは「ルール処理に入ったリクエストをどのポリシーで処理するか」を指定します。ConfigのRuleにドメインを追加しても、システムレベルのオンデマンド接続条件は作成されません。そのため、サフィックスルールを追加するだけで、未接続時に自動接続できるとは限りません。

システムのオンデマンド機能では、EvaluateConnectionと関連する接続ルールでドメインを評価できます。DNSの解決結果や到達性の判定を組み合わせて、接続を確立するかどうかを決める場合があります。すべてのドメインへのリクエストが必ずトリガーになる単純なスイッチではありません。現在のShadowrocketの画面にドメイン評価の設定項目がある場合に限り、その項目から設定してください。システムのポリシー名をアプリ内の固定メニューだと決めつけないでください。

設定またはキーワード対象確認するポイント
On Demandのドメイン条件接続確立前のオンデマンド判定設定項目の有無、評価動作、DNSと到達性の条件
DOMAIN-SUFFIX指定したドメインサフィックスに一致するリクエストドメインが正しいか、前のルールに上書きされていないか
GEOIP宛先IPの地理的な分類IPの分類と現在の設定におけるルールの順序
IP-CIDR指定したIPv4アドレス範囲ネットワークアドレス、マスク、適用するポリシー
FINAL前のルールに一致しなかったリクエストフォールバックポリシーが想定どおりか
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT
GEOIP,CN,DIRECT
FINAL,PROXY

このコードは通信の振り分け順を確認するための例であり、完全な設定ファイルでもOn Demandの設定ファイルでもありません。example.comとそのサブドメインは最初のルールに一致します。以降のリクエストはアドレス範囲とGEOIPで判定され、一致しなかった場合はFINALに渡されます。PROXYは、利用可能な既存のプロキシポリシーに対応している必要があります。例を貼り付けただけで接続設定が完了するわけではありません。

  1. 通常のネットワークを使ってテスト用ドメインが名前解決できることを確認し、現在の接続状態を記録します。
  2. 画面にドメインのオンデマンド条件がある場合は、保存後に端末を未接続状態にしてから、テスト用ドメインへの新しいリクエストを送信します。
  3. VPNが確立したか、リクエストが成功したか、接続後にどのRuleが適用されたかをそれぞれ確認します。3つの結果をまとめて判断しないでください。
  4. DNSキャッシュや既存の長時間接続、ブラウザーのキャッシュが結果に影響している場合は、新しいテストリクエストを使ってください。開いたページが表示されたままというだけで、トリガーが機能しなかったと判断しないでください。

5. 自動再接続とルールの競合を順番に確認する

問題が起きたら、設定を変更する前にどの層で発生しているかを確認します。接続が自動で確立されない場合は、オンデマンドスイッチと条件を確認します。接続済みなのに宛先にアクセスできない場合は、既存の接続設定、DNS、通信の振り分けを確認します。サブスクリプションの更新、プロトコルの切り替え、Global Routingの変更、オンデマンド条件の書き換えを同時に行うと、どの変更が結果に影響したか分からなくなります。

Homeで接続をオフにしたのに、なぜ再接続するのですか?

まずSettings → On Demandで自動接続を一時停止してから、手動で切断します。Homeの接続スイッチだけを操作しても、有効なオンデマンド条件が解除されないことがあります。次のネットワークイベントやリクエストをきっかけに、システムが再接続する可能性があります。その後、システムのVPN設定でConnect On Demandの状態を確認してください。

自宅のWi-Fiに戻っても接続が維持されるのはなぜですか?

まず実際のSSIDを確認し、指定したWi-Fiの例外が一般的なWi-Fi条件より前にあるかを確認します。また、DisconnectとIgnoreの違いにも注意してください。前者は切断する動作を示しますが、後者は既存の接続を強制的に切断するものではありません。選択できる動作は、画面に表示される内容に従ってください。

モバイル通信に切り替えてもすぐ接続されないのはなぜですか?

まずWi-Fiをオフにし、モバイルデータ通信が利用できることを確認してから新しいリクエストを送信し、システムのVPN状態を確認します。モバイル通信の条件が有効か、先に一致する条件がないかを調べてください。手動接続も失敗する場合は、Homeに戻って既存の設定を確認し、自動ルールを追加し続けないでください。

VPNに接続しているのに、宛先がDIRECTになるのはなぜですか?

HomeでGlobal Routingを確認し、Configで現在のRuleの一致順を調べてください。Directのルーティング方式や、先に一致したDIRECTルールが原因の可能性があります。On Demandを変更しても、すでに決まっている振り分けポリシーが自動でPROXYに変わることはありません。

接続プロトコルとトリガー条件も分けて確認してください。既存の設定でShadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuardを使う場合、プロトコルの項目は接続の確立方法を決め、On Demandは接続を開始するタイミングを制御します。自動接続は成功してもハンドシェイクに失敗する場合、Wi-Fi名の一致を疑うのではなく、その設定で必要なアドレス、ポート、認証情報を確認してください。

6. On Demandをオフにして手動接続に戻す

自動トリガーをオフにしても、すぐに切断されるわけではなく、Directに切り替わるわけでもありません。まずSettings → On Demandで該当する自動条件をオフにして保存し、システムのVPN設定を確認します。現在の接続を停止する場合は、Homeに戻って手動で切断してください。その後、接続は手動で開始します。Global RoutingとConfig内のルールは、それぞれ別に確認してください。

  1. 後から復元できるように、既存の条件の順序と現在の設定名を記録します。利用できる接続設定を急いで削除する必要はありません。
  2. On Demandをオフにし、現在のVPN設定でConnect On Demandを確認して、自動条件が有効なままになっていないか確認します。
  3. Homeで手動切断し、Wi-Fiの切り替えと新しいネットワークリクエストをそれぞれ一度試して、自動接続が再発するか確認します。
  4. それでも自動再接続する場合は、端末上の別のVPN設定やデバイス管理ポリシーが接続を制御していないか確認してください。Homeのスイッチを何度も切り替えるだけで対処しないでください。
  5. 再び利用する場合は手動で接続し、Global Routingを確認します。On Demandを再度有効にするときは、条件を一つずつ戻してください。
App Storeで正規品を確認