On Demandは、システムがVPN接続を開始・切断するタイミングを決める機能で、通信を振り分けるルールの代わりにはなりません。利用中のサービスとサブスクリプションがあり、手動接続できる方を対象に、まず手動接続を確認し、次にSettings → On Demandでネットワーク条件を設定します。その後、Wi-Fi、モバイル通信、ドメインの各条件を個別に検証してください。ドメインによるオンデマンド接続にはDNSの評価が関わるため、「特定のサイトを開けば必ず接続する」という仕組みではありません。
On DemandとGlobal Routingの違い
ShadowrocketのOn Demandは、接続を開始する条件を設定する機能です。システムのVPN構成に保存すると、ネットワークの変化やドメインの評価条件に応じて、アプリを開いてHome画面上部のスイッチを毎回操作しなくても、システムが接続を試みます。タイマー機能ではなく、接続できないサーバーを修復する機能でもありません。
一方、Global Routingは接続後のリクエストの処理方法を設定します。この項目にはProxy、Direct、Config、Sceneがあり、Configは選択中の構成にあるルールで通信を振り分け、Sceneは設定済みのシーンに従って処理します。オンデマンド接続が開始されても、最終的にリクエストがDIRECTに振り分けられる場合があります。システムにVPN接続中と表示されても、すべてのリクエストがプロキシサーバーを経由するとは限りません。
ドメインの評価は、新たな名前解決リクエストをきっかけに始まる場合もあります。この流れは機能の違いを理解するためのもので、すべての接続がネットワーク切り替え後にのみ発生するという意味ではありません。問題を確認するときは、「接続が開始されるか」と「接続後にどう振り分けられるか」を分けて検証してください。
設定前に、手動接続の状態を再現できるようにする
この記事では、利用中のサービスとサブスクリプションがすでにあることを前提としています。On Demandにサーバー情報は含まれておらず、クライアントの購入に接続先が付属するわけでもありません。手動接続がまだ成功していない場合は、自動接続条件を追加する前に、サーバー、認証情報、ネットワーク到達性を確認してください。
- 自動再接続の影響を避けるため、Settings → On Demandでオンデマンド接続を一時的にオフにします。
- Homeに戻り、読み込み済みで使用するサーバーを選択します。選択マークが目的の項目に付いていることを確認してください。
- 接続スイッチをオンにします。初回はシステムの案内に従ってVPN構成の追加を許可してください。システムの許可手順は省略できません。
- Connectivity Testを実行し、普段アクセスできるページも開いてみます。テスト結果で確認できるのは、指定されたテスト先への接続状況です。すべての用途の通信を検証できるわけではありません。
- 現在のGlobal Routingの選択項目と有効なConfigを記録してから接続を切り、自動接続のテストに進みます。
Wi-Fiとモバイル通信:条件を確認してから動作を選ぶ
Settings → On Demandを開き、現在表示されているネットワーク条件と動作の選択肢を確認します。画面のレイアウトによって、条件と動作が同じ行に表示される場合と、個別に編集する場合があります。実際に表示されている項目に従ってください。設定の考え方は共通で、まずネットワークを指定し、その条件に一致したときに接続するか切断するかを選びます。用途を示すだけのメモをWi-Fi名として扱わないでください。
Wi-Fi名には実際のSSIDを入力
Wi-Fiを指定するときは、デバイスが現在接続しているネットワークの正式な名称、つまりSSIDを入力します。たとえば、以下のHome-WiFiは説明用の名称です。システムのWi-Fi画面に表示されている実際の名称に置き換えてください。ルーターの管理アドレス、Wi-Fiパスワード、https://で始まるURLは入力しないでください。引用符やワイルドカードも追加しないでください。
- システムのWi-Fi画面で現在のネットワーク名を確認し、大文字・小文字、空白、末尾の文字まで一字ずつ照合します。
- Settings → On Demandに戻り、Wi-Fi条件にネットワーク名を入力して、目的に合った動作を選び、保存します。
- On Demandを有効にし、対象のWi-Fiを一度切断してから再接続し、接続状態が想定どおり変化するか確認します。
- 別のWi-Fiに切り替えて同じ確認を行い、このルールが意図せずすべての無線ネットワークに適用されていないことを確かめます。
同じルーターでも周波数帯ごとに異なるネットワーク名が設定されている場合があります。また、同じSSIDが別の場所で使われていることもあります。名前が一致しても、安全なネットワークであることの証明にはなりません。見覚えのある名前だからといって、安全性を確認済みと判断しないでください。
モバイル通信ではインターフェイスの条件を指定し、通信事業者名は入力しない
モバイル通信の条件は、システムが現在使用しているモバイル通信インターフェイスを対象とします。電話番号、通信事業者名、モバイルネットワークのAPNを入力する項目ではありません。指定したWi-Fiから離れたら自動接続したい場合は、ほかのWi-Fi接続時の動作も考慮してください。モバイル通信のルールだけでは、「自宅のWi-Fi以外すべて」を意味しません。
Wi-Fiを指定する例
- 設定場所
- Settings → On Demand
- ネットワーク条件
- Wi-Fi
- 名称の例
Home-WiFi- 動作
- VPN接続を維持しない場合はDisconnect
そのネットワークでVPNを切断する必要がある場合にのみ使用します。SSIDは実際の名称に置き換えてください。
モバイル通信の例
- 設定場所
- Settings → On Demand
- ネットワーク条件
- Cellular
- 名称欄
- Wi-FiのSSIDは入力しない
- 動作
- VPNを自動接続する場合はConnect
保存後にWi-Fiをオフにし、デバイスが実際にモバイルデータ通信を使用していることを確認してからテストします。
Connectは接続を試みる動作であり、接続の成功を保証するものではありません。Disconnectは、該当する条件で接続を切断します。画面に無視や状態維持の動作がある場合も、「確実に切断する」という意味ではありません。確実に除外したいときは、ルール名だけで判断せず、動作の実際の意味を確認してください。
ドメイン条件:完全なURLではなくドメイン名を入力
ドメイン条件は、Wi-Fiやモバイル通信インターフェイスの条件と完全に同じではありません。システムのVPNオンデマンド機能では、ドメインを評価して接続を判断できます。ドメインが条件に一致すると、名前解決の結果とルールの要件に基づいて接続するかどうかが決まります。この仕組みにはEvaluateConnectionやConnectIfNeededの動作が関わることがあり、Webブラウザーのアドレス欄に入力した文字列との単純な照合ではありません。
Settings → On Demandを開き、現在の画面にドメイン関連の評価条件があるか確認します。実際に項目が表示されている場合にのみ設定してください。ドメイン一覧にはexample.comのような名前を入力します。以下の振り分け構文をドメイン欄に貼り付けたり、DNSサーバー欄を対象ドメインの入力欄と取り違えたりしないでください。
| 入力内容 | 対応方法 | 理由 |
|---|---|---|
example.com | ドメイン名の例として使う | スキーム、ポート、パスは含めない |
https://example.com/page | ドメイン部分だけを入力 | ドメイン評価ではWebページのパスは照合されない |
example.com:443 | ポート部分を削除 | 443はHTTPSでよく使われるポートで、ドメイン名には含まれない |
DOMAIN-SUFFIX,example.com,PROXY | Configのルール欄に入力 | これは振り分けルールであり、オンデマンド接続のドメイン入力形式ではない |
複数の個別ホストを対象にしたい場合は、ドメイン欄の一致条件を確認してください。*.example.comがどの欄でも有効だと決めつけてはいけません。ドメイン関連の項目によって、サフィックスの一致方法が異なる場合があります。まず特定のホスト名でテストし、対象を段階的に広げてください。
「VPN接続は維持し、指定ドメインだけをプロキシ経由にしたい」場合は、ドメインによるオンデマンド接続で振り分けるのではなく、Global Routing → Configとルールの内容を確認するのが適切です。以下は機能の違いを示す例です。該当ドメインへのリクエストに影響するため、目的に合った設定で使用してください。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
DOMAIN-SUFFIXはここでリクエストの送信先を決め、FINALはそれ以前のルールに一致しなかったリクエストを処理します。GEOIPやIP-CIDRも振り分けルールに属します。これらをConfigに記述しても、On Demandの接続開始条件にはなりません。
複数のルールがある場合:「より具体的な条件」ではなく、順序を確認
システムはオンデマンドルールをリストの順に評価し、最初に一致した最上位ルールを使用します。ドメイン名が長い、SSIDがより具体的といった理由で、自動的に優先順位が上がると考えてはいけません。1つの最上位ルール内にある異なる条件は、通常すべて満たす必要があります。同じ名称リスト内に複数の候補がある場合は、そのうち1つが一致すれば対象になります。ドメイン評価には内部動作が関わる場合もあるため、すべての条件を単純な一覧として扱うことはできません。
現在の画面でルールの順序を変更できる場合は、明確な例外条件を広範な条件より前に配置します。画面に固定の選択肢しかない場合、自由に並べ替えられると考えないでください。保存後の動作を確認し、各選択肢がどのように影響し合うかを検証します。特に、広範な接続条件を有効にしたまま、後続の除外条件が必ず適用されると期待しないでください。
- まず目的を明確にする:たとえば「指定したWi-Fiでは切断し、モバイル通信では接続し、その他のWi-Fiでは状態を変えない」。
- 条件の重複を確認する:すべてのWi-Fiで接続するルールは、指定SSIDで切断するルールと重複します。
- 例外を設定する:並べ替え可能なルール一覧では、指定SSIDの例外を先に評価し、その後に広範なWi-Fi条件を配置します。
- ドメイン条件は個別に検証する:最上位のネットワークルールですでにDisconnectが適用された場合、後続のドメイン評価で覆るとは限りません。
- 保存し直してテストする:アプリで変更した内容は、有効なVPN構成に保存する必要があります。編集画面を変更しただけで保存していない場合、システムが新しい条件を使用しているとは限りません。
ここで説明する順序はOn Demandのルール順であり、Config内のルールを上から順に照合する仕組みとは別です。どちらも「最初に一致したものを使う」方式でも、2つのリストを混同して優先順位を決めることはできません。
確認とトラブルシューティング:起動条件、接続、振り分けの順に確認
設定後は、指定したWi-Fi、その他のWi-Fi、モバイル通信をそれぞれテストしてください。ドメイン条件は個別にテストし、DNSキャッシュやバックグラウンドリクエストの有無も記録します。以下は確認すべき動作とチェック項目であり、あらゆるネットワーク環境での成功を保証するものではありません。
- 指定したWi-Fi:対象のSSIDに再接続し、設定したとおりに接続または切断されるか確認します。
- その他のWi-Fi:別のネットワーク名のWi-Fiに接続し、指定SSIDの条件をすべてのWi-Fiに適用する形で誤入力していないか確認します。
- モバイル通信:Wi-Fiをオフにしてモバイルデータ通信が使えることを確認し、接続が試みられるか確認します。
- ドメイン評価:ほかの条件が先に一致しない状態で、新しいドメインリクエストを発生させます。名前解決の状態と接続状態を合わせて確認してください。
手動で切断しても、なぜまた接続される?
まずSettings → On Demandでオンデマンド接続を一時的にオフにし、その後Homeに戻って接続スイッチをオフにします。その後、自動接続が起きなくなれば、何らかの条件が接続を開始していたと考えられます。広範なネットワーク接続ルールや、バックグラウンドでのドメインリクエストを1つずつ確認してください。接続を一時停止するには、自動接続の設定もあわせて調整する必要があります。
自宅のWi-Fiで切断する設定なのに、なぜ接続が続く?
まずシステムのWi-Fi画面でSSID全体を確認し、すべてのWi-Fiで接続する条件がより上位にないか確認します。保存後、ネットワークを切断してから再接続してください。ルールが正しいのに動作が異なる場合は、保存したばかりのShadowrocket VPN構成がシステムで使用されているか確認します。
指定したドメインを開いても接続されないのは、入力ミス?
まずドメイン欄からスキーム、パス、ポートを削除し、その条件が無条件の接続なのか、名前解決の必要に応じた接続なのか確認します。ConnectIfNeededの場合、現在のネットワークで名前解決が成功していると接続されないことがあります。DNSキャッシュ、アプリ独自の名前解決、先に一致したネットワークルールも確認してください。
自動接続は成功したのに、ページが開かないのはなぜ?
Homeに戻ってConnectivity Testを実行し、既定のサーバーが利用可能か確認してから、Global Routingと現在のConfigを確認します。テストに失敗した場合は手動接続に戻し、サーバーと認証情報を調べてください。テストは成功するのに特定のページだけ開けない場合は、該当リクエストのDNSと振り分けルールを確認します。On Demandの条件をむやみに追加しないでください。
元の状態に戻すには、Settings → On Demandをオフにして保存し、Homeの接続スイッチを手動で操作します。手動接続の状態に戻ったことを確認したら、条件を一度に1種類ずつ再度有効にしてください。サブスクリプションの更新で変わるのは、利用者が設定したサーバー一覧や関連設定です。オンデマンドルールが正しいことの証明にはなりません。更新後も、選択中のサーバーと実際の接続結果を確認してください。