ルーティングは、1つの接続を最終的にどのアウトバウンドへ送るかを決めます。ノードがプロキシ接続を確立する一方、ルーティングルールは、プロキシへ渡すリクエスト、直接アクセスするリクエスト、直ちに遮断するリクエストを判定します。両者は別の層です。VMessやVLESSのノードを変更しても振り分けルールは自動修正されず、サブスクリプションを更新しても通常はローカルのカスタムルーティングは上書きされません。
この記事は、v2rayNでノードに接続できるものの、中国本土への直接接続と日本国外へのプロキシ接続を設定したい方に適しています。上から順に評価される仕組み、v2rayNのメニュー操作、domainとipの記述、GeoSiteとGeoIPデータの参照、広告ドメインの遮断、ログで誤判定を特定する方法まで説明します。
V2Ray ルーティングルールまず判定モデルを理解する
V2RayとXrayのルーティングルールは、設定配列の順番に沿って確認されます。接続が最初に完全一致したルールに到達するとアウトバウンドが決まり、それ以降のルールは判定されません。そのため、範囲が狭く意図が明確なルールを前に置き、広範囲を受けるフォールバックルールを最後に配置します。広告ブロックは通常、中国本土への直接接続より前に置き、直接接続は最終的なプロキシのフォールバックより前に置きます。
ルールの domain、ip、port、network、protocol は判定条件で、outboundTag は一致後の送信先です。v2rayNが生成する設定では、出力タグに proxy、direct、block がよく使われますが、実際のタグは現在のクライアントが出力した設定を基準にしてください。名前だけで判断してはいけません。
ポート番号はクライアントの設定によって変わります。上記の 10808 と 10809 は、ローカルの入口ポートと接続先のリモートポートが別概念であることを示すための例です。ルーティングの port: 443 はアクセス先の443番ポートに一致する条件であり、v2rayNのローカル待受ポートではありません。両者を混同すると、ブラウザーの通信が意図したルールを完全に迂回することがあります。
- ドメインリクエスト:まずドメインルールで判定します。たとえば
domain:example.com、full:example.com、geosite:cnなどです。 - IPリクエスト:IPアドレスへ直接アクセスする場合は、
geoip:cn、geoip:private、またはCIDRのネットワーク範囲で判定できます。 - ドメインからIPへの変換:IPルールで判定するためにドメインを解決するかどうかは、
domainStrategyによって決まります。 - 最終的な送信先:どのルールにも一致しない場合、接続はルーティング設定の外側で定義されたデフォルトのアウトバウンドに送られます。結果はクライアントの設定生成方法に左右されます。
v2rayNでフォールバック可能なルーティングを構成する
以下はv2rayN 7.15.xの日本語版ではなく、中国語インターフェースを基準にした操作例です。マイナーアップデートでメニューの配置が変わる場合はありますが、確認する場所は基本的にパラメーター設定、ルーティング設定、現在のルーティングモードです。変更前に元のモードを記録し、少なくとも1つのノードで基本的な接続テストに成功していることを確認してください。そうしないと、ノード障害とルーティングミスがログ上で似たタイムアウトとして現れます。
-
コアを確認
「設定」→「パラメーター設定」→「Coreタイプ」を開き、現在のプロトコルに対応するコアを確認します。VLESSノードは通常Xrayコアで処理されます。古いVMess設定は、サブスクリプションの実際のフィールドに従って読み込んでください。
-
ポートを記録
「設定」→「パラメーター設定」→「基本設定」で、ローカルSOCKSとHTTPの待受ポートを確認します。LAN接続の切り替え状態も記録し、テストツールが誤ったポートへ接続しないようにします。
-
ルールを複製
「設定」→「ルーティング設定」に進み、現在使用できるルールセットを複製してから編集します。唯一の構成を直接上書きせず、元のルールを残しておけば1分以内に元へ戻せます。
-
順序を調整
広告ブロック、プライベートアドレスの直接接続、中国本土のドメインへの直接接続、中国本土のIPへの直接接続、最終プロキシの順に配置し、それぞれのアウトバウンドタグが存在することを確認します。
-
適用して再起動
保存後、新しいルーティング構成を選択し、コアを再起動してシステムプロキシを再び有効にします。編集内容を保存するだけで現在の構成を切り替えなければ、実行中の設定は変わりません。
システムプロキシの影響を受けるのは、システムプロキシ設定に従うプログラムだけです。プログラムが独自に直接接続したり、別のプロキシポートを固定使用したり、古い接続をキャッシュしていたりする場合、v2rayNのルーティングを変更しても通信はすぐには変わりません。テスト時は対象プログラムを終了して再起動し、システムプロキシが現在のv2rayN待受ポートを指していることも確認します。
中国本土への直接接続、日本国外へのプロキシ接続、広告ブロックの組み合わせ
保守しやすいルールは、判定の確実性が高い通信から処理します。広告カテゴリに一致した通信は遮断へ送り、LAN、ループバックアドレス、中国本土のリソースは直接接続へ送ります。残りのTCP・UDP通信はプロキシへ送ります。これなら海外ドメインをすべて列挙する必要がなく、新しいサイトも自然に最後のプロキシへ振り分けられます。
中国本土への直接接続
- ドメイン集合
- geosite:cn
- IP集合
- geoip:cn
- プライベートネットワーク
- geoip:private
- アウトバウンドタグ
- direct
プライベートアドレスのルールはプロキシのフォールバックより前に置き、ルーターの管理画面やLAN機器がリモートノードへ送られないようにします。
遮断とプロキシ
- 広告集合
- geosite:category-ads-all
- 遮断タグ
- block
- フォールバックネットワーク
- tcp,udp
- プロキシタグ
- proxy
フォールバック項目は必ず最後に置きます。先頭に置くと、後続の中国本土向け直接接続ルールをすべて奪ってしまいます。
対応するコア設定は、次のような構造で記述できます。この断片では routing オブジェクトだけを示しています。完全な設定に組み込む場合は、既存のインバウンド、アウトバウンド、DNS、ノードのパラメーターも必要です。v2rayNのルーティングエディターがグラフィカルな入力項目を使う場合は、同じ順序で1項目ずつ登録し、オブジェクト全体を1つのドメイン入力欄へ貼り付けないでください。
{
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"domain": ["geosite:category-ads-all"],
"outboundTag": "block"
},
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "direct"
},
{
"type": "field",
"domain": ["geosite:cn"],
"outboundTag": "direct"
},
{
"type": "field",
"ip": ["geoip:cn"],
"outboundTag": "direct"
},
{
"type": "field",
"network": "tcp,udp",
"outboundTag": "proxy"
}
]
}
}
domainStrategy: IPIfNonMatch は、ドメインルールに一致しなかった場合にIPを解決し、IPルールを再度試行できることを示します。「先にIP、後でドメイン」という意味ではなく、すべてのドメインを無条件に先行解決するわけでもありません。geosite:cn と geoip:cn を併用する一般的な振り分けに適したモードです。
- ルーターの管理アドレスやLANサービスへアクセスし、
geoip:privateが直接接続へ送られることを確認します。 - よく使う中国本土のサイトへアクセスし、ログに表示される対象ドメインと最終アウトバウンドが
directになっているか確認します。 - プロキシが必要な対象へアクセスし、広すぎるカスタムドメインルールによって先に直接接続されていないことを確認します。
- 広告リクエストを含むことが分かっているテストページを開き、遮断されたドメインを確認します。ページが空白になったかどうかだけで判断しないでください。
domain、ip、GeoSite、GeoIPの並べ方
domain ルールは、サイトの所属や明確なドメインを表すのに適しています。full:api.example.com は完全なホスト名だけに一致し、domain:example.com はルートドメインとサブドメインに一致します。regexp: は本当に必要な正規表現条件に使います。正規表現は負荷と誤一致のリスクが高いため、完全なドメインやサフィックスで表現できる場合は、先に正規表現を選ぶべきではありません。
geosite:cn はドメインを分類して整理したデータ集合で、geoip:cn はIPネットワーク範囲を整理したデータ集合です。両者は同じデータを別表記にしたものではありません。サイトが国外のホスティングアドレスを使っていてもサービス分類が中国本土の場合、GeoSiteによって先に直接接続されることがあります。ドメインが集合に含まれていなくても中国本土のIPへ解決されれば、IPIfNonMatch によりGeoIPルールへ引き継げます。
推奨構成:ドメインを優先し、IPで補完、最後はプロキシ
ドメイン判定層
- 広告カテゴリは先にblockへ送る
- 正確な例外をカテゴリ集合より前に置く
- geosite:cnをdirectへ送る
- 未一致時もログ確認用に元のドメインを保持
IPとフォールバック層
- geoip:privateでLANアクセスを保護
- geoip:cnで中国本土のIP判定を補完
- 最後にtcp,udpをproxyへ送る
- DNSの解決結果を現在のネットワークと一致させる
ルール順序の要点は「ドメインが常にIPより優先」ということではありません。まず明確な例外を置き、次に分類集合、最後にすべての接続を覆うフォールバック条件を置くことが重要です。
カスタム例外は集合ルールより前に置く必要があります。たとえば、中国本土のカテゴリに分類されたドメインが現在のネットワークで直接接続できない場合、完全なドメインのプロキシルールを追加し、geosite:cn より前に置きます。逆に、国外のサービスをローカルネットワークからのみ直接接続したい場合も、正確な直接接続ルールをプロキシのフォールバックより前に配置します。
{
"type": "field",
"domain": [
"full:api.example.com",
"domain:static.example.net"
],
"outboundTag": "proxy"
}
3種類の振り分け方法と適用範囲
環境を問わず固定された最適な振り分け方法はありません。日常のデスクトップ利用には、分類データとフォールバックの組み合わせが適しています。特定の業務ドメインを厳密に管理するなら正確なルールが向いています。短期的な診断では、一時的にグローバルプロキシを使い、問題が振り分け層にあるか確認できます。診断後は、誤判定をグローバルモードで隠すのではなく、説明可能なルールセットへ戻してください。
分類データ+プロキシのフォールバック
推奨geosite:cn、geoip:cn、プライベートアドレスへの直接接続を使い、最後にTCP・UDPルールで統一してプロキシへ送ります。ルール数が少なく、地理データを更新するだけで新しいドメインやネットワーク範囲にも対応できます。
適用例:日常の閲覧、サブスクリプションノードの切り替え、長期運用
正確なドメインの許可リスト
full: または domain: で直接接続とプロキシの対象を管理します。動作を予測しやすい一方、ドメインが変わった場合は手動で追加が必要です。複数のAPIドメインを使うサービスでは、ログと照合しながら完全に洗い出してください。
適用例:固定の業務サービス、少数の指定ドメイン、厳密な例外管理
一時的なグローバルプロキシ
管理対象の大半の接続をプロキシへ送り、ノードと対象サービスが接続できるかを確認します。ただし、中国本土への直接接続ルールは検証できず、LANやローカルサービスに異常が出る場合もあります。
適用例:短時間の障害調査、ノードの出口確認、振り分け結果の比較
v2rayNGでXrayコアを使う場合、domain、GeoSite、GeoIP、ルール順序の基本的な考え方は共通します。ただしAndroidでは、アプリごとのプロキシ、LANのバイパス、システムネットワークの切り替えも影響します。v2flyNGでv2flyコアを使う場合は、そのコアが実際にサポートする設定フィールドを基準にしてください。デスクトップ版が生成した完全な設定を、モバイル版の画面ルールとしてそのまま項目ごとに移植しないでください。
- 同じサブスクリプションはノードを提供するだけで、クライアントが異なればルーティング設定まで完全に同じになるとは限りません。
- VMessとVLESSはノードの接続方式を表すもので、対象ドメインを直接接続するかプロキシへ送るかを決めるものではありません。
- ノードを切り替えても通常はルーティングが有効なままですが、アウトバウンドタグをカスタマイズしている場合は参照先を再確認してください。
- アプリごとのプロキシを有効にすると、選択されていないアプリはコアを経由しない場合があり、対応するルーティングログも残りません。
ルール競合と振り分けミスの調査手順
調査はまず「リクエストがコアに入っているか」から始め、次に「どのルールに一致したか」、最後に「対応するアウトバウンドが接続できるか」を確認します。ノードを何度も切り替えるだけでは、プロキシの出口の一部しか検証できません。システムプロキシのポートミス、ルール順序の誤り、Geoデータの古さ、DNS解決結果の不一致は見つけられません。
v2rayNのメイン画面でログウィンドウを開き、ルーティング結果を確認できるレベルまで一時的にログレベルを上げてから、対象ドメインを1つだけ開くことをおすすめします。複数のページを同時に開くとバックグラウンドリクエストが大量に発生し、広告、画像、APIドメインが混在するため、テスト中のページに対応する接続を特定しにくくなります。
| 現象 | 優先して確認する項目 | 判断材料 | 対処方法 |
|---|---|---|---|
| 中国本土のサイトがプロキシ経由になる | プロキシのフォールバックが先頭にないか | ログには先にproxyが表示され、後続のdirectルールが実行されていない | tcp,udpのフォールバックをルール一覧の末尾へ移動する |
| 指定した国外ドメインが直接接続される | 広範なdomainルールに含まれていないか | 対象のサブドメインが上位ドメインのサフィックスまたはGeoSite分類に一致している | fullによる正確なプロキシルールを追加して前に配置する |
| ドメインとIPでテスト結果が異なる | domainStrategyとDNS | ドメインがIP判定に進んでいない、または異なるネットワークから解決されている | IPIfNonMatchと現在のDNS設定を確認する |
| LANアドレスを開けない | geoip:privateの配置 | プライベートアドレスが最後のプロキシルールに先に捕捉されている | プライベートネットワークの直接接続をプロキシのフォールバックより前に置く |
| 変更しても動作が変わらない | 現在のルーティング構成とコアの状態 | 編集したのは複製した構成で、実行中は古い構成が選択されている | 構成を切り替え、コアを再起動して対象の接続を作り直す |
| 一部の新しいドメインだけ振り分けがおかしい | GeoSiteとGeoIPデータの日付 | 分類ファイルが古く、対象ドメインやネットワーク範囲がまだ収録されていない | データファイルを更新してからコアを再起動し、再テストする |
ログに対象の接続がまったく表示されない場合は、まずプログラムがシステムプロキシに従っているか、変更前に確立された長時間接続を再利用していないか確認します。ブラウザーはすべてのウィンドウを閉じてから再起動し、コマンドラインツールではv2rayNのHTTPまたはSOCKSポートを明示的に指定してください。接続がコアに入っているのにタイムアウトする場合は、一致したアウトバウンドタグとノードの状態を確認します。
- テスト対象を固定:完全なドメインを1つ選び、トップページ上で変化し続けるサードパーティーリソースだけを唯一の判断材料にしないでください。
- DNSキャッシュを削除:ルールがIP判定に依存する場合、古い解決結果によって前後のテストが異なるネットワーク範囲に振り分けられることがあります。
- 最初の一致を確認:ルールの先頭から下へ進み、対象をカバーできる最初の条件を探します。期待しているルールだけを確認しないでください。
- アウトバウンドを個別に検証:一時的に対象の完全なドメインを指定したアウトバウンドへ送り、プロキシまたは直接接続自体が利用できるか確認します。
- ルールを1つずつ戻す:最小限のルールセットから始め、カテゴリ項目を追加します。毎回変更する条件は1つだけにしてください。
長期運用できる振り分けの基準
安定したルールセットに大量の重複ドメインを詰め込む必要はありません。広告ブロック、プライベートアドレスへの直接接続、中国本土のドメインへの直接接続、中国本土のIPへの直接接続、最終プロキシの5層を残し、問題が確認されたサイトだけに少数の正確な例外を追加する方が、出所不明で条件が重複する複数のルール一覧を取り込むより保守しやすいでしょう。
GeoSiteとGeoIPのデータは定期的に更新します。ただし、更新後は主要な業務ドメインの分類が変わっていないかも確認してください。分類データは一括判定を提供するもので、現在のネットワーク環境に対する絶対的な結論ではありません。再現性のある誤分類が発生した場合は、full: ルールでローカルの例外を作成し、コメントまたはルール名に追加理由と日付を記録します。
- ルール名には用途を明記します。たとえば「広告ブロック」「LAN直接接続」「中国本土ドメイン直接接続」「最終プロキシ」などです。
- 正確な例外は集合ルールより前に置き、広範囲のネットワークフォールバックは1つだけ残して最後に配置します。
- 変更するたびに、LAN、中国本土のドメイン、国外ドメイン、IPアドレスへの直接アクセスの4種類を個別にテストします。
- v2rayN、v2rayNG、v2flyNGを更新した後は、現在のコア、ルーティング構成、ローカルポートが以前の値を維持しているか確認します。
- サブスクリプション更新後にノードのプロトコルがVMessからVLESSへ変わった場合は、まずノード接続を確認してからルーティング結果を判断します。
最終的な判断基準は、ページが「開けそうに見える」かどうかではありません。ログの対象、該当ルール、アウトバウンドタグが互いに対応していることが重要です。ルール順序が明確で、例外の範囲が十分に狭く、フォールバックの位置が固定されていれば、中国本土への直接接続と国外へのプロキシ接続を繰り返し検証できます。クライアントの更新やサブスクリプションの変更後も、差異をすばやく特定できます。