v2rayNGのルーティング設定ガイド|中国国内サイトは直結、海外サイトはプロキシに振り分ける方法

v2rayNGのルーティング設定を解説。地域別の直結・プロキシ振り分けに加え、LAN内アドレスや広告ドメイン、誤判定への対処と動作確認の方法を紹介します。

この記事の概要

ノードを登録して接続できているものの、国内サービスは直結し、それ以外の通信はルールに応じてプロキシ経由にしたいAndroidユーザー向けです。まず「LAN内および中国IPを除外」を選んで基本設定を整え、必要なドメイン例外を追加し、ログと比較テストで接続先を確認します。ルーティング、アプリごとのVPN適用、DNSの違いを整理し、ひとつの設定だけであらゆる接続問題を説明しないようにします。

まず確認:ルーティングの対象となる通信

v2rayNGはXrayコアでプロキシ接続を処理します。選択中のノードは接続先サーバーを決め、ルールは個々のリクエストをそのサーバー経由にするかどうかを決めます。VMessやVLESSなどのノードプロトコルが「中国国内は直結、海外はプロキシ」という動作を自動で設定するわけではありません。サブスクリプションの更新に成功しても、ルーティングが希望どおりに設定されたとは限りません。

この記事ではAndroidのVPNモードを前提にします。アプリの通信はいったんv2rayNGに入り、コアが直結・プロキシ・ブロックのいずれかを選びます。アプリごとのプロキシ設定を有効にしている場合、対象外のアプリはこの処理経路を通らずに通信することがあります。アプリ独自のネットワーク設定や、ほかのVPNサービスもテスト結果に影響します。

まず区別:アプリの適用範囲と通信先

アプリごとのプロキシ設定
  • Androidアプリ単位でVPNの処理対象に含めるかどうかを選びます。
  • 同じアプリ内のサイトごとではなく、特定のアプリを対象外にしたい場合に適しています。
  • テストに使うブラウザーがVPNの処理対象に含まれていることを確認します。
ルーティング
  • コアに入ったリクエストを、ドメイン名やIPアドレスなどの条件で振り分けます。
  • 同じブラウザーから、直結サイトとプロキシ経由のサイトの両方にアクセスできます。
  • 完全なカスタム設定では独自のルールが定義され、画面上のプリセットが使われない場合があります。

まずテスト対象のアプリがVPNを通る状態にします。そのうえでルーティングを確認してください。「プロキシログがない」だけでは、直結ルールに一致したとは判断できません。

プリセットを選ぶ:元に戻せる基本設定から始める

メイン画面のサイドメニューから「設定」を開き、ルーティング関連の設定にある「事前定義ルール」を探します。バージョンによっては「ルーティング設定」がサイドメニューに独立していたり、項目名が「ルーティングモード」になっていたりします。メニュー構成が異なる場合は、「事前定義ルール」や以下の項目名を目印にしてください。ノード選択メニューはルーティング設定の入口ではありません。

LAN内および中国IPを除外

おすすめ

LAN内の通信と中国IP宛ての通信をプリセットに従って直結し、それ以外は通常プロキシ経由にします。分類は使用中のルールデータと生成された設定に左右されるため、よく使うサイトで動作を確認してください。

おすすめの用途:国内サービスと海外サービスを併用する日常的な環境。

LAN内アドレスを除外

LAN内の通信は直結し、それ以外は通常プロキシ経由にします。中国IPの分類に基づくインターネット通信の振り分けは行いません。

おすすめの用途:地域別の分類による影響を減らしたい場合や、一時的な比較・切り分け。

グローバルプロキシ

VPNの処理対象となる通信の大部分をプロキシ経由にします。すべてのアプリをVPNに通す設定とは異なり、DNS、アプリの除外リスト、カスタム設定の影響も受けます。

おすすめの用途:問題の原因がルーティングにあるか短時間で切り分ける場合。テスト後は普段使いのプリセットに戻してください。

  1. 現在の設定を記録

    現在の「事前定義ルール」「ドメインポリシー」とカスタムルールを保存し、アプリごとのプロキシ設定が有効かどうかも記録します。元に戻せる状態を確保し、ノード・DNS・ルーティングを同時に変更しないでください。

  2. プリセットを選択

    「設定」→ルーティング関連の設定→「事前定義ルール」で「LAN内および中国IPを除外」を選びます。サイドメニューに「ルーティング設定」がある場合は、その項目から同じ名前の設定を探してください。

  3. ドメインポリシーを確認

    「ドメインポリシー」を探し、現在の値を記録します。初めて設定する場合は既定値のままで構いません。IPルールによる追加の照合が必要な場合に限り、後述のIPIfNonMatchを検討してください。

  4. 再起動してテスト

    保存後、接続を停止して再起動し、新しい設定を読み込ませます。LAN内の管理画面、中国国内のサイト、海外サイトの順に開いて接続できるか記録してから、例外ルールを追加します。

LAN内通信の直結:名前よりIPアドレスで確認

ルーター、プリンター、NASにはプライベートIPアドレスがよく使われます。これらのリクエストを遠隔地のプロキシサーバーに送ると、通常はスマートフォンが接続している家庭内ネットワークにアクセスできません。プリセットのプライベートアドレスルールで対処できますが、実際のアドレス範囲が含まれているか確認してください。192.168.1.1を1つ追加するだけでは不十分です。

10.0.0.0/8
プライベートIPv4アドレス範囲
172.16.0.0/12
第2オクテットが16~31の範囲をカバー
192.168.0.0/16
家庭内LANでよく使われるアドレス範囲

対応するデータファイルを使う設定では、geoip:privateでプライベートアドレスなどのローカル用途のアドレス分類を参照できます。実際の範囲は使用するデータに従います。IPv6のLAN内アドレスも別途確認してください。たとえばユニークローカルアドレスはfc00::/7です。IPv4の3つの範囲だけでは、すべてのローカル通信をカバーできません。

ドメイン例外:個別ルールを分類ルールより先に置く

Xrayのルーティングルールは設定順に評価され、最初に条件に一致したルールで通信先が決まります。そのため「特定のドメインは必ずプロキシ経由にする」場合は、中国IPを直結する広範な分類より前に追加します。画面ではプロキシ・直結・ブロックが別々の入力欄になっている場合がありますが、画面上の並びが最終的なルール順とは限りません。エクスポートした設定やログで確認してください。

記述方法照合範囲用途
full:api.example.com完全一致するドメインのみ他のサブドメインには影響させず、特定のホストだけ変更
domain:example.comドメインとそのサブドメインに一致サイト全体を直結またはプロキシ経由にする
geosite:cnデータファイル内のcnドメイン分類に一致中国国内サイトを広く分類
geoip:cnデータファイル内の中国IP分類に一致接続先IPに基づく追加判定

以下はXrayのルール例であり、そのままインポートできる完全なノード設定ではありません。example.comは構文を示すための例示ドメインです。実際に使う際は対象サイトのドメインに置き換えてください。proxy、direct、blockは、現在の設定に実在するアウトバウンドタグと一致させる必要があります。

{
  "rules": [
    {
      "type": "field",
      "ip": ["geoip:private"],
      "outboundTag": "direct"
    },
    {
      "type": "field",
      "domain": ["full:ads.example.com"],
      "outboundTag": "block"
    },
    {
      "type": "field",
      "domain": ["full:api.example.com"],
      "outboundTag": "proxy"
    },
    {
      "type": "field",
      "domain": ["geosite:cn"],
      "outboundTag": "direct"
    },
    {
      "type": "field",
      "ip": ["geoip:cn"],
      "outboundTag": "direct"
    }
  ]
}

DNSと分類:海外サイトが直結されるように見える理由

「海外サイト」はコアが直接判別できる属性ではありません。ドメインが分類データベースの特定カテゴリに登録されていることもあれば、CDNによって中国国内のIPアドレスに解決されることもあります。同じサービスでも、ログイン・画像・APIで異なるドメインを使う場合があります。そのため、Webサイトのメインドメインがプロキシ経由でも、すべてのサブリクエストが同じ経路を通るとは限りません。

特定のサービスを確実にプロキシ経由にしたい場合は、対象ドメインを指定した例外ルールを追加してください。地域全体のプロキシ対象を広げる必要はありません。ブラウザーが独自の暗号化DNSを使うと、コアから見えるドメイン情報が変わる場合があります。スニッフィングでドメインを補完できる接続もありますが、プロトコルや暗号化方式に左右されるため、確実な識別手段とは限りません。

広告ドメイン:まず対象を絞ってブロック

広告ブロックルールは許可ルールより前に置くのが適切ですが、まず実際に確認できた個別ドメインから始めてください。一部のルールデータにはgeosite:category-ads-allという分類があります。使う前に、使用中のファイルにその分類が含まれていることを確認してください。分類がない場合、広告が一部残るだけではなく、設定の読み込みに失敗する可能性があります。

広告は消えたもののページが読み込み中のままになる場合は、ログに記録された失敗ドメインを残し、1つずつルールを戻してください。大量のルールを一度に読み込んでトップページだけを確認しても、ログイン・認証・動画再生での誤ブロックを特定するのは困難です。

ルーティングを検証:ログ・出口・元に戻す方法

ルールの保存後、v2rayNGを停止して再起動し、テストに使うアプリの既存接続も閉じます。確立済みの長時間接続は以前の経路を使い続けることがあります。ブラウザーのキャッシュにより、リクエストが発生していないのにページが正常に見える場合もあります。以下は確認手順であり、あらかじめ実測結果を断定するものではありません。

テスト対象期待される結果異常時の確認項目
実際のルーター管理IPLAN内で直結し、管理画面を開けるプライベートアドレスのルール、Wi-Fiの分離設定、実際のゲートウェイ
よく使う中国国内サイトルールどおり直結で接続ドメイン分類、IP分類、先に評価される例外ルール
プロキシ経由に指定したドメインログにプロキシのアウトバウンドタグが表示されるルールの順序、サブドメインの指定漏れ
新たにブロックしたドメインリクエストが失敗する、またはブロックのアウトバウンドが表示されるキャッシュ、長時間接続、VPNの処理対象に含まれているか

メイン画面のサイドメニューから「ログ」を開き、新しい接続を確認します。現在のログレベルでルーティング情報が表示されない場合は、一時的に「情報」レベルまで上げて問題を再現し、接続先と実際のアウトバウンドタグを確認してください。終了後は元のログレベルに戻します。ログに必要な情報が出ていない場合、「接続成功」という表示だけで適用されたルールを推測しないでください。ログを共有する前に、ノードのアドレス、サブスクリプションURL、個人のアクセス履歴を削除してください。

  1. 変更条件を固定:同じノード、同じWi-Fi、同じテストアプリを使い、毎回変更するルールは1つだけにします。
  2. 接続元を確認:IPアドレス確認サイトを直結に明示的に設定して結果を記録し、次にプロキシ経由に変更して比較します。1回の確認で分かるのは、そのサイトへの今回のリクエスト経路だけです。
  3. グローバルプロキシと比較:ルーティングモードでは失敗し、グローバルプロキシでは成功する場合は、そのサイトのルールとDNSを重点的に確認します。どちらのモードでも失敗する場合は、ノードとサーバー側の接続状況も調べてください。
  4. 更新後に再確認:geoデータやサブスクリプションを更新したら、よく使うサイトを再テストします。分類の変更でルーティングが変わる場合があります。サブスクリプションの更新は通常、ルールデータベースの更新とは別です。
  5. 問題があれば元に戻す:起動できない、または多くのサイトで異常が起きる場合は、元のプリセットとカスタムルールに戻してから、1つずつ追加してください。原因不明の変更を重ねないようにします。

最終的な設定では、次の3点を説明できるようにします。VPNの対象となるアプリ、直結またはプロキシ経由に明示的に指定した接続先、どのルールにも一致しない場合のアウトバウンドです。まず安定したプリセットで大半の通信を処理し、誤判定は少数の個別ルールで修正する方が、広範なルールを次々に追加するより管理しやすくなります。

v2rayN / v2rayNG ダウンロード