v2rayNのルーティングルールを管理する方向けの記事です。まずドメイン用データとIPアドレス用データの違いを確認し、使用中のコアが読み込むデータファイルを更新します。その後、ルールの優先順位、ドメインの名前解決方法、ログを使って動作を確認します。Android版のv2rayNGやv2flyNGにも基本的な考え方は応用できますが、ファイルの場所や更新方法はPC版と異なります。
GeoIPとGeoSiteのマッチ対象
geosite.datにはタグ別のドメインルール、geoip.datにはタグ別のIPアドレス範囲が保存されています。これらはルーティング用のデータであり、サブスクリプションやノード設定ではありません。データファイルを更新しても、VMessやVLESSなどの接続設定は変わらず、利用可能なノードが自動で追加されることもありません。
GeoSiteドメインデータ
- ファイル名
geosite.dat- マッチ対象
- ドメインおよびデータ内で定義されたドメインルール
- 参照箇所
- ルーティングルールの
domain - よく使う記述
geosite:cn
分類はデータソースによって異なります。同じタグ名でも、ルールデータごとに内容が同一とは限りません。
GeoIPアドレスデータ
- ファイル名
geoip.dat- マッチ対象
- 接続先IPアドレス
- 参照箇所
- ルーティングルールの
ip - よく使う記述
geoip:private、geoip:cn
アドレスの分類とWebサイトの運営元は別のものです。CDNや地域をまたぐサービスでは一致しないことがあります。
geosite:cnは「.cnで終わるドメインだけ」に一致するわけではなく、実行時にWebサイトの言語を判定するものでもありません。データ内のcnカテゴリを参照します。一方、geoip:cnは対応するIPアドレス範囲のカテゴリを参照するため、両者は置き換えられません。
V2RayやXrayを使う一般的な構成では、この種のDATデータを利用します。v2rayNGはXrayコア、v2flyNGはv2flyコアを使用します。v2rayNで必要なデータ形式は、選択中のコアによって異なります。別形式のルールを使うコアで動作している場合は、ファイル名が似ているだけで本記事のDAT設定を流用しないでください。
ルールファイルの入手先と更新方法
データの主な入手先には、v2flyのドメイン分類・アドレスデータの生成プロジェクトや、コミュニティが管理する互換ルールデータがあります。ドメイン一覧を整理・コンパイルしてDATファイルを生成するため、テキストエディターで直接編集できる一覧ではありません。cn、privateや特定サービスのタグが含まれるかどうかは、各データソースの分類説明を確認してください。
クライアント内蔵の更新機能
おすすめクライアントに設定済みのデータソースと保存先を使うことで、ファイルの配置ミスを減らせます。更新前に使用するコアを確認し、内蔵データソースに現在のルールで参照しているタグが含まれるかも確認してください。
おすすめの用途:一般的なルーティング設定、独自データソースを使わない場合
ファイルを手動で置き換える
データソースを固定している場合や、オフラインで管理する場合に適しています。形式、タグ、実際のリソースディレクトリを自分で確認し、直前まで使えていたファイルも保管してください。作成日や入手先の異なるデータを安易に混在させて、そのまま使わないでください。
おすすめの用途:管理された環境、元に戻せる独自ルール
v2rayNでGeoファイルを更新する手順
ここでは「更新を確認」→「Geoファイルを更新」という項目があるv2rayNの画面を例に説明します。バージョンや画面構成によって、設定メニューや更新メニューに項目がある場合もあります。該当する項目が見つからなくても、推測したフォルダーにファイルを上書きしないでください。まずクライアントのヘルプと使用中のコアのログを確認し、リソースの保存先を特定します。
-
現在の設定を記録する
「設定」→「ルーティング設定」を開き、有効なルーティング設定、ルールの順序、デフォルトのアウトバウンドを記録します。現在のGeoファイルをバックアップし、復元できるよう保存元のフォルダーも記録してください。
-
使用中のコアを確認する
起動ログに表示されるコア名と起動引数を確認し、Xrayまたはv2flyのDAT形式を使用しているか確認します。プログラムのインストール先、作業フォルダー、リソースフォルダーは、それぞれ別の場所である可能性があります。
-
データを更新する
「更新を確認」→「Geoファイルを更新」を選びます。ダウンロードと置き換えが完了したことを確認してください。ネットワークエラーが表示された場合は、まずダウンロード接続の問題を解消してから再試行します。一部だけ成功した状態を、更新完了とみなさないでください。
-
使用中のコアを再起動する
クライアントからサービスを再起動するか、クライアントを終了して再度起動し、コアにファイルを読み込み直させます。メインウィンドウを閉じてもタスクトレイに最小化されただけの場合があるため、サービスが再起動したとは限りません。
-
起動ログを確認する
リソースファイルが見つからない、分類が見つからない、設定の解析に失敗したといったエラーがないか確認します。続いて、直接接続するドメイン、プロキシを経由するドメイン、LAN内のアドレスをそれぞれテストし、ルーティング結果を確認してください。
手動で更新する場合は、まずコアを停止し、互換性を確認したファイルを特定済みのリソースフォルダーに配置します。ファイル名はgeoip.datとgeosite.datのままにしてください。ダウンロードしたWebページやアーカイブ、拡張子が重複したファイルを、名前だけ変更してデータファイルとして使わないでください。更新後に起動できなくなった場合は、バックアップを復元して再起動し、新しいデータのタグや形式を確認します。
Android端末では、v2rayNGまたはv2flyNGに用意されているGeoデータの更新・インポート機能を使ってください。メニュー名はバージョンによって異なるため、PC版の手順をそのまま適用できません。また、アプリの専用フォルダーとシステムの「ダウンロード」フォルダーは別の場所です。操作箇所がわからない場合は、現在使えている設定を保ち、更新のためにアプリのデータを消去しないでください。
geosite:cn・geoip:privateを使ったルーティング設定
以下はネイティブV2Ray/Xray設定のroutingオブジェクトの例です。そのままインポートできる完全なクライアント設定ではありません。既存のアウトバウンドタグがdirectとproxyであることを前提としています。前者は直接接続、後者はプロキシ接続です。実際のタグ名が異なる場合は、設定に存在する名前に置き換えてください。
{
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"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"
}
]
}
}
- プライベートアドレスを優先:
geoip:privateを使うと、LAN内の接続先が誤ってプロキシに送られるのを防げます。データソースにこのタグが含まれている必要があります。「プロキシ不要のすべてのアドレス」を指すタグではありません。 - ドメイン分類で直接接続:接続先ドメインが
geosite:cnに一致した場合、このルールで直接接続します。IP分類による再判定は必要ありません。 - アドレス分類で補完:
geoip:cnは既知の接続先IPに一致します。ドメイン接続がIPアドレスによる判定に進むかどうかは、ドメインの名前解決方法にも左右されます。 - 最後のフォールバック:この例では、残りのTCP・UDP通信をプロキシに送ります。クライアントがすでにフォールバックルールを生成している場合は、末尾に競合するルールを重複して追加しないでください。
v2rayNの「設定」→「ルーティング設定」で編集する場合は、通常、ドメイン条件、IP条件、アウトバウンドをそれぞれ入力します。JSON全体を「ドメイン」の入力欄に貼り付けないでください。1つのルールにdomainとipの両方を指定すると、通常は両方の条件を満たす必要があり、いずれか一方だけで一致するわけではありません。「ドメインまたはIPアドレスに一致したら直接接続する」場合は、例のように2つのルールに分けてください。
実際の接続先でルーティングを検証する
更新が反映されたかどうかは、Webページが開けるかだけでは判断できません。アクセスできても、プロキシのフォールバック、アプリのキャッシュ、既存の接続が理由かもしれません。まずコアを再起動し、テストするアプリの既存接続を切断してから、新しいリクエストの接続先とアウトバウンドの記録を確認します。現在のログにルーティング情報がない場合は、一時的にログの詳細度を上げ、確認後に元に戻してください。
| テスト対象 | 想定される結果 | 切り分けるべき要因 |
|---|---|---|
実際に存在するLAN内の機器(例:192.168.1.1) | リクエストがコアに届いていれば、プライベートアドレスのルールで直接接続される | システムプロキシがLAN内の通信を除外していると、リクエストがコアに届かない場合がある |
現在のデータに含まれるcnタグのドメイン | ドメインルールで直接接続される | IPアドレスだけが送られている、ドメインが渡されていない、または分類データの出所が異なる |
| プロキシルールに明示的に登録したテスト用ドメイン | 設定済みのプロキシアウトバウンドが選択される | 前段に、より広い範囲を対象とする直接接続ルールがある |
| 明示的な分類がない接続先 | 名前解決方法とフォールバックルールに従って処理される | フォールバックで接続できたことをGeo分類に一致した結果と誤認する |
IPv4のプライベートアドレスは、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16の3範囲です。CIDRの説明には使えますが、すべてのデータソースにおけるgeoip:privateの全範囲を示すものではありません。実際のデータには、ループバックやリンクローカル、IPv6関連の範囲が含まれる場合もあるため、データソースの定義を確認してください。
Geoファイルだけでは、DNSリクエストが想定どおりのアウトバウンドを通るとは限りません。従来のDNSで使うポート53、アプリ独自の暗号化DNS、コア内蔵のDNSでは、通信経路が異なる場合があります。ドメインのルーティングが不安定な場合は、リクエストにドメイン名が保持されているか、DNS設定、TUNの対象範囲も確認してください。名前解決経路の問題を隠すために、分類データを何度も入れ替えないでください。
更新失敗やルール不一致でよくある問題
ファイルを置き換えたのに、ルーティングが変わらないのはなぜ?
まず使用中のコアを再起動し、起動引数とリソースフォルダーを確認してください。PCにv2rayNが複数インストールされている場合、デスクトップのショートカットから起動したものが、ファイルを置き換えたものとは限りません。最後に、正しいルーティング設定が有効になっているか確認し、無効な設定だけを編集していないか確かめてください。
ログにGeoSiteのタグが見つからないと表示される場合は?
ルールのタグ名に誤りがないか確認し、現在のデータソースにその分類が含まれているか調べてください。入手先が異なるデータでも同じタグが使えるとは限りません。元のデータファイルに戻すか、ルールを明示的なドメイン条件に変更できます。変更前に元のルールを保存し、後から比較できるようにしてください。
Geoファイルの更新がタイムアウトします。再インストールが必要ですか?
まず更新先に接続できるか確認してください。クライアントにプロキシ経由でダウンロードする設定がある場合は、利用可能なプロキシを使って再試行します。コアの再起動で更新処理が中断されないかも確認してください。再インストールしてもデータソースに接続できない問題は解決しないため、現在使えているファイルを優先して保管してください。
更新後、日本国内のサイトがプロキシ経由になりました。原因の調べ方は?
「有効なルーティング設定→ルールの順序→ドメインが渡されているか→タグに接続先が含まれるか→名前解決方法」の順に確認してください。必要であれば分類ルールの前に、full:example.comのようなドメインを指定したテストルールを追加し、ルールの動作だけを確認します。テスト後は削除してください。原因を調べる代わりに、すべての通信を直接接続へ変更しないでください。
長期運用では、一度に変更する要素を1種類に絞ることをおすすめします。まずデータファイルを更新して動作を確認し、その後でルールやDNSを調整してください。データの入手先、置き換えた場所、作業日時を記録しておけば、元に戻せる保守記録になります。更新頻度は分類内容の変化に合わせ、ファイルの日付だけを理由に、検証済みのルールを頻繁に置き換える必要はありません。