GeoIP・GeoSiteデータファイルの更新方法:ルーティング振り分けの基盤

geoip.datとgeosite.datはドメインとIPの分類精度を左右します。データが古いと振り分けを誤ることがあります。本記事では、2つのデータファイルの役割、クライアントでの更新方法、推奨される更新頻度を解説します。

この記事の概要

この記事は、v2rayN、v2rayNG、v2flyNGでルーティングルールを利用しているものの、直接接続すべきサイトがプロキシ経由になる、プロキシ対象のドメインが誤って直接接続される、広告ブロックのルールが不十分といった問題に悩む方に適しています。GeoIPとGeoSiteのマッチング段階を整理し、クライアント内での更新、手動置換、更新後の検証まで行えるようにします。週1回の確認を基本としたデータ管理の流れも紹介します。

GeoIPとGeoSiteがそれぞれ解決する問題

V2RayとXrayのルーティングモジュールは、リクエストの特徴に応じて出力先を選択します。接続は直接接続、プロキシ、ブロックのいずれかに振り分けられ、判断材料には通常、ドメイン、宛先IP、ポート、ネットワーク種別、プロトコルなどが使われます。GeoSiteとGeoIPはノード設定ではなく、VMessやVLESSなどの接続を確立するものでもありません。ルーティングルールが参照する分類データです。

geosite.datにはドメインの分類が保存されています。ルール内のgeosite:cngeosite:category-ads-allなどの指定は、このファイルから対応するタグを検索します。クライアントがドメインを取得した時点でGeoSiteのマッチングを先に行えるため、ドメインルールは通常、宛先IPの解析が必要なルールより前に配置します。

geoip.datにはIPアドレス帯の分類が保存されています。geoip:privateはLANや予約アドレスの識別に、geoip:cnは中国本土に分類されるアドレス帯の識別に使われます。ドメインが前段のルールに一致しない場合や、接続自体がIPアドレスを直接使用する場合、GeoIPルールが出力先を決める重要な条件になります。

アプリがリクエストを開始宛先ドメインを取得GeoSiteでマッチング宛先IPを解析GeoIPでマッチング出力先を選択

GeoSiteドメイン分類

データファイル
geosite.dat
代表的な入力
完全修飾ドメイン名
よく使うタグ
geosite:cn
マッチングのタイミング
ドメイン解析前

サイトのカテゴリ別振り分けに適しています。利用できるタグはデータセットによって異なります。

GeoIPアドレス分類

データファイル
geoip.dat
代表的な入力
IPv4またはIPv6
よく使うタグ
geoip:private
マッチングのタイミング
宛先IP取得後

IPアドレスを直接使用する接続の処理や、ドメインルールの後段での判定に適しています。

データが古い可能性を示す症状

データファイルは、サブスクリプションのノードのように「無効」と直接表示されるわけではありません。接続自体は成功しているのに、想定と異なる出力先が選ばれるケースが一般的です。たとえば、本来は直接接続する新しいドメインがプロキシ経由になる、新たに割り当てられたアドレス帯がgeoip:cnに一致しない、所属が変更されたサービスが古い分類のまま処理される、といった症状です。

ただし、1回のアクセス異常だけでGeoデータの期限切れとは判断できません。DNSの応答、ルーティングルールの順序、ドメインのスニッフィング、ノードの可用性、システムプロキシの状態なども結果に影響します。まずはクライアントのログで宛先ドメイン、宛先IP、outboundTagを確認し、ルールのマッチング順と照らし合わせてください。

2つ
主要データファイル
7日
通常の確認周期
1回
更新後に完全再起動
3項目
ドメイン・IP・出力先の検証

結論:まず一致した対象を確認し、更新の要否を判断する

ログにドメインが記録されているのにGeoSiteへ一致しない場合は、タグとルール順を先に確認します。IPマッチングまで進んでいるのに新しいアドレス帯が分類されない場合は、geoip.datの更新を優先してください。これにより、DNSやノードの障害をデータの問題と誤認するのを防げます。

v2rayNでGeoデータファイルを更新する

ここではv2rayN 7.xの一般的な画面を例に説明します。Geoデータの更新入口はメインウィンドウの更新メニューにあります。マイナーバージョンによって「更新を確認」や「更新を確認 → Geo files」と表示されることがありますが、目的は同じです。現在のコアと互換性のあるgeoip.datgeosite.datをダウンロードし、コアに再読み込みさせます。

  1. まず正常に利用できるノードへ接続し、v2rayNのメインウィンドウのログに接続タイムアウトが継続して表示されていないことを確認します。
  2. メインメニューから「更新を確認」→「Geoファイルを更新」を開きます。現在のバージョンでサブメニューが表示される場合は、GeoIPとGeoSiteの両方を含む更新項目を選択します。
  3. 画面またはログにダウンロード完了の通知が表示されるまで待ちます。更新中はプログラムを終了せず、v2rayNを同時に2つ起動しないでください。
  4. 更新が完了したら「サービスを再起動」を実行するか、v2rayNを完全に終了してから再度起動し、Xrayコアにデータを再読み込みさせます。
  5. 「設定」→「ルーティング設定」を開き、使用中のルーティングルールセットを選択して、参照しているgeosite:geoip:タグの表記が変わっていないことを確認します。

ダウンロード中にタイムアウトが表示された場合は、まず更新リクエストが現在のプロキシを経由する必要があるか確認します。ネットワーク環境によっては、利用可能なノードを先に有効にしてシステムプロキシをオンにしないと更新が完了しません。メインウィンドウでプロキシ接続が正常なのに更新に失敗する場合は、ログでDNS解析失敗、接続タイムアウト、ファイル書き込み拒否のどれが発生しているか確認します。

ポータブル版のフォルダーに書き込み権限がない場合、プログラムは一時ファイルのダウンロードには成功しても、コアが使用中のデータを上書きできないことがあります。クライアントを完全に終了して再起動し、もう一度更新してください。保護されたフォルダーに配置している場合は、更新を何度も試すのではなく、現在のアカウントで読み書きできる場所へ移動します。

v2rayNGとv2flyNGで更新を確認する

v2rayNGはXrayコア、v2flyNGはv2flyコアを使用し、どちらもルーティング設定からGeoデータを参照できます。Androidクライアントのメニュー名はバージョンによって変わりますが、一般的な経路はメインメニューの「更新を確認」または「設定」→「Geo files settings」です。画面を開いたら、ダウンロード先の設定、現在のファイル状態、更新操作を同時に確認してください。ルーティングルールだけを変更するのは適切ではありません。

v2rayNGの確認項目

プラットフォーム
Android
コア
Xray
入口
設定 → Geo files settings
更新対象
GeoIPとGeoSite

更新完了後、現在の接続を停止し、接続サービスをもう一度起動します。

v2flyNGの確認項目

プラットフォーム
Android
コア
v2fly
入口
設定 → ルーティング設定
確認対象
ルールタグとファイルの状態

v2flyのルーティング構文と既存のタグに互換性があるデータファイルを選択してください。

  1. 現在の接続を停止し、クライアントの設定を開いてGeoファイルまたはルーティングデータに関する項目を探します。
  2. 現在のルーティングモードとカスタムルールを記録し、更新後に別のプリセットへ誤って切り替えないようにします。
  3. GeoIPとGeoSiteを更新し、両方の処理が完了と表示されるまで待ちます。
  4. メイン画面に戻ってノードへ再接続し、リアルタイムログを開いてルーティングのマッチング結果を確認します。

Androidでは、クライアントをバックグラウンドに切り替えるとネットワーク通信が制限されることがあります。更新中は2つのファイルの処理が完了するまでクライアントを前面に表示してください。ファイルサイズが大きい場合や、Wi-Fiとモバイル通信の切り替えが発生した場合はダウンロードが中断することがあります。安定したネットワークに戻ってから再実行し、途中までしか完了していないファイルは使用しないでください。

特定のバージョンに独立した更新ボタンがない場合は、まずクライアントのバージョンが提供するリソース管理項目を使用します。コアが異なっても一般的なGeoデータ形式を認識できますが、カスタムタグの集合まで同じとは限りません。geosite:category-ads-allなどのタグを使う前に、クライアントのログで正常に読み込まれていることを確認してください。

geoip.datとgeosite.datを手動で置き換える

内蔵更新が使えない場合は、データファイルを手動で置き換えられます。ただし重要なのは「コピーする」ことではなく、実際に有効なフォルダーを確認することです。デスクトップクライアントには複数のコア用フォルダーが存在する場合があり、旧バージョンのフォルダーに同名ファイルが残っていることもあります。検索結果の最初のファイルだけを置き換えても、現在動作中のコアには反映されない可能性があります。

  1. クライアントのログまたはコア設定で、現在有効なのがXrayコアかv2flyコアかを確認し、そのコアの実際のプログラムフォルダーを探します。
  2. クライアントを完全に終了し、バックグラウンドにコアプロセスが残っていないことを確認します。
  3. 既存のgeoip.datgeosite.datを別名で保存してローカルバックアップを作成し、新しいデータに互換性がない場合でも復元できるようにします。
  4. 新しい2つのファイルを同じコア用リソースフォルダーに置き、ファイル名はすべて小文字、拡張子は.datのままにします。
  5. クライアントを再度開き、まず起動ログを確認してから、少なくとも1つのGeoSiteルールと1つのGeoIPルールをテストします。
コアリソースフォルダー/
├── geoip.dat
├── geosite.dat
└── コアプログラム

ルーティング参照例:
domain: geosite:cn
ip:     geoip:private
ip:     geoip:cn

クライアントがカスタムリソースフォルダーに対応している場合は、設定画面に表示されるフォルダーを基準にします。環境変数、起動パラメーター、複数コアの切り替えによって検索場所が変わることがあります。最も確実な確認方法は、2つのファイルの更新日時を一時的に記録し、再起動後のログで古いタグの欠落が引き続き表示されるか確認することです。

2つのファイルは同じリリースサイクルのものを使用し、同じメンテナンス作業で置き換えるのが理想です。GeoIPとGeoSiteには完全に同期しなければならない内部バージョン番号があるわけではありませんが、長期間更新していない古いファイルと新しいファイルを混在させると、原因の切り分けが難しくなります。同じルーティングチェーン内で、ドメイン段階とIP段階が異なる時期のデータに基づいて判断することになるためです。

更新後に振り分けが有効か検証する方法

更新成功の通知は、ファイル処理が完了したことを示すだけで、すべてのルールが想定どおり一致したことを保証しません。検証では異なる分岐を代表する対象を選びます。LANアドレス、直接接続するドメイン、プロキシ経由にするドメイン、IPアドレスを直接使う接続を用意してください。テスト中はノード、DNS、システムプロキシの設定を変更しないでください。

v2rayNではメインウィンドウのログを開き、ログレベルを上げて宛先、ルーティングルール、出力先タグを確認できます。geosite:cndirectに振り分けている場合、該当するドメインはログ上で直接接続に入るはずです。宛先がIPアドレスで表示される場合は、geoip:privateまたはgeoip:cnに一致しているか確認します。

テスト対象 主な確認項目 異常時にまず確認する点
LANアドレス geoip:privateに一致するか プライベートアドレスのルールがデフォルトのプロキシルールより前にあるか
通常のドメイン 対象のGeoSiteタグに一致するか ドメインスニッフィング、DNS、タグの表記
IPアドレスを直接入力 想定したGeoIP分岐に入るか アドレス帯の分類とルール順
未分類の対象 最終的なデフォルトルールに入るか デフォルトの出力先がルール一覧の末尾にあるか

ルールの順序は、更新後に最も見落とされやすい要素です。V2RayとXrayは通常、ルール一覧を上から順に判定します。範囲の広いルールが先にあると、リクエストを先に捕捉してしまいます。たとえば「すべてのポートをプロキシ経由」にするルールをgeosite:cnより前に置くと、後段のドメイン分類を更新しても適用される機会がありません。

「一致しない」場合と「一致した後に接続に失敗する」場合も区別してください。前者ではデータ、タグ、ルール順を確認し、後者では出力先がすでに選択されているため、ノード接続、宛先ポート、DNS応答を確認します。どちらもユーザーからはウェブページが開けないように見えますが、対処方法はまったく異なります。

結論:ログのoutboundTagを検証結果として使う

ファイルの更新日時は置換が行われたことしか示しません。実際の更新確認では、具体的なリクエストで検証します。ドメインまたはIPがどのルールに識別され、最終的にdirect、proxy、blockのどれへ進んだかを確認してください。3種類の対象を連続してテストするほうが、ファイルを何度も更新するよりルール順の問題を見つけやすくなります。

更新頻度とよくある問題

通常の利用では毎日更新する必要はありません。7日ごとに確認するか、クライアントのアップグレード、ルーティングルールの変更、新しいドメインの誤振り分けが続いたときに更新するのがおすすめです。ファイルを頻繁に置き換えても接続速度やノードの遅延は改善しません。Geoデータは分類判定にのみ使われます。

メンテナンスでは、一度に1つの変数だけを変更します。まずGeoファイルを更新して検証し、結果を確認してからDNSやルーティングルールを調整してください。更新前後で同じテスト対象とログレベルを維持すれば、ルールの一致状況を直接比較でき、ウェブページの体感だけで判断せずに済みます。

更新後、すべてのサイトがプロキシ経由になった?

「設定」→「ルーティング設定」を開き、デフォルトのプロキシルールが一覧の先頭へ移動していないか確認します。具体的なGeoSiteとGeoIPルールを範囲の広いルールより前に置き、保存後にコアを再起動してから再テストしてください。

ログにgeositeタグが見つからないと表示される?

まずタグの表記を確認し、新しいgeosite.datにその分類が含まれているか確認します。手動置換後に発生した場合は、バックアップファイルを復元して再起動し、互換性のないデータセットを使い続けないようにします。

GeoIPの更新に成功したのに振り分けが変わらない?

テスト対象のリクエストがIPアドレスを直接使用しているか、前段のドメインルールですでに一致していないか確認します。GeoSiteのマッチングが先に完了している場合、その出力先の選択では後続のGeoIPルールは使われません。

2つのファイルは同時に更新する必要がある?

形式上は別々に置き換えられますが、メンテナンスでは同じタイミングで更新するのがおすすめです。完了後に2つのファイルの更新日時を記録し、ドメインルールとIPルールを1つずつテストしてください。

更新中、接続タイムアウトが続く?

まず利用可能なノードへ接続し、システムプロキシまたはクライアントのプロキシ経由更新オプションが有効になっていることを確認します。それでもタイムアウトする場合は、ログのDNSエラーと接続エラーを確認し、更新タスクを複数同時に起動しないでください。

Geoデータを管理する目的は、分類ルールを現実のネットワーク変化に近い状態に保つことであり、すべてのリクエストを特定のプリセットタグに一致させることではありません。業務上、常に直接接続またはプロキシ経由にしたいドメインには、公共の分類更新を待つより明確なカスタムドメインルールを使うほうが確実です。そのルールは汎用的なGeoルールより前に配置してください。

v2rayN をダウンロード4プラットフォームのインストーラーを確認