システムプロキシは、アプリの通信をローカルプロキシに渡すかどうかを決めます。ルーティングは、コアに届いた通信の出口を決めます。普段のブラウジングには「システムプロキシを自動設定+中国本土を除外」がおすすめです。振り分けの問題を調べるときは一時的に全プロキシへ切り替え、細かく制御したい場合はカスタムルールと未一致時の出口を設定しましょう。この記事ではデスクトップ版v2rayNを例に、Androidクライアントとの違いも説明します。
1. システムプロキシとルーティング:まずは2つの設定を理解する
「全プロキシにしたのに、一部のアプリが直接接続するのはなぜ?」多くの場合、原因はノードのプロトコルではなく、通信がコアに届いていないことです。v2rayNは設定の管理、コアの起動、システムプロキシの管理を行うGUIクライアントです。V2RayやXrayのコアは、ローカル接続の受け付け、ルーティングの判定、外部への接続を担当します。サブスクリプションのVMessやVLESSなどの設定はリモートへの接続方法を示すもので、システム上のすべてのアプリが自動的にその設定を使うわけではありません。
入口:通信をどこに渡すか
- 設定場所
- システムプロキシまたはアプリ内プロキシ
- アドレスの例
127.0.0.1- ポートの例
10808(実際の待ち受けポートを確認してください)- 適用範囲
- そのプロキシ設定に従うアプリと通信
ポート番号は説明用の例であり、すべての環境での既定値ではありません。入口がHTTP、SOCKS、混合プロトコルのどれを受け付けるかも確認してください。
ルーティング:通信をどこへ送るか
- 設定場所
- クライアントのルーティング設定とルール
- 直接接続
- この端末のネットワークから接続先へアクセス
- プロキシ経由
- 選択中のリモート設定を通じて接続先へアクセス
- ブロック
- ルールに従って指定した通信を拒否
コアのルールが適用されるのは、対応するコアの入口に届いた通信だけです。
たとえば、システムプロキシに従うブラウザーはリクエストをローカルの入口へ送り、コアがドメイン、宛先IP、入口タグなどに基づいて出口を選びます。一方、独自のネットワーク処理を使うなどしてシステムプロキシを無視するアプリは、そのまま直接接続する場合があります。この場合、全プロキシと中国本土を除外する設定を何度切り替えても、そのアプリの接続経路は変わりません。
2. 全プロキシ・中国本土を除外・ルールベース:3つの方式を比較
モード名はクライアントの画面やルーティングテンプレートによって異なる場合があります。「全プロキシ」「中国本土を除外」はよく使われるプリセットです。この記事でいう「ルールベース」は、カスタムルールを順に判定する方式を指し、すべてのクライアントに同じ名前のボタンがあるとは限りません。名前だけで判断せず、ルールの順序、リソースファイル、最終的なフォールバック先を確認してください。
中国本土を除外
おすすめ一般的なテンプレートでは、中国本土のドメインとIPアドレスを直接接続し、それ以外をプロキシ経由にします。プライベートアドレスも通常は直接接続に設定されています。普段使いの出発点として便利ですが、地理的な分類とサービスの提供地域は必ずしも一致しません。誤判定されるサイトには例外ルールを追加してください。
おすすめの用途:国内外のサイトを日常的に利用し、手動での切り替えを減らしたい場合。
全プロキシ
コアに届いた通信の出口をすべてプロキシにする設定です。ドメイン分類や振り分けルールの影響を一時的に切り分けるときに便利です。LANの例外が維持されるかは実装によって異なるため、プリンターや社内サービスに必ずアクセスできるとは限りません。
おすすめの用途:一時的な切り分けや、特定の接続先が誤った出口を使っていないか確認する場合。
ルールベース
直接接続、プロキシ、ブロックの条件を明示し、順番に照合します。一致しない通信の処理は最終フォールバックで決まります。「ルールに記載した接続先だけをプロキシ経由にする」ことが自動的に保証されるわけではありません。フォールバックを直接接続にした場合に限り、そのような動作になります。
おすすめの用途:ドメイン、入口、その他の条件に応じて細かく振り分け、ルールを自分で管理できる場合。
| 方式 | 一般的な通信経路 | 確認するポイント |
|---|---|---|
| 中国本土を除外 | 中国本土向けは直接接続、それ以外はプロキシ | ルールリソース、DNS、サイトごとの例外 |
| 全プロキシ | コアに届いた通信をすべてプロキシ経由にする | 入口の適用範囲、リモート接続の可用性、LANの例外 |
| ルールベース | 最初に一致した条件で出口を選択 | ルールの順序、アウトバウンドタグ、未一致時のフォールバック |
全プロキシにしても通信が速くなるとは限らず、ノードの帯域やネットワーク経路が改善するわけでもありません。中国本土向けの通信をいったん遠隔地経由にすると、接続の負荷が増えたり、サービスから海外ログインと判定されたりすることがあります。また、中国本土を除外する設定も地理情報を完全に判定できるわけではありません。ドメインが複数地域のCDNを使っている場合などは、ドメイン分類と名前解決後のIP分類が一致しないことがあります。
3. v2rayNの日常設定:入口を有効にしてからルーティングを選ぶ
以下では、v2rayNの一般的な中国語UIを例に説明します。デスクトップ版や旧UIでは項目の場所が異なる場合があるため、メニュー名を目安に探してください。同じ名前のルーティング項目がない場合は、ルーティング設定を開いてルールを確認し、名前の似た項目で代用しないでください。初回のテストでは複数の条件を同時に変えないよう、まずTUNを併用せずに確認するのがおすすめです。
-
現在の設定を確認する
メイン画面のサーバー一覧からインポート済みの設定を選び、右クリックして「アクティブサーバーに設定」を選択します。サブスクリプションの更新成功は設定を取得できたことを示すだけで、リモート接続の成功を保証するものではありません。まずコアが正常に起動していることと、ログに起動直後のエラーがないことを確認してください。
-
システムプロキシを有効にする
メイン画面下部の「システムプロキシ」→「システムプロキシを自動設定」を選択します。次に、システムに設定されたプロキシのアドレスとポートがクライアントの入口と一致しているか確認してください。たとえば
127.0.0.1:10808のように設定します。ポート番号の例は、実際の待ち受けポートに置き換えてください。 -
振り分けモードを選ぶ
メイン画面下部の「ルーティング」から、中国本土を除外する意味のプリセットを選びます。一般的な名称は「中国本土を除外」や「中国本土を除外(Whitelist)」です。カスタム項目しかない場合は、中国本土のドメインとIPを直接接続するルール、およびプロキシへのフォールバックが設定されているか確認してください。
-
接続先ごとに確認する
同じブラウザーで新しい接続を作り、日常的に使う国内サービス、プロキシが必要な接続先、実際に利用するLANサービスへそれぞれアクセスします。ログで出口を確認してください。ブラウザーでページが開けたことだけでは、プロキシ経由で接続した証拠にはなりません。
-
設定を記録して終了する
正常に使えるシステムプロキシ、ルーティング、DNSの組み合わせを記録しておきます。使用を終了するときは、「システムプロキシ」→「システムプロキシを解除」を選んでから終了してください。アプリ内で手動プロキシを設定した場合は、そのアプリでも設定を戻します。ローカルポートを閉じたあとも接続しようとする状態を防げます。
Androidでは、v2rayNGはXrayコア、v2flyNGはV2Flyコアと組み合わせて使います。通常はシステムVPNの許可を通じて通信をクライアントに取り込みます。これはデスクトップ版でシステムHTTPプロキシを変更する仕組みとは異なります。アプリが接続の対象に含まれているかを確認してからルーティングルールを調べ、特にアプリ単位の除外設定に注意してください。デスクトップ版の「システムプロキシを自動設定」をそのまま適用しないでください。
4. ルールの順序とDNS:振り分け結果が変わる理由
V2RayとXrayでは、一般的にルーティングルールを上から順に判定し、最初に一致したルールで出口が決まります。そのため、特定サービス向けの例外は、それを含み得る広範な分類より前に置く必要があります。中国本土のドメインをプロキシ経由にしたい場合でも、中国本土向けの直接接続ルールより後ろに置くと、先に一致したルールが適用され、例外が有効にならないことがあります。
- まず個別の例外を確認:特定のドメインをプロキシ経由にする場合、そのドメインに適用される可能性のある直接接続ルールより前に置きます。直接接続にする例外も同じ考え方です。
- 次にルールリソースを確認:
geosite:cnは対応するドメインリソースに、geoip:cnとgeoip:privateは対応するIPリソースに依存します。リソースが見つからないと、分類が不正確になるだけでなく、設定の読み込みに失敗する場合があります。 - 最後の出口を明確にする:「ルールに一致しない」ことは「自動的に直接接続する」ことを意味しません。通常、コアはデフォルトのアウトバウンドにフォールバックします。クライアントが明示的なフォールバックルールを生成する場合もあるため、実際の設定を確認してください。
- DNSの経路を区別する:アプリが自分で名前解決してから宛先IPをプロキシに渡す場合もあれば、ドメイン名を入口に渡す場合もあります。コアが取得する情報によって、適用できるドメイン条件は異なります。
たとえば、アプリがローカルでドメインを名前解決したあと、SOCKSで宛先IPに接続する場合、コアが元のドメインに基づいて振り分けられるとは限りません。一部の通信ではスニッフィングでドメイン情報を補えますが、すべてのプロトコルを識別できるわけではありません。ブラウザーのセキュアDNS、システムの名前解決、コアのDNSも、それぞれ別の設定です。いずれかを変更したら、ログと実際のリクエストで結果を確認してください。
5. モードを切り替えて検証する:変更する条件は1つずつ
「中国本土を除外すると開けないが、全プロキシなら開ける」場合は、同じアクティブ設定、アプリ、接続先を使い、ルーティングモードだけを切り替えてください。全プロキシで接続できるなら、元のモードで接続先が直接接続になっていないか、誤った分類に一致していないか、直接接続とプロキシで名前解決の結果が異ならないかを優先して確認します。これは原因の範囲を絞るための方法であり、一度成功しただけでルールの問題と断定することはできません。
- 現在の状態を記録:システムプロキシの状態、アクティブ設定、ルーティング名を記録し、ログにポートのバインド失敗がないことを確認します。
- 新しい接続でテスト:対象のページを閉じてから開き直します。必要に応じてテスト対象のアプリも再起動してください。確立済みの長時間接続は、モードを切り替えてもすぐに出口が変わるとは限りません。
- 出口を比較:ログにアウトバウンドタグが表示される場合は、直接接続とプロキシを区別して確認します。タグ名は設定によって異なるため、特定の固定語だけで判断しないでください。
- 元の設定に戻して例外を追加:元のルーティングに戻し、出口が誤っていたと確認できたドメインに、より具体的なルールを追加して新しい接続で再テストします。
どちらのモードでも接続できない場合は、入口とリモート接続の確認に戻ってください。ログにある connection refused は、接続先アドレスとあわせて判断します。接続先が 127.0.0.1:10808 なら、ローカルプログラムが待ち受けていない、またはポートの設定が違う可能性があります。リモートアドレスなら、該当するリモートサービスとネットワークの到達性を確認してください。エラーの文言だけを見て、ポート、プロトコル、DNS、ルーティングを同時に変更しないでください。
6. システムプロキシとモード切り替えに関するよくある質問
全プロキシにしたのに、特定のアプリだけ出口が変わらないのはなぜ?
まず、そのアプリがシステムプロキシに従うか確認してください。手動設定に対応しているアプリなら、クライアントで実際に使っているローカルアドレス、ポート、プロキシの種類を設定します。対応していないアプリでは、TUNによる接続を検討してください。モードの効果を確認するときは、新しい接続を作り、古いセッションで判断しないでください。
中国本土を除外したら、LAN機器にアクセスできなくなった場合は?
まずシステムプロキシの除外設定と、コアにプライベートアドレスを直接接続するルールがあるかを確認し、192.168.1.20 のような機器の実際のアドレスも調べてください。LAN内のドメイン名とIPアドレスでは経路が異なる場合があります。TUNを有効にしている場合は、該当するネットワーク帯のルーティング除外も確認してください。
クライアントを終了したら、ブラウザーもインターネットに接続できなくなった場合は?
システムにローカルポートを指すプロキシ設定が残っている可能性があります。v2rayNを再度起動し、「システムプロキシ」→「システムプロキシを解除」を選んでから終了してください。ブラウザーに手動プロキシを設定している場合も確認し、その設定はブラウザー側で戻してください。
サブスクリプションを更新すれば、ルーティングルールも自動で修正されますか?
通常、サーバーのサブスクリプションで更新されるのは接続パラメーターです。ローカルのルーティング、ルールリソース、DNSまで同期して修復されるとは限りません。まずアクティブサーバーが切り替わったかを確認し、次にルーティング設定でルールを確認してください。サブスクリプション自体の取得に失敗する場合は、更新時に使われるネットワーク経路も別途確認します。
「ルールベース」では、どのルールにも一致しないと接続できませんか?
いいえ。一致しない通信は、デフォルトのアウトバウンドまたは明示的なフォールバックルールで処理されます。直接接続、プロキシ経由、ブロックのいずれになるかは設定によって異なります。ルーティング設定の末尾にあるルールと、そのアウトバウンドタグが実際にどの出口を指しているかを確認し、方式名だけで判断しないでください。