Shadowrocketで特定のサイトだけをプロキシ経由にするには、3つの設定が必要です。Home → Global RoutingでConfigを選び、現在の設定に対象ドメインのプロキシルールを記述し、最後にFINAL,DIRECTでそれ以外の通信を処理します。利用可能なサーバー設定を用意済みの方向けに、最小限のルール例、マッチ範囲、確認手順を紹介します。example.comは構文の説明用で、接続先として使えることを示すものではありません。
1. Configモードとポリシー名を確認する
「指定したサイトだけをプロキシ経由にする」にはルールによる振り分けが必要です。接続スイッチをオンにするだけでは実現できません。HomeのGlobal Routingでは、今回の接続で使用するルーティング方式を選びます。Configでは設定ファイルを管理します。名前は似ていますが、前者はルールに従って処理するかどうか、後者はどのルールを使うかを決めます。
| 項目 | 用途 | この記事での扱い |
|---|---|---|
Config | 現在の設定に記述されたルールに従ってポリシーを決定 | これを選んで対象ドメインを確認 |
Proxy | 通信をプロキシ経由で処理 | 「ほかのサイトは直接接続」のルール確認には使用しない |
Direct | 通信を直接接続で処理 | これだけではドメインのプロキシルールが有効か確認できない |
Scene | Sceneの設定に従ってルーティングを決定 | 今回のテストではConfigに切り替え、Sceneの条件による影響を減らす |
ルールの3番目の項目はプロトコル名ではなく、ポリシーです。DIRECTは直接接続を表します。この記事では、設定済みで利用可能なプロキシポリシーとしてPROXYを使用します。編集前に、現在の設定でこの名前が正しく認識され、想定したサーバーを参照していることを確認してください。カスタムのポリシーグループを使う場合は、例のPROXYをグループの正確な名前に置き換えてください。存在しない名前をそのままコピーしても動作しません。
2. DOMAIN-SUFFIXの最小設定とマッチ範囲
example.comとそのサブドメインをプロキシ経由にし、それ以外の通信は直接接続にする場合は、設定の[Rule]セクションに次の2つのルールを記述します。これはルール部分の例であり、サーバーやポリシーグループなどを含む完全な設定ではありません。既存ファイル全体を置き換えたり、ファイル内に複数のルールセクションを作成したりしないでください。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
DOMAIN-SUFFIXは、ドメインのサフィックスを境界にしてマッチします。ドメイン名だけを指定し、https://やパス、:443は記述しません。*.example.comの形式にする必要もありません。ルートドメインとそのサブドメインに適用されますが、別のドメインに同じ文字列が含まれているだけではマッチしません。
| リクエスト先 | マッチするか | 上記の最小ルールでの結果 |
|---|---|---|
example.com | はい | PROXY |
www.example.com | はい | PROXY |
api.example.com | はい | PROXY |
notexample.com | いいえ | DIRECT |
example.net | いいえ | DIRECT |
www.example.comだけをプロキシ経由にし、同じサイトのapi.example.comは直接接続にする場合は、ルートドメイン全体に適用するのではなく、DOMAIN,www.example.com,PROXYのようにドメインを正確に指定します。実際のリクエストのホスト名に基づいてルールを記述してください。サイト名やページタイトルをドメインとして指定することはできません。
3. DOMAIN-KEYWORDとルールの順序
DOMAIN-KEYWORDは、ドメインに指定した文字列が含まれているかを確認するため、サフィックスルールより広い範囲にマッチします。たとえばDOMAIN-KEYWORD,example,PROXYでは、example.comだけでなくnotexample.comも対象になる可能性があります。少数のサイトを正確に指定したい場合は、DOMAINまたはDOMAIN-SUFFIXを優先し、行数を減らすためにマッチ範囲を広げないでください。
ルールは通常、上から順に判定され、最初にマッチしたルールのポリシーが適用されます。より具体的な例外は、範囲の広いルールより前に記述してください。次の例では、static.example.comを直接接続にし、それ以外のexample.comのドメインをプロキシ経由にします。残りのリクエストは直接接続です。
[Rule]
DOMAIN,static.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
ポイント:例外、対象範囲、最後にフォールバックの順で記述
保存前に先頭から順に確認します。個別の例外が先にマッチするか、サフィックスの範囲が広すぎないか、FINALが末尾にあるかをチェックしてください。この順序で見直せば、同じドメインのルールを追加し続けるより、競合を見つけやすくなります。
既存の設定にGEOIP、IP-CIDRや外部ルールセットがある場合、FINAL,DIRECTを追加しても、それらのルールですでに決まった処理は上書きされません。「指定サイトだけをプロキシ経由にする」には、前方にプロキシを指定する別のルールがないかも確認してください。最後の1行を変更しただけで、既存設定全体が許可リスト方式になるわけではありません。
4. HomeとConfigで適用して動作を確認する
次の手順では、ルールとルーティングモードだけを変更し、DNS、サーバーのプロトコル、On Demandは同時に変更しません。こうすることで、アクセス結果の変化が今回のルール変更によるものか判断しやすくなります。Settings → On Demandで自動接続が設定されている場合は、意図しない再接続を設定未保存と取り違えないよう、事前に状態を記録してください。
-
サーバーを確認
Homeで、選択中のサーバーまたはポリシーグループが利用可能か確認します。利用中のサービスやサブスクリプションがある場合は、まず元の設定で正常にアクセスできることを確認してから、ルールを試してください。
-
元の設定を保存
Configを開き、現在使用中のファイルを確認して元の内容を保存します。[Rule]セクションを編集し、プロキシポリシー名、半角カンマ、FINALの位置を確認してください。
-
ルールモードを選択
編集した設定を保存して選択し、Home → Global Routing → Configに戻ります。必要に応じて一度切断してから再接続し、新しい接続で動作を確認してください。
-
2つの接続先を比較
実際に指定したドメインと、ルールに記載していないドメインにそれぞれアクセスします。ページが開くかどうかだけでなく、リクエスト記録にあるホスト名、マッチしたルール、適用されたポリシーを確認してください。
-
関連するリクエストを確認
本文は表示されるのに画像の読み込みやログインに失敗する場合は、失敗したリクエストの実際のドメインを確認してください。プロキシ経由にする必要があると確認できた場合に限り、該当ルールを追加して再テストします。
ブラウザが古い接続を再利用することがあるため、ページを更新しただけでは新しい接続で確認できない場合があります。ルールを変更したら、以前のリクエストを終了して新たにテストしてください。再生中の長時間接続を使って、新しいルールの動作を判断しないでください。example.comは構文説明用の予約ドメインです。実際の確認では、アクセスが必要で利用権限のあるドメインに置き換えてください。
5. FINALをDIRECTにしても想定どおりにならない場合
まず「ポリシーが想定と違う」のか、「ポリシーは正しいがリクエストに失敗する」のかを切り分けます。PROXYにマッチして接続できない場合は、サーバーまたは接続先に問題がある可能性があります。DIRECTにマッチして開けない場合は、ローカルネットワークから接続先に直接アクセスできない可能性があります。ドメインルールを追加しても、すべての接続エラーが解消するわけではありません。
エラー:The request timed out.
原因と対処:リクエストがタイムアウトしています。このメッセージだけではルールの記述ミスかどうか判断できません。まず失敗したリクエストに適用されたポリシーを確認してください。想定どおりPROXYにマッチしている場合は、利用可能な既存サーバーで比較テストし、すぐにFINALを変更しないでください。
エラー:A server with the specified hostname could not be found.
原因と対処:ホスト名を解決できません。まずアドレスの入力とリクエストのホスト名を確認し、次に現在の設定のDNSを確認してください。名前解決の失敗を、DOMAIN-SUFFIXがサブドメインをカバーしていないためだと判断しないでください。
上記はシステムのネットワークリクエストで返されることがある英語のエラーメッセージです。実際の表示は、呼び出し元やシステムの言語によって異なります。診断時は「開けない」とだけ記録せず、元のメッセージ、失敗したドメイン、実際に適用されたポリシーを記録してください。
- すべてのリクエストがプロキシ経由になる:Home → Global RoutingがProxyのままになっていないか確認し、次にFINALより前に広範囲のプロキシルールがないか確認してください。
- 対象サイトがまだ直接接続になる:別のConfigを選択していないか、対象ドメインより前にDIRECTルールがないか確認します。そのうえで、実際にアクセスしているサブドメインを確認してください。
- ページの一部しか表示されない:ページが別のリソースドメインを読み込んでいる可能性があります。サフィックスルールの対象は指定したドメイン階層に限られ、ページが参照する外部リソースすべてに自動適用されるわけではありません。
- IPアドレスを直接入力すると想定どおりにならない:ドメインルールは任意のIPアドレスに適用されません。固定アドレスが本当に必要な場合に限り、IP-CIDRの個別設定を検討し、アドレスの変更や共有アドレスの影響も考慮してください。
6. 特定サイトのルール設定に関するよくある質問
example.comだけを指定した場合、wwwもプロキシ経由になりますか?
DOMAIN-SUFFIX,example.com,PROXYを使うと、www.example.comも対象になります。DOMAIN,example.com,PROXYの場合はルートドメインだけにマッチします。必要に応じて正確なドメインを追加するか、サフィックスルールを使ってください。
特定のURLのパスだけをプロキシ経由にできますか?
example.com/accountをDOMAIN-SUFFIXに記述することはできません。ドメインによる振り分けではURLのパスを区別できず、同じホスト名の異なるパスに別々のポリシーを適用することもできません。まず、サブドメインごとに分けられる要件か確認してください。
サブスクリプション更新後、ルールも書き直す必要がありますか?
まず更新したものがHomeのサーバーサブスクリプションなのか、Configのリモート設定なのかを確認してください。前者は主にサーバー情報を更新しますが、後者はローカルで編集した内容を置き換える可能性があります。更新後は現在の設定を開いてルールを確認し、自分で加えた変更のコピーを保存してください。
FINAL,DIRECTは接続を切断するという意味ですか?
いいえ。未マッチのリクエストに適用するポリシーを指定するもので、Homeの接続スイッチをオフにする設定ではありません。接続を維持してConfigを使えば、指定したドメインにプロキシルールを引き続き適用できます。
最終確認では、対象ドメインが想定したプロキシポリシーにマッチすること、ルールに含めていないテスト用ドメインがDIRECTにマッチすること、保存して再接続した後も結果が変わらないことの3点を確認してください。サイトを追加するときは、ドメインを1組ずつ追加して同じ手順で検証し、変更内容を記録します。許可リストが、説明できない広範囲のマッチに変わるのを防げます。