ShadowrocketのOn Demandは、システムVPN接続を開始する条件を管理する機能です。Configの通信振り分けルールとは別に動作します。手動接続ができ、Wi-Fi名やモバイル通信に応じて自動接続したい場合に役立ちます。まずネットワーク条件を設定し、次にドメイン評価を個別に確認して、最後にルールの順序を見直しましょう。「接続済み」でも、すべてのリクエストがPROXYを経由するとは限りません。
On DemandとGlobal Routingを分けて確認
まず、次の2点を確認してください。On DemandはVPN接続をいつ開始・終了するかを決め、Global Routingは接続中の通信をどう処理するかを決めます。On Demandを有効にしても、利用中の接続先のアドレス、ポート、認証、TLS設定は修正されません。また、ConfigのDIRECTルールがPROXYに変わることもありません。
Shadowrocketの主な操作画面はHome、Config、Settingsです。まずHomeで現在の設定を使った手動接続を確認し、その後Settings → On Demandで自動接続の条件を設定します。この記事では主にiPhoneとiPadを扱います。システム要件はApp Storeの記載をご確認ください。
切り分け中は、Global Routing → Configを使い、動作確認済みの設定を1つ保存しておきましょう。ProxyとDirectは一時的な比較に使えますが、自動接続の条件ではありません。SceneもOn DemandのWi-Fi名照合とは別の機能です。変更は一度に1種類に絞ると、接続層と振り分け層のどちらに原因があるか判断しやすくなります。
設定前に手動接続の状態を確認する
手動接続でも目的のサイトにアクセスできない場合は、まず基本的な接続の問題を解決してください。On Demandは自動化の設定であり、接続失敗を修復する機能ではありません。この記事では利用者がすでに接続サービスと契約していることを前提に、端末上の設定のみを説明します。サービスへの接続情報は提供していません。
- Homeで現在選択されている接続設定を確認します。利用中のサブスクリプションを更新した直後は、選択中の項目をもう一度確認し、テスト対象が変わっていないか確かめてください。
- On Demandを一時的にオフにして手動で接続し、現在のWi-Fiまたはモバイル通信、Global Routingの設定、目的のページを開けるかを記録します。
- Configで現在有効になっている設定ファイルを確認します。テスト中はDOMAIN-SUFFIX、GEOIP、IP-CIDR、FINALを同時に編集しないでください。
- システムの指示に従ってVPN構成を許可します。組織によって管理されている端末では、システムでこのVPN構成が許可されているか、事前に確認してください。
- 手動接続とアクセスが正常にできることを確認してから、Settings → On Demandで条件を追加または変更し、設定を保存します。
Wi-Fi名とモバイル通信の条件を設定する
よくある設定例は「指定したWi-Fiでは自動接続せず、モバイル通信では自動接続する」です。範囲の狭いWi-Fiの例外を先に追加し、その後に範囲の広いネットワークルールを追加します。Wi-Fi名はSSIDを指します。ルーターの管理用アドレスや、ブラウザーに表示される認証ページのタイトルではありません。
以下の2つのカードはテスト計画の例であり、読み込み可能な設定テキストではありません。アクション名は接続・切断の意図を区別するためのものです。編集できる項目はSettings → On Demandの現在の画面で確認してください。例のネットワーク名を実際のSSIDとして使わないでください。
指定Wi-Fiの例外
- 設定場所
- Settings → On Demand
- ネットワークの種類
- Wi-Fi
- SSIDの例
- Home-WiFi(説明用)
- アクションの意図
- Disconnect
- 配置位置
- 共通Wi-Fi条件より前
実際のSSIDを確認してから、そのネットワークへの接続時と切断時の両方をテストします。
モバイル通信で接続
- 設定場所
- Settings → On Demand
- ネットワークの種類
- Cellular
- SSID条件
- Wi-Fi名の制限を追加しない
- アクションの意図
- Connect
- 確認方法
- Wi-Fiを切断してから新しいリクエストを送る
モバイル通信を利用できる端末が対象です。まずモバイルデータ通信が使えることを確認してください。
- 最初は確認する条件を1つだけ設定します。保存後に画面を開き直し、条件とアクションが保持されているか確認してください。
- Wi-Fiのテストでは、システムのWi-Fi設定画面で現在接続中の名前を確認します。空白、ハイフン、大文字・小文字を含めて正確に照合し、名前の一部をワイルドカードとして扱わないでください。
- モバイル通信のテストでは、システム設定でWi-Fiをオフにし、ネットワークが実際に切り替わったことを確認してから、新しいウェブリクエストを送信します。
- 1つ目の条件を確認できたら2つ目を追加し、最後にほかのWi-Fi条件を加えます。明確な必要がない限り、すべてのネットワークを対象にする広範なルールは最初に追加しないでください。
同じルーターでも、周波数帯ごとにSSIDが異なる場合と、同じ名前を共有する場合があります。条件は実際の名前で照合され、端末とルーターの距離では判断されません。公共Wi-Fiでウェブ認証が必要な場合は、自動接続をテストする前に認証を済ませましょう。インターネットに接続できていない状態を、On Demandの不具合と誤認するのを防げます。
ドメインによるトリガーとDOMAIN-SUFFIXによる振り分けは別
On Demandによるドメイン評価とConfigのドメインルールは、異なる段階で動作します。システムのOn Demandによるドメイン評価は、特定のドメインへの接続が必要かどうかを判断します。DOMAIN-SUFFIXは、通信がルール処理に進んだ後でポリシーを選択します。Configにドメインルールを追加しても、システムのオンデマンド接続条件は自動的に作成されません。
現在のOn Demand編集画面にドメイン評価の項目がある場合は、そこで指定できるドメインと接続評価の選択肢を使います。Evaluate Connectionは、直接Connectする動作とは異なります。ネットワークに一致したら直ちに接続するのではなく、ドメインへのアクセス要求をもとに評価します。ドメインにはexample.comのようなホスト名を入力してください。https://example.com/pathのような完全なURLは入力しないでください。
- ドメイン評価の設定項目があるか確認します。現在の画面にネットワーク条件しかない場合、ドメインをSSID欄に入力しないでください。まずネットワーク条件で接続し、その後Configでドメインごとの通信を振り分けます。
- 先行ルールによる遮断がないか確認します。上位のネットワークルールが一致してDisconnectを実行すると、後続のドメイン評価でその動作を上書きすることはできません。
- 新しい名前解決と接続で確認します。すでに開いているページ、キャッシュされた結果、再利用中の接続では、新たな評価が行われない場合があります。テストページを閉じてからリクエストを再送し、システムの接続状態を確認してください。
- DNSの経路を確認します。アプリ独自の暗号化DNSやキャッシュ、IPアドレスへの直接接続によって、実際のリクエストが想定したシステムのドメイン解決経路を通らないことがあります。すべてのアプリで同じトリガー結果になるとは限りません。
以下はConfigの振り分け構文の例であり、On Demandの設定ではありません。既存の設定を上書きしないでください。例に記載したドメインは説明用です。PROXYの実際の接続先は、利用者がすでに設定している内容によって決まります。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
条件が競合したら、ルールの順序で判断する
On Demandはルールの順序に沿って評価し、適用されるルールに一致すると対応するアクションを実行します。すべての一致結果を合算するわけでも、常にConnectがDisconnectより優先されるわけでもありません。具体的な例外は、広範な条件より前に配置してください。1つのルール内の条件も、どれか1つを満たせば必ず成立するとは限りません。たとえばWi-Fiインターフェースを指定したうえでSSIDも限定した場合、インターフェースと名前の両方が一致する必要があります。名前のリストには複数の候補を登録できます。
| ルールの順序 | 現在のネットワーク | 判断と調整 |
|---|---|---|
| すべてのWi-Fi Connectが先で、指定SSIDのDisconnectが後 | 指定SSIDに接続中 | 先に広範なルールが一致します。指定SSIDの例外を前に移動してください。 |
| 指定SSIDのDisconnectが先で、ほかのWi-Fi Connectが後 | 指定SSIDに接続中 | 例外のアクションが先に実行されます。ほかのWi-Fi条件は、後続のネットワークに適用します。 |
| Wi-Fiの例外が先で、モバイル通信のConnectが後 | モバイル通信に切り替え済み | Wi-Fi条件が一致しない場合は、モバイル通信の条件を引き続き評価します。 |
| 全ネットワーク対象のConnectが先で、ドメイン評価が後 | 先行する全ネットワーク条件に一致 | 先にConnectが処理されます。後続のドメイン評価が有効かどうかは、これだけでは判断できません。 |
どの条件にも一致しない場合でも、「必ず切断される」とは限りません。既存の接続、システムの現在の状態、ほかの設定が結果に影響する場合があります。デフォルトの動作を明確にしたい場合は、画面で設定できる範囲で末尾に分かりやすいルールを設定し、接続中と未接続の両方から確認してください。
Disconnect、Ignore、通信ポリシーのDIRECTも区別してください。Disconnectはオンデマンド接続のアクション、Ignoreは強制切断を意味せず、DIRECTは通信の振り分けポリシーです。この3つを同じ意味だと考えると、「直通に設定したのにVPNが表示される」といった誤解につながります。
決めたテスト項目で自動接続を確認する
Homeのスイッチだけを見て判断しないでください。システムのVPN状態、現在のネットワーク、目的のリクエスト結果をあわせて記録します。変更後は設定を保存してから、新しいネットワーク条件を発生させてください。一度の成功で確認できるのはその場面だけであり、すべての条件をテストしたことにはなりません。
- 指定Wi-Fi:VPN未接続の状態から例外SSIDに接続し、新しいリクエストを送信します。未接続のままかを記録し、次にVPN接続中の状態からも同じテストを行います。
- ほかのWi-Fi:実際に利用できる別のSSIDに切り替え、前のネットワークでの判定を引き継がず、設定した共通Wi-Fi条件に合うか確認します。
- モバイル通信:システム設定でWi-Fiをオフにし、モバイルデータ通信が使えることを確認してから目的のサイトにアクセスします。自動接続するか、ページを表示できるかを記録してください。
- ドメイン評価:先行ルールでアクションが決まらない条件で、テスト対象と比較対象のドメインにそれぞれアクセスします。既存ページの接続を再利用しないでください。
- 再評価の確認:Wi-Fiに再接続するなど、システムがネットワークを再評価した後にもう一度テストします。決まった秒数以内に必ず完了すると想定せず、実際の結果を記録してください。
よくある質問と手動操作への戻し方
手動で切断しても、なぜ自動的に再接続するのですか?
Settings → On Demandで自動トリガーをオフにしてから、Homeに戻って接続を切断してください。Homeのスイッチだけをオフにして、Connectに一致する条件を残しておくと、システムが後から再接続を開始する場合があります。自動接続が続く場合は、システムのVPN構成の詳細を開き、Connect On Demandの状態と現在使用中の構成を確認してください。
自宅のWi-FiをDisconnectに設定したのに、なぜ接続するのですか?
まずシステムのWi-Fi設定画面でSSIDを一字ずつ確認し、その例外がすべてのWi-Fiまたは全ネットワーク対象のConnectより前にあるか確認します。ルールが存在するかどうかだけでなく、実際の順序を記録してください。ほかの広範な条件を一時的に無効にしてから、Wi-Fiに再接続してテストします。
モバイル通信に切り替えた後、接続済みと表示されるのにウェブページを開けないのはなぜですか?
On Demandを一時的にオフにし、同じモバイルネットワークで手動接続をテストしてください。それでも失敗する場合は、トリガー条件を原因として調べ続けないでください。Homeで選択中の設定、利用中の接続パラメーター、Global Routingを確認してから、Configでどのルールに一致したかを調べます。
DOMAIN-SUFFIXを設定したのに、サイトを開いても自動接続しないのはなぜですか?
このキーワードはConfigでの通信振り分けにのみ使われます。Settings → On Demandに戻り、対応するドメイン評価条件を設定しているか確認してください。画面にその項目がない場合は、ネットワーク条件で接続し、接続後にConfigで振り分けます。2種類のルールを混同しないでください。
手動で接続を切り替える状態に戻すには?
既存の条件を記録してからOn Demandをオフにし、設定を保存します。Homeに戻って接続を切断し、システムのVPN構成の詳細画面でオンデマンドの状態を確認してください。Wi-Fiに再接続して新しいリクエストを送り、自動接続しないことを確認してからテストを終了します。既存のサブスクリプションを削除したり、すべてのルールを作り直したりする必要はありません。
最終的には、設定の意図が分かる状態に整理します。どのネットワークが接続を開始するか、どのSSIDが例外か、ドメインがシステムの評価対象か、接続後にどのConfigで通信を振り分けるかを明確にしてください。利用中のサブスクリプションを更新したり、接続先の設定を変更したりした場合は、まず手動接続を確認してから、これらの場面を再テストします。接続設定の変更と自動接続条件を混同せずに切り分けられます。