GeoSiteはドメイン、GeoIPはIPアドレス範囲を分類するデータです。ルーティングルールが参照するもので、ノードのサブスクリプションとは別です。接続はできているものの、振り分けデータの更新や、意図しない経路を通るサイトの調査が必要な方に向けて、カーネルとデータソースの確認、ファイル更新、サービス再起動、ルールの適用確認の順に解説します。サブスクリプションを何度も更新するより、原因を絞って対処できます。
2つのdatファイルが解決する問題
ルーティングは、どの通信を直接接続し、どれをプロキシ経由にし、どれをブロックするかを決める振り分け表のようなものです。geosite.datとgeoip.datは、その表が参照する分類データです。ファイルを更新すると分類内容は変わることがありますが、クライアントのルール順や接続先が自動で書き換わるわけではありません。
| ファイル | 格納されるデータ | ルールの記述例 | 利用条件 |
|---|---|---|---|
geosite.dat | タグごとに整理されたドメインのエントリー。ドメイン、完全一致ドメイン、正規表現などのマッチ方式を含む場合があります | geosite:cn | カーネルが接続先のドメインを取得でき、データソースに該当タグがあること |
geoip.dat | タグごとに整理されたIPv4・IPv6アドレス範囲 | geoip:cn | 接続先がIPアドレスであるか、ドメインを解決してIPで照合する設定になっていること |
geosite:cnは、現在のGeoSiteファイルにある「cn」という集合を参照する指定です。「.cn」で終わるドメインすべてに一致するという意味ではありません。集合には別のトップレベルドメインのサイトが含まれる場合もあり、対象範囲はデータの管理者によって決まります。同様に、geoip:cnはIPアドレス範囲の分類であり、特定サイトの運営地域を保証するものでも、応答速度の測定に代わるものでもありません。
ノードのサブスクリプションで更新されるのは、「どのサーバーに、どのプロトコルや設定で接続するか」です。Geoファイルが扱うのは、「このドメインやIPがどのグループに属するか」です。VMessやVLESSなどのノードプロトコルと、2つの分類ファイルは設定の階層が異なるため、サブスクリプションを更新しても振り分けデータベースは更新されません。
更新前にカーネル、データソース、復元用ファイルを確認
まず、使用中のデータ形式を確認してください。この記事では、XrayとV2Flyが使う従来のdat形式のルーティングデータを扱います。v2rayNGはXrayカーネル、v2flyNGはV2Flyカーネルを使用します。デスクトップ版v2rayNでは、現在の設定で実際に呼び出されるカーネルを確認してください。別のルール形式を使っている場合、拡張子だけを変えてこの記事の方法を適用することはできません。
- 現在のルーティング設定を記録する。v2rayNのルーティング設定で、現在のプロファイル、ルールの順序、デフォルトの接続先を控えます。Android版でも有効なルーティングモードを記録してください。データ更新と同時にルーティングテンプレートを変更しないでください。
- 既存データをバックアップする。デスクトップではコアを停止し、実際に使われている場所にある2つのdatファイルをバックアップします。Androidではアプリ内の更新機能を優先し、ファイル管理アプリでアプリの非公開ディレクトリを無理に変更しないでください。
- データソースを確認する。Geoデータの更新先を独自に指定している場合は、応答がバイナリのデータファイルであることを確認してください。ダウンロード案内ページ、ログインページ、エラーページではないことも確かめます。ファイル名に
.datが付いていても、内容が正しいとは限りません。 - タグの互換性を確認する。データソースによってタグが異なる場合があります。ルールで参照している
cn、privateなどの集合が、選択したファイルに含まれていることを確認してください。
v2rayN:Geoファイルを更新して再読み込みする
v2rayNは、バージョンやデスクトップ版・クラシック版によってメニューの配置が異なります。一般的な入口は、メイン画面の「更新を確認」→「Geoファイルを更新」です。バージョンによってはGeoIPとGeoSiteが個別の更新項目になっています。以下では一般的な手順を説明します。メニュー名が異なる場合はGeoデータの更新項目を探し、「サブスクリプションを更新」で代用しないでください。
-
現在の設定を記録する
現在のノード、有効なルーティング設定、カーネルの種類を控えます。手動でファイルを置き換える場合は、先にプログラムを終了して元のファイルをバックアップしてください。まずはクライアント内蔵の更新機能を試すことをおすすめします。
-
データを更新する
「更新を確認」→「Geoファイルを更新」を開きます。GeoIPとGeoSiteが別々に表示されている場合は、順に更新し、それぞれの結果を確認してください。一方が成功しただけで、両方の更新が完了したと判断しないでください。
-
ダウンロードに失敗した場合
まず通常のネットワークと現在のプロキシが使えるか確認します。使用中のバージョンにプロキシ経由で更新する設定があれば、プロキシ接続後に再試行してください。利用できないプロキシ経由でダウンロードを繰り返さないでください。
-
コアサービスを再起動する
更新後にコアサービスを再起動します。該当するボタンがわからない場合は、タスクトレイのメニューからv2rayNを終了し、プログラムを再起動してください。ウィンドウを閉じただけでは、コアがバックグラウンドで動き続けることがあります。
-
起動結果を確認する
ログ画面を開き、データファイルの読み込み失敗、タグの不足、ルールの読み込み失敗がないか確認します。ルーティング設定は変更せずに、サイトへのアクセスをテストしてください。
手動で更新する場合、「プログラムのフォルダーにある同名ファイル」がコアの使用ファイルだと決めつけないでください。インストール方法、コアのフォルダー、リソースフォルダーの設定によって、実際の保存場所は異なります。クライアントの設定と起動ログでリソースのパスを確認してください。コアを停止して正しい場所のファイルを置き換えた後、再起動して動作を確認します。ファイル名はgeoip.datとgeosite.datを正確に保ち、拡張子の非表示設定による二重拡張子に注意してください。
結論:まず内蔵の更新機能を使い、次にパスを確認
内蔵更新が成功しても挙動が変わらない場合は、まず有効なルーティング設定とコアの再読み込みを確認してください。実際の読み込み先が間違っていると確認できた場合に限り、手動で置き換えます。同じファイルを複数のフォルダーにコピーすると、後から原因を特定しにくくなります。
v2rayNG:アプリ内でGeoデータを更新する
v2rayNGのGeo更新メニューはバージョンによって異なります。一般的にはメイン画面右上のその他メニューにあり、「Geoファイルを更新」や「Geoリソースを更新」と表示されます。「ルーティング設定」画面のその他メニューにあるバージョンもあります。まずメイン画面を確認し、見つからなければ「ルーティング設定」を確認してください。現在のバージョンに表示されるGeo更新項目を使います。
-
接続方法を確認する
現在使えるノードはそのままにします。現在のネットワークからデータソースへ直接アクセスできない場合は、先にプロキシ接続を開始してください。更新通信がプロキシを経由するかどうかは、アプリの設定と実際の通信制御範囲によって異なります。
-
更新メニューを開く
メイン画面右上のその他メニューからGeo更新項目を探します。見つからない場合は、「ルーティング設定」→右上のその他メニューを確認してください。サブスクリプション一覧の更新ボタンで代用しないでください。
-
更新の完了を待つ
更新を実行し、アプリの結果表示を確認します。2つのファイルを別々に更新する場合は、それぞれの結果を確かめてください。失敗したら、まずネットワークと空き容量を確認します。並行処理を発生させないよう、続けて何度もタップしないでください。
-
いったん停止してから再接続する
更新後、メイン画面の接続ボタンをタップしてサービスを停止し、もう一度接続してコアにリソースを読み込ませます。その後、「ルーティング設定」で有効なルールが想定どおりか確認してください。
現在のバージョンでGeo更新機能が見つからない場合は、アプリのバージョン情報を控え、そのバージョンで利用できる操作メニューを確認してください。必要に応じてクライアントのダウンロードページから適切なインストーラーを選びます。デスクトップ版のファイルパスをAndroid版にそのまま当てはめたり、データを置き換えるために安易にアプリのストレージを消去したりしないでください。消去すると、ノード、サブスクリプション、カスタムルールも削除される場合があります。
geosite:cnとgeoip:cnの書き方
以下はXray・V2Fly形式のルーティング設定例で、単独で動作する完全な設定ではありません。まずcnドメイン集合に一致させ、次にプライベートアドレスとcnアドレス範囲を照合します。directは完全な設定内に実在するアウトバウンドタグを指定してください。直接接続用のアウトバウンドに別の名前を付けている場合は、同じ名前に置き換えます。
{
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"domain": [
"geosite:cn"
],
"outboundTag": "direct"
},
{
"type": "field",
"ip": [
"geoip:private",
"geoip:cn"
],
"outboundTag": "direct"
}
]
}
}
ルールは上から順に評価され、最初に一致したルールで接続先が決まります。上のドメインルールでは、ドメインを先にIPアドレスへ解決する必要はありません。後続のIPルールがドメイン宛ての通信にも適用されるかは、domainStrategyによって異なります。これはルーティングオブジェクト内のフィールドです。DNS設定やアウトバウンドにある同名フィールドと混同しないでください。
| ポリシー | ドメイン宛てリクエストの処理方法 | 確認するポイント |
|---|---|---|
AsIs | ルーティング時にIPルール用のドメイン解決は行わない。接続先がもともとIPアドレスなら、IPルールで照合される | GeoIPルールだけを設定しても、ドメイン宛ての通信に一致するとは限らない |
IPIfNonMatch | ドメインルールに一致しない場合、IPアドレスに解決してから照合を続ける | 前にあるフォールバックルールによって、名前解決が行われないことがある |
IPOnDemand | 照合にIP情報が必要になった時点で名前解決を試みる | ルールの順序とDNSの応答結果のどちらも、最終的な接続先に影響する場合がある |
この例では最終的なフォールバック先を設定していません。完全な設定では、デフォルトのアウトバウンドと他のルールを確認し、どのルールにも一致しない通信の行き先を明確にしてください。特に、このルールより前にTCP・UDP通信すべてに適用されるプロキシルールを置いたまま、後続のcnルールが有効になると期待しないでください。
結論:まずルールが一致する機会があるか確認
特定のサイトが意図しない経路を通り続ける場合は、まず前に広範囲なルールがないか、次にドメインがコアに渡っているか、最後に集合の内容を確認します。集合が実際に古くなっている場合に限り、datファイルの更新が直接的な解決策になります。
更新後の確認方法と、問題が起きた場合の戻し方
コアの起動と通信の両方を確認してください。ブラウザーでページを開けても、指定した接続先を経由したことの証明にはなりません。ページキャッシュ、接続の再利用、DNSキャッシュによって変化が見えないこともあります。テスト前に通信をつなぎ直し、同じページを再読み込みするだけで済ませないでください。
- 1回目は読み込みを確認。コアを再起動した後、ログでファイルの読み込みとルールの初期化が成功したか確認します。ファイルが見つからない場合はリソースのパスを、タグが存在しない場合はデータソースとルールのタグが対応しているかを調べてください。
- 2回目は接続先を確認。対象の集合に含まれると確認できているドメインを選び、実際のリクエストで使われたホスト名を記録します。1つのページが複数のドメインに接続することもあるため、メインページの接続先だけですべての通信を判断しないでください。
- 3回目は接続先の経路を確認。クライアントログにルーティング情報やアウトバウンドタグが出る場合は、リクエスト時刻と照らし合わせます。必要に応じて一時的にログの詳細度を上げ、調査後に元へ戻してください。アクセスに関する不要な情報を長期間記録しないようにします。
- 最後に元へ戻せることを確認。更新後にコアが起動しなくなった場合はサービスを停止して元のファイルに戻します。Androidでは、まずアプリが対応しているリソースの更新方法で、既知の正常なデータソースへ戻してください。復元後に再接続し、DNSとルーティングを同時に変更するのは避けてください。
サブスクリプションを更新したのに、振り分けが変わらないのはなぜ?
サブスクリプションで主に更新されるのはノードの接続設定です。Geoファイルを別途更新し、現在有効なルーティング設定が該当する集合を参照しているか確認してください。ルーティングが手書きのドメインルールだけで構成されている場合、datファイルを更新してもその記述は変わりません。
geositeのタグが存在しないと表示された場合は?
まずルールに記載されたタグ全体、特にコロンの後ろにある集合名を記録し、現在のデータソースにその集合があるか確認します。ルールをデータソースが実際に提供するタグへ変更するか、対応するデータソースに戻してください。同じファイルを何度ダウンロードしても、存在しない集合が追加されることはありません。
更新したのに、中国本土のサイトがプロキシ経由になるのはなぜ?
有効なルーティング設定、先に適用されるフォールバックルール、接続先ドメインを取得できているかの順に確認します。コアに渡されるのがIPアドレスだけの場合、GeoSiteのドメインルールが適用されないことがあります。その場合はcn集合の不具合と判断する前に、接続方法とスニッフィングの設定を確認してください。
2つのファイルを毎日更新する必要はありますか?
更新日時を変えるために頻繁に更新する必要はありません。定期的なメンテナンスに加え、分類の変更が明確な場合やデータ不足が見つかった場合に更新してください。常に最新の日付を追うより、正常に使えるバージョンを毎回保管し、更新後に起動と接続先を確認することが大切です。
Geoデータの問題に対処するときは、変更する箇所を一度に1つに絞ってください。まずデータを入れ替えて動作を確認し、ルールの変更が必要なら別途調整します。ノード、DNS、ルーティングテンプレート、データソースを同時に変更すると、接続が戻っても原因を特定しにくくなります。システムプロキシ、サブスクリプション、ルーティングの設定順を確認する場合は、入門ガイドをお読みください。用語は用語集で確認できます。