GeoIP・GeoSiteデータベースの更新方法:ファイルの場所、読み込みの仕組み、ルール参照
geoip.datとgeosite.datの役割と保存先を解説。v2rayN・v2rayNGでの更新手順、データの古さによるルーティング不良の症状と確認方法を紹介します。
V2RayとXrayのルーティングルールでは、ドメイン、宛先IP、ポート、ネットワーク種別、インバウンドタグに基づいて通信を振り分けられます。geosite.datはドメイン分類、geoip.datはIPアドレス範囲の分類を提供します。ルール内のgeosite:cnとgeoip:cnはオンライン検索の命令ではなく、コアにローカルデータファイル内の指定分類を読み込ませる指定です。
この記事は、v2rayNまたはv2rayNGでルーティングを有効にしているものの、中国本土のサイトが誤ってプロキシ経由になったり、ドメイン分類の読み込みに失敗したり、更新後もルールが反映されなかったりする場合に役立ちます。2つのデータファイルの役割、デスクトップ版とAndroid版の更新先、コアの再読み込み条件、設定での参照方法、ログと比較リクエストによる確認手順を説明します。
GeoIPとGeoSiteがそれぞれ解決する問題
geosite.datにはドメインの集合が保存されます。分類には完全なドメイン、ドメインのサフィックス、キーワード、正規表現などを含められ、実際の構成はデータ生成ルールによって決まります。たとえばgeosite:cnは通常、中国本土のネットワーク環境向けドメインの集合に一致させるために使われ、geosite:category-ads-allは広告ドメイン分類を参照します。対象となるのはリクエスト先のドメインであり、DNS応答のアドレスが属する地域を示すものではありません。
geoip.datにはCIDR形式のIPアドレス範囲が保存されます。geoip:cnは宛先IPを、対応する国または地域のアドレス範囲と比較し、geoip:privateはループバック、LAN、その他のプライベートアドレス範囲に一致させます。これはルーティング段階でのみ使われ、DNS結果を変更したり、サブスクリプションのノード情報を代替したりするものではありません。
geosite.dat
- 一致対象
- ドメイン
- ルール項目
- domain
- よく使う参照
- geosite:cn
- 更新の影響
- ドメイン分類の範囲
DNS解決前にリクエストドメインを基準として、直接接続、プロキシ、ブロックのいずれかを決める場合に適しています。
geoip.dat
- 一致対象
- 宛先IP
- ルール項目
- ip
- よく使う参照
- geoip:cn
- 更新の影響
- アドレス範囲の所属
IPアドレスへの直接アクセス、ドメイン解決後のIP照合、プライベートネットワーク範囲の許可に適しています。
ドメインルールでIP解決を続けるかどうかは、domainStrategyにも左右されます。AsIsでは、ルーティングは主に接続時点で存在するドメインまたはIPを使います。IPIfNonMatchでは、ドメインルールに一致しなかった場合にのみ解決してIPルールを試します。IPOnDemandでは、ルール評価でIPが必要になる可能性があると、コアが解決を開始することがあります。データファイルを更新しても、誤った戦略の組み合わせは修正できません。調査時は、ファイルのバージョン、ルールの順序、ドメイン戦略を同時に確認してください。
- ドメインが既知の場合:解決先アドレスだけでサービスの所属を推測せず、まず
geosite分類を使います。 - IPアドレスへ直接アクセスする場合:
geoip、具体的なCIDR、その他のIP条件でのみ一致させられます。 - 同じリクエストが複数のルールに一致する場合:ルーティングは上から順に評価され、通常は最初に完全一致したルールの出力先が選ばれます。
- 分類名が存在しない場合:コアは近似した分類を自動的に使うのではなく、リソースまたはタグの読み込みエラーをログに記録します。
データファイルの場所とコアの読み込みの仕組み
v2rayNのポータブル版では、通常、プログラム本体、設定データ、1つ以上のコア用サブディレクトリが同じプログラムフォルダ内にあります。v2rayN 7.12.7とXrayコアの組み合わせでは、v2rayN\bin\Xray\geoip.datとv2rayN\bin\Xray\geosite.datが一般的な場所です。v2flyコアを選択している場合は、リソースファイルをそのコアが実際に読み込むディレクトリに置く必要があり、Xrayのフォルダへ機械的にコピーしてはいけません。
インストール方法、アーキテクチャ別パッケージ、バージョンによってディレクトリ階層は変わるため、ファイル検索の結果は手がかりにすぎません。より確実なのは、まずv2rayNの「設定」→「パラメータ設定」で現在のコア種別を確認し、コアのログから起動パスを確認する方法です。ログにある実行ファイルのディレクトリとアセット読み込みエラーから、現在のプロセスがどのデータを使っているかを特定できます。
| 環境 | 一般的な保存方法 | 更新後に必要な操作 | 確認場所 |
|---|---|---|---|
| v2rayNポータブル版 + Xray | bin\Xray\geoip.datbin\Xray\geosite.dat |
コアを停止して再起動 | 「情報」またはコアのログウィンドウ |
| v2rayNのその他のコア用ディレクトリ | 現在のコア実行ファイルがあるディレクトリに従う | コアを切り替えた後、ファイルの参照元を再確認 | 「設定」→「パラメータ設定」 |
| v2rayNG | アプリが管理する内部リソースディレクトリ | 更新完了後、現在の設定を再起動 | メイン画面右上のメニューとログ |
| v2flyNG | アプリとv2flyコアが管理 | クライアントの更新結果に応じてサービスを再読み込み | アプリのログとルーティングテスト |
コアは通常、起動時または設定の再読み込み時に地理データを読み込みます。使用中のファイルを直接上書きしても、実行中のプロセスがすぐに新しい内容を使うとは限りません。場合によっては、古いファイルハンドルをプロセスが保持したままになります。更新後は現在のコアを停止してから、設定を再起動してください。システムプロキシの切り替えをオフにするだけでは、通常コアの再起動にはなりません。ログに新しい起動時刻と設定読み込みの記録があるかを確認してください。
v2rayNでgeoip.datとgeosite.datを更新する
v2rayNのメニュー名はバージョンによって変わりますが、7.xの操作の流れはほぼ同じです。クライアントでGeoデータを更新し、対応するコアのディレクトリへファイルを書き込み、その後コアを再起動します。更新前に、現在のノードが正常に接続できることを確認してください。データ取得の失敗はルーティングルールそのものとは関係がないため、ルールを何度書き換えても解決しません。
- v2rayNを起動し、メインウィンドウで使用可能な設定が選択されていることを確認して、現在のコア種別を控えます。
- 「設定」→「パラメータ設定」を開き、ローカルの待ち受けポートとコアの設定を確認します。一般的な初期値はSOCKSが
10808、HTTPが10809ですが、実際の値は使用中の画面に従ってください。 - メイン画面に戻り、「更新を確認」メニューを開いて「Geoファイルを更新」、または現在のバージョンで同様の名称になっているGeoデータ更新項目を選択します。
- ステータスバーまたはログに、2つのデータファイルの処理完了が表示されるまで待ちます。片方しか完了していない場合は、更新成功と判断しないでください。
- 「サービスを再起動」を実行します。この項目が表示されない場合は、いったんサービスを停止してから、現在の設定を再起動してください。
- コアのログを開き、
failed to load geoip、failed to load geosite、分類が存在しないといったエラーがないことを確認します。
更新中に接続タイムアウトが表示された場合は、まずサブスクリプションの更新や通常のウェブページへのアクセスも失敗しているか確認します。両方とも失敗するなら、現在のノード、システム時刻、ローカルプロキシポートの問題を優先して対処します。Geoデータの更新だけが失敗する場合は、更新機能が使うネットワーク経路、対象ディレクトリへの書き込み権限、セキュリティソフトが実行中のファイルを一時的にロックしていないかを確認してください。
v2rayN\
├─ v2rayN.exe
└─ bin\
└─ Xray\
├─ xray.exe
├─ geoip.dat
└─ geosite.dat
手動でファイルを置き換える場合は、まずコアのプロセスを完全に終了し、旧ファイルのバックアップを作成してから、2つのファイルを同じコアのアセットディレクトリに配置します。ファイル名だけを頼りに、検索で見つかった最初のファイルを上書きしないでください。置き換え後に再実行してログを確認します。起動直後にエラーが出た場合は、まず旧ファイルに戻し、新しいファイルが現在のコアのデータ形式や分類仕様に対応しているかを確認してください。
v2rayNGでデータを更新して再読み込みする
v2rayNGはXrayコアを使用し、Geoデータは通常アプリが内部リソースディレクトリへ配置します。一般ユーザーがAndroidのファイルシステム上の実際のパスを探す必要はなく、デスクトップ版のディレクトリ構成をモバイル版へそのまま持ち込むべきでもありません。v2rayNG 1.10.xの画面を例にすると、メイン画面右上のメニューから「Geoファイルを更新」を探せます。表示名はビルドによって多少異なる場合があります。
- まず接続可能な設定を1つ選択し、起動ボタンをタップして、リアルタイムテストで遅延結果が得られることを確認します。
- 右上のメニューを開き、「Geoファイルを更新」を選択します。完了の通知が表示されるまで、アプリを前面に表示したままにしてください。
- 現在のVPNサービスを停止してから、選択した設定を再起動し、Xrayにアセットファイルとルーティング設定を再読み込みさせます。
- 「設定」→「ルーティング設定」を開き、現在有効なルールに
geositeまたはgeoipの参照が実際に含まれていることを確認します。 - ログを開き、直接接続されるはずのドメインと、プロキシ経由になるはずのドメインにそれぞれアクセスして、対象、ルール、出力先タグを照合します。
サブスクリプションの更新とGeoデータの更新は、別々の処理です。サブスクリプションはサーバーアドレス、ポート、ユーザー識別子、通信方式などのノード情報を担当し、Geoの更新はルーティング分類を担当します。サブスクリプションを更新しても地理データベースが更新された証明にはならず、地理データベースを更新してもVMessやVLESSのノードパラメータは変わりません。
更新をタップしてもタイムアウトが続く場合は?
まず使用可能な設定を起動し、通常のウェブページが読み込めることを確認してから、右上のメニューに戻って再試行します。ログにDNSタイムアウトが表示される場合は、「設定」→「DNS設定」でサーバーアドレスと現在のネットワークからの到達性を確認してください。
更新成功と表示されたのに、中国本土のサイトが引き続きプロキシ経由になる場合は?
サービスを停止して再起動し、「設定」→「ルーティング設定」でルールの有効状態と順序を確認します。先頭にある全一致のプロキシルールが先に通信を捕捉すると、後続のgeosite:cnは実行されません。
更新後、すべての設定が起動できなくなった場合は?
ログを開き、Geoリソースの読み込みエラーがないか確認します。エラーがデータファイルを明確に指している場合は、クライアントの更新機能から再取得してください。同時にアプリのストレージ容量も確認してから、現在の設定を再起動します。
v2flyNGでも同じ操作手順をそのまま使えますか?
メニューと内部ディレクトリが完全に同じだとは限りません。v2flyNGはv2flyコアを使用するため、独自の設定と更新メニューでアセットを処理し、アプリのログから現在のコアが分類を読み込んでいることを確認してください。
モバイルネットワークとWi-Fiでは、異なるDNSやIPv6経路が使われる場合があります。テスト時はできればネットワーク環境を1つに固定し、更新前後のログをそれぞれ記録してください。Wi-Fiでは正しく一致するのにモバイルネットワークでは不正確になる場合、原因はGeoファイル自体ではなく、DNS応答の違い、IPv6ルールの不足、プライベートDNS設定にある可能性があります。
ルールでgeositeとgeoipを参照する方法
地理データファイルは、ルーティングルールから参照された場合にのみ照合へ使われます。次の構成では、まず広告分類をブロックし、続いてプライベートアドレスと中国本土のIP範囲を許可し、その後に中国本土のドメインを直接接続します。一致しなかった通信は、後続のプロキシルールまたはデフォルトの出力先へ渡します。実際の設定では、出力先タグをクライアントが生成したタグと一致させる必要があり、例の名称をそのまま使わないでください。
{
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"domain": ["geosite:category-ads-all"],
"outboundTag": "block"
},
{
"type": "field",
"ip": ["geoip:private", "geoip:cn"],
"outboundTag": "direct"
},
{
"type": "field",
"domain": ["geosite:cn"],
"outboundTag": "direct"
},
{
"type": "field",
"network": "tcp,udp",
"outboundTag": "proxy"
}
]
}
}
分類の数よりもルールの順序が重要です。最初のルールがnetwork: tcp,udpで全接続に一致してプロキシへ送る場合、後続の中国本土向け直接接続ルールには一致する機会がありません。広告ブロックは通常の直接接続ルールより前に置き、プライベートネットワーク範囲の許可は前方に、フォールバックのプロキシルールは末尾に配置します。
geosite:cnとgeoip:cnは互いに代用できません。国際サービスでも中国本土にノードを配置している場合があり、そのドメイン分類はサービス属性に基づいて整理される一方、解決先アドレスはgeoip:cnに該当することがあります。IPIfNonMatchを使う設定では、ドメイン分類に先に一致するとIPの所属判定は続行されません。だからこそ、ルールの意図を明確にする必要があります。
- LAN機器へ直接接続する必要がある場合は、
geoip:privateをフォールバックのプロキシルールより前に置きます。 - 特定のドメインで分類を上書きする場合は、完全一致のドメインルールを広範な
geositeルールより前に配置します。 - IPv6を扱う場合は、現在の
geoipデータとカスタムCIDRルールに対応するアドレスファミリーが含まれていることを確認します。 - カスタムルールを変更した後は、まずコアを再起動し、ログで確認してください。ウェブページがたまたま開くかどうかだけで判断しないでください。
データの古さ、ルールの競合、読み込み失敗を見分ける
データが古い場合によく見られるのは、新しく追加されたドメインやIP範囲、最近インフラが変更されたサービスの一部だけでルーティングが不安定になり、古いルールの多くは正常に動作する症状です。ルールの競合は再現性が高く、同じ宛先へアクセスするたびに前方の広範なルールに捕捉されます。読み込み失敗はより明確で、コアの起動ログにファイル不足、読み込み不能、タグ不存在などが表示されます。
| 症状 | まず疑う点 | 確認方法 | 対処 |
|---|---|---|---|
| 最近追加されたドメインだけが誤ってプロキシ経由になる | GeoSiteデータが古い | 完全一致のドメインによる一時ルールで比較する | データを更新してコアを再起動 |
| 中国本土のドメインの大半がすべてプロキシ経由になる | ルールの順序またはルールが無効 | フォールバックルールが先頭にないか確認 | 順序を調整して設定を再読み込み |
| ドメインルールは正常だが、IPアドレスへの直接アクセスが不正確 | GeoIPデータまたはIPルールが不足 | 宛先IPと一致した出力先を記録 | GeoIPを更新またはCIDRを追加 |
| コア起動直後に停止する | ファイル破損、パスの誤り、または分類が存在しない | 最初に発生したアセット読み込みエラーを確認 | 使用可能なファイルに戻し、分類名を照合 |
| 更新完了後も動作がまったく変わらない | コアが再起動されていない、または誤ったディレクトリを更新した | ログの起動時刻とコアのパスを照合 | プロセスを停止し、正しいディレクトリから起動 |
確認時は、LANアドレス、既知の中国本土向けドメイン、プロキシ経由にするドメイン、IPアドレスへの直接リクエストの少なくとも4種類を選びます。まずブラウザーの接続再利用の影響を避け、それぞれ新しい接続を開始してください。v2rayNではコアのログとローカルポートの接続を同時に確認でき、v2rayNGではログ画面で宛先アドレスと出力先を確認できます。1回の遅延の高低だけではルールへの一致を証明できません。ネットワークの混雑でも応答時間は変わるためです。
- 現在のコア種別、データファイルの更新日時、ルーティングモードを記録します。
- コアを再起動し、ログにGeoアセットの読み込みエラーがないことを確認します。
127.0.0.1またはLAN上の宛先へ接続し、プライベートアドレスが直接接続されることを確認します。- 安定している中国本土向けドメインを1つテストし、直接接続の出力先に一致することを確認します。
- プロキシ経由に明示的に設定したドメインを1つテストし、プロキシの出力先に入ることを確認します。
- 一時的な完全一致ルールを先頭に置いて再テストし、結果から分類データの問題とルール順序の問題を切り分けます。
完全一致のドメインルールでルーティングを修正できるのに、対応するgeosite分類では一致しない場合に限り、GeoSiteの内容やバージョンを詳しく確認します。完全一致ルールも機能しない場合は、クライアントが別のルーティングモードを使っていないか、サブスクリプションが生成した設定でカスタム項目が上書きされていないか、変更後にコアを本当に再起動したかを先に確認してください。
更新頻度とメンテナンスの範囲
Geoデータに、すべての環境に適した固定の更新周期はありません。通常の利用では、月1回の確認で一般的なIP範囲やドメインの変化に対応できます。新しいサービスのルーティング異常、通信事業者によるアドレス変更、分類不足を示すログがある場合は、すぐに更新してください。頻繁に更新しても、誤ったルール順序は改善せず、ノード回線の品質も向上しません。
チームや複数デバイスの環境では、クライアントのバージョン、コア種別、更新日時、ルールのバージョンを記録します。デスクトップ版とAndroid版で同じルールの意図を使うことはできますが、同じ物理ファイルを読み込むとは限りません。v2rayN、v2rayNG、v2flyNGでは、コア、アセットディレクトリ、更新メニューがそれぞれ独立しているため、確認結果も個別に保存してください。
- 更新前に、現在動作しているルール設定を保存し、失敗時に戻せるようにします。
- 更新後は必ずコアを再起動し、新しい起動ログを確認します。
- ドメインとIPの両方をテストし、GeoSiteだけ、またはGeoIPだけを確認することにならないようにします。
- サブスクリプション、DNS、Geoデータの変更は分けて記録します。
- ルールに異常がある場合は、まず順序と有効状態を確認し、その後でデータが古いかどうかを判断します。
安定したメンテナンス手順は、ファイルを何度も置き換えることではありません。コアのパスを確認し、クライアントの更新メニューから更新し、プロセスを再読み込みし、ログを確認したうえで、固定したテスト対象で検証します。ファイルのバージョン、読み込み過程、ルールの一致という3つを結び付けて初めて、ルーティングの変化がデータベース、設定、ネットワーク環境のどこに起因するか判断できます。