geoip.dat・geosite.datの更新方法|V2Rayのルーティング用データベース解説

ルーティングが機能しない原因は、ルールデータの古さかもしれません。geoip・geositeファイルの役割やクライアントでの更新方法、geosite:cnなどの書き方を解説します。

この記事の要点

geoip.datはIPアドレスの集合、geosite.datはドメイン名の集合を管理します。ノードには接続できるものの、直結・プロキシの振り分けがうまくいかない場合に向けて、まず使用中のコアとルーティングモードを確認し、実際に読み込まれるデータファイルを更新します。その後、ルールの順序やDNSの設定、ログで動作を検証します。サブスクリプションの更新はルールデータベースの更新とは別です。また、更新が成功しても、通信が必ず想定どおりのルールに一致するとは限りません。

geoipとgeosite:まず照合対象を確認

V2RayとXrayのルーティング機能では、外部データセットを参照することで、大量のドメイン名やIPアドレス範囲を設定に一つずつ記述せずに済みます。geosite.datにはタグ付きのドメイン名リストが、geoip.datにはタグ付きのIPアドレス範囲リストが保存されています。ファイル自体が通信の経路を決めるわけではありません。ルーティングルールからこれらの集合を参照し、出力先を指定して初めて通信が振り分けられます。

項目geosite.datgeoip.dat
照合対象宛先ドメイン名宛先IPアドレス
主な参照方法geosite:cngeoip:cn、geoip:private
JSONフィールドdomain配列ip配列
よくある不一致ドメイン名が集合に含まれていない、または接続からドメイン名を取得できないIPアドレスの割り当てが変わった、または宛先IPがまだ取得されていない

geosite:cnは「.cnで終わるすべてのドメイン名」ではなく、使用中のデータソースにあるcnという名前の集合です。ほかのトップレベルドメインのドメイン名が含まれる場合もあり、具体的な内容はデータソースの管理元によって異なります。geoip:cnもWebサイトの言語で判定するのではなく、データファイルに記録されたIPアドレス範囲を照合します。これだけでWebサイトの運営地域を特定することはできません。

ルールデータが古いと、新しいドメイン名や変更されたIPアドレス範囲が見つからないことがあります。ただし、不具合の原因がすべて古いファイルとは限りません。宛先ドメイン名を取得できない、先行するルールに一致している、現在のルーティングモードで設定が使われていない、といった場合も「更新したのに動かない」ように見えます。まず現象を記録してから更新すると、ファイルを何度も入れ替えるより原因を特定しやすくなります。

v2rayNでGeoファイルを更新する:まずコアを確認

v2rayNは管理画面であり、ルールデータを実際に読み込むのは起動中のコアです。この記事で扱う.dat形式はV2RayとXray向けです。現在の設定で別形式のルールデータを使っている場合、同じクライアント名だからといってファイルの配置先をそのまま適用しないでください。まず起動ログでコア名と設定の場所を確認してから、以下の手順に進みます。

  1. 現在の状態を記録

    メイン画面で現在のサーバー、システムプロキシの状態、ルーティング設定を記録します。現在のルーティング設定を保存し、カスタム設定を使っている場合は復元できるコピーも残してください。原因を調べている間は、ノードとルーティングモードを同時に変更しないでください。

  2. 更新メニューを確認

    この項目を利用できるv2rayNの画面で、「更新を確認」→「Geoファイルを更新」を開きます。画面のビルドによって項目の場所や表記が異なる場合があります。見つからない場合は、現在の画面にある更新メニューを確認してください。「サブスクリプションを更新」は代わりになりません。

  3. 完了表示を確認

    更新結果またはログを確認し、必要な2つのデータファイルのダウンロードが完了したことを確かめます。タイムアウトする場合は、まず更新元に接続できるか確認してください。更新操作にプロキシ設定がある場合は、接続できることを確認済みのプロキシで再試行できます。何度も続けてクリックするのは避けてください。

  4. コアを再読み込み

    更新後、現在のサービスまたはコアを再起動します。再読み込みされたか確認できない場合は、v2rayNを終了して再度起動してください。起動ログにファイルが見つからない、読み込みに失敗した、分類が存在しないといったエラーがないか確認します。

  5. 同じ宛先で再テスト

    元のノードとルーティングモードを維持したまま、以前問題があった宛先をもう一度開きます。新しい接続を確立してから、出力先のログを確認してください。更新前から確立している接続では、ルーティング判定が再実行されない場合があります。

更新に失敗した場合:内蔵機能か手動置き換えを選ぶ

まずはクライアント内の更新機能を使いましょう。現在の環境で使われる場所にファイルを配置しやすいためです。他人の絶対パスをそのまま使うのは避けてください。ポータブル版のフォルダー、インストール先、ユーザーデータの保存先、カスタム起動方法によって、リソースの配置場所は異なる場合があります。同名のファイルがディスク上にあっても、実行中のコアがそれを読み込んでいるとは限りません。

クライアント内蔵の更新機能

推奨

現在の更新メニューからルールデータを取得し、ダウンロード結果と起動ログを保存します。完了後にコアを再起動し、実際に使用されているデータフォルダーを確認すれば、配置先を間違えるリスクを減らせます。

おすすめの用途:日常的なメンテナンス、更新メニューに正常にアクセスできる場合

ファイルを手動で置き換える

選択したルールデータソースの正式な配布元から、対応するバイナリデータファイルを入手します。コアを停止してから古いファイルをバックアップし、確認済みのリソースフォルダーに配置してください。圧縮ファイルをダウンロードした場合は先に展開し、圧縮ファイルの拡張子を.datに変えるだけで済ませないでください。

おすすめの用途:自動更新に失敗した場合、リソースフォルダーとデータソースが明確な場合

要点:読み込み先を確認してからファイルを置き換える

手動更新の前に、コアの起動パラメーターとリソースフォルダーを記録します。置き換えたらすぐに再起動し、読み込みエラーがないか確認してください。配置先が不明な場合は、まずパスの問題を解決しましょう。複数のフォルダーに同時にファイルをコピーすると、次回の更新時にどのファイルが使われているか判断できなくなるおそれがあります。

手動で置き換える場合は、分類が存在するかも確認してください。どちらもgeosite.datという名前でも、データソースによって提供されるタグが同じとは限りません。@を使った属性フィルターの書き方も、データファイルの内容に依存します。「分類が見つからない」と表示されたら、ノードのプロトコルを変更するのではなく、ルールで参照している集合とデータソースの説明を確認してください。元のファイルを残しておけば、設定の読み込みに失敗した場合もすぐに戻せます。

geosite:cnとgeoip:cnを使ったルーティング設定

以下はコアの設定に組み込むrouting部分であり、単体で実行できるクライアント設定全体ではありません。directという名前の直結アウトバウンドがすでに設定されていることを前提としています。アウトバウンドのタグは、実際の設定と完全に一致させてください。v2rayNのルーティング編集画面を使う場合も、同じ考え方でドメイン名、IPアドレス、アウトバウンドを指定します。クライアントが自動生成した設定全体をそのまま上書きしないでください。

{
  "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"
      }
    ]
  }
}
2つのファイル
例で参照するGeoデータファイル
3つのルール
プライベートアドレス、ドメイン名の集合、IPアドレスの集合
ポート53
従来型DNSで一般的なポート。問い合わせ経路は別途確認してください

IPIfNonMatchは、まず現在取得できている宛先情報で照合し、ドメイン名のリクエストがどのルールにも一致しなかった場合に、IPアドレスへ解決してIPルールを試す設定です。「すべてのリクエストを先に名前解決する」という意味ではありません。前方にすべてのドメイン名を対象とするプロキシルールがあると、そのルールで判定が終了し、後続のgeoip:cnは万能な救済策になりません。

ルールが機能しない場合:順序、ドメイン名、DNSを確認

ルーティングはルールを上から順に判定し、最初に一致したルールでアウトバウンドが決まります。データベースが判定するのは「宛先が特定の集合に含まれるか」であり、前のルールにすでに一致した結果を修正することはありません。問題を調べるときは、ルール一覧、宛先アドレス、ログに記録されたアウトバウンドタグをあわせて確認してください。Webページが開けるかどうかだけでは判断できません。

  1. モードを確認:メイン画面で現在のルーティングモードが想定どおりか確認します。グローバルプロキシまたはグローバル直結モードでは、編集中の振り分けルールが使われない場合があります。
  2. ドメイン名を確認:アプリからプロキシに渡される情報がIPアドレスだけの場合、ドメイン名ルールに一致しないことがあります。スニッフィングで一部のプロトコルからドメイン名を取得できる場合もありますが、すべての接続に対応しているわけではなく、常に成功する保証もありません。
  3. DNSを確認:ルーティングでIPアドレスを判定する場合、名前解決の結果がマッチングに影響します。従来型DNSでは通常UDP/TCPの53番ポートを使い、暗号化DNSには別の通信方式があります。Web通信がプロキシ経由でも、DNS問い合わせが同じ経路を通るとは限りません。
  4. ルールの順序を確認:前方に広範囲のドメインルール、ポートルール、またはフォールバックルールがないか確認します。まず正確なドメイン名を指定したルールでアウトバウンドを検証し、その後に集合ルールへ戻すと、データベースと設定順序のどちらに問題があるか切り分けられます。
  5. 新しい接続で試す:対象のページを閉じるか、テストするアプリを再起動してから再試行します。必要に応じて一時的にログの詳細度を上げ、検証後は普段使うログレベルに戻してください。サブスクリプションURLや接続先ドメイン名を含むログ全体を公開しないよう注意しましょう。

ドメイン名を正確に指定したルールでは意図したアウトバウンドに接続できるのに、geosite:cnに置き換えると一致しない場合は、そのドメイン名が現在の集合に実際に含まれているか確認してください。正確なルールでも動作しない場合は、現在の設定が適用されているか、アウトバウンドタグが正しいか、前方のルールに先に一致していないかを確認します。この段階では、ルールデータを再ダウンロードしても解決しないことがほとんどです。

Geoファイル更新でよくある質問

更新成功と表示されたのに、なぜ通信経路が変わらないのですか?

まずコアを再起動し、新しい接続を確立してください。現在のルーティングモードとログのアウトバウンドタグを確認し、次に対象のドメイン名を指定したルールを一時的に追加して比較します。正確なルールは動作するのに集合ルールが動作しない場合は、集合の内容と実際の読み込み先を確認してください。

2つのファイルは毎日一緒に更新する必要がありますか?

毎日機械的に更新する必要はありません。分類の変更に気づいたとき、ルーティングを見直すとき、またはデータソースで重要な更新が公開されたときに更新しましょう。クライアントでまとめて更新できる場合は一括で処理できます。カスタムデータソースを使う場合は、それぞれのタグが現在のルールに使えることを確認し、元に戻せるよう古いファイルも保存してください。

geositeの分類がないというエラーが出ます。サブスクリプションを再登録すれば直りますか?

まずエラーに表示されたタグの綴りを確認し、次にgeosite.datの配布元と分類一覧を確認してください。必要に応じて、以前の正常なファイルに戻すか、データソースが実際に提供している分類にルールを変更します。サブスクリプションを再登録しても、データファイルにないタグは追加されません。

Androidクライアントでもデスクトップと同じフォルダーを使えますか?

同じフォルダーをそのまま使うことはできません。v2rayNGはXrayコア、v2flyNGはv2flyコアを使用するため、それぞれのクライアントにあるリソース更新メニューを使ってください。具体的な場所は現在の画面で確認します。モバイルアプリのデータフォルダーはOSが管理しています。また、デスクトップ向けの設定は、クライアントが対応するインポート方法を確認してから利用してください。

v2rayN をダウンロード