geoip.dat・geosite.datの更新方法|ルールデータの入手先・差し替え・ルーティング設定

GeoIPとGeoSiteの違いを解説し、v2rayN・v2rayNGでのルールファイル更新手順と、geosite:cnなどを使ったルーティング設定を紹介します。

この記事の概要

ノードを追加済みで、ルーティングを調整したい方を対象に、ドメインのリストとIPアドレス範囲のリストの違い、ルールデータの入手先、クライアントが実際に読み込む場所、タグ名の確認方法を説明します。PCまたはAndroidで更新したら、起動ログと接続ログで動作を確認しましょう。タグの不足や意図しない振り分けがある場合は、ファイル・設定・DNSの順に調べます。

1. GeoIPとGeoSiteの違い:照合対象を確認

geoip.datにはタグごとに整理されたIPアドレス範囲が、geosite.datにはタグごとに整理されたドメインルールが保存されています。どちらもコアが読み込むバイナリデータで、サブスクリプションURLでも、利用可能なプロキシサーバーでもありません。ルールデータを更新しても照合条件が変わるだけで、ノードのアドレス、ポート、認証情報は更新されません。

geoip.dat

照合対象
接続先のIPアドレス・範囲
設定項目
ip
よく使われる指定
geoip:cn
プライベートIPの指定
geoip:private

IPの分類は、ウェブサイトの言語やサービス提供地域、実際の接続品質を示すものではありません。

geosite.dat

照合対象
接続先のドメイン
設定項目
domain
よく使われる指定
geosite:cn
データの内容
ドメインと照合方法

ドメインの分類はルールデータのメンテナーが定義します。利用できるタグはデータソースによって異なります。

たとえば、geosite:cnはcnという名前のドメインリストを参照します。ドメインの末尾から地域をリアルタイムに判定するものではありません。geoip:cnは対応するIPアドレス範囲を参照します。海外CDNのIPアドレスを使うドメインは、前者には一致しても後者には一致しない場合があります。2種類のルールは別々に設定し、geosite:cnをip配列に入れないでください。

接続先を受け取る ドメインルールを照合 必要に応じて名前解決 IPルールを照合 接続先を選択

この流れはドメインルールとIPルールの関係を示すもので、接続のたびに必ずDNS名前解決が行われるという意味ではありません。名前解決を行うか、いつ行うかは、接続先がもともとドメインかIPアドレスかに加え、routing.domainStrategyにも左右されます。コアがIPアドレスしか受け取っていない場合、通常はドメインルールで照合できません。スニッフィングで一部の接続情報を補えることはありますが、すべてのドメインを取得できるとは限りません。

2. ルールデータの入手先:タグを確認してファイルを選ぶ

代表的なデータソースには、V2Flyのdomain-list-communityによるドメイン分類データ、V2Flyのgeoipデータプロジェクト、派生ルールセットのLoyalsoldier v2ray-rules-datなどがあります。前者はそれぞれドメイン分類とIPアドレスデータを整備しています。派生プロジェクトでは、リストの組み合わせやカテゴリ、収録範囲が変更されている場合があります。同じファイル名でも、含まれるタグや分類の意味が同一とは限りません。

2ファイル
今回更新するファイル:2種類のdatファイル
3項目
配布元・日付・更新前のファイルサイズを記録
1セット
差し替え前に保存する旧ファイルのバックアップ

判断のポイント:配布元とタグを揃えてから更新

現在のルーティングが正しく動作している場合は、確認済みの配布元をそのまま使うのがおすすめです。新しい分類が必要な場合や収録範囲を変えたい場合に限って配布元を切り替え、カスタムルールで使うタグを一つずつ確認しましょう。

3. v2rayNの更新:まずは内蔵機能を使い、手動差し替えは保存先を確認

v2rayNは設定を管理するクライアントで、ルールデータを実際に読み込むのは選択中のコアです。以下では、V2RayまたはXrayを使用し、生成された設定がGeoデータを参照する場合を説明します。バージョンによってメニュー名やデータの保存先が異なるため、インストール先に同名ファイルがあるだけでは、使用中のコアがそのファイルを読み込んでいるとは判断できません。

  1. 現在の環境を記録:クライアントで使用中のコアを確認し、カスタムルーティング設定と既存のGeoファイルをバックアップします。更新後に原因を特定しにくくなるため、コアの更新やDNSの変更は同時に行わないでください。
  2. 内蔵機能で更新:メイン画面の「更新」メニューを開き、Geoファイルの更新項目を探します。一般的には「Geoファイルを更新」などの名前です。バージョンによってGeoIPとGeoSiteが別項目になっている場合は、それぞれ実行してください。実際の項目名は画面に表示されるものを確認します。
  3. ダウンロード完了を確認:ログまたは通知で、2つのファイルが正常にダウンロードされたことを確認します。タイムアウトする場合はダウンロード先に接続できるか確認してください。プロキシ経由で更新する設定がある場合は、接続を確立してから有効にし、再試行します。
  4. コアを再読み込み:更新後にサービスを再起動するか、いったん切断してから再接続します。起動ログにリソースの読み込み失敗や分類の不足を示すエラーがないことを確認してください。

内蔵の更新機能が使えない場合は、手動での差し替えを検討します。クライアントのログ、実行時の設定、コアのリソース設定を確認し、実際に使用されるアセットディレクトリを特定してください。ポータブル版の保存先、ユーザーデータの保存先、コアの実行ファイルの場所は異なる場合があります。コアを手動で起動している場合は、V2RAY_LOCATION_ASSETやXRAY_LOCATION_ASSETなど、リソースの場所を指定する環境変数も確認します。

  1. クライアントと、クライアントが起動したコアのプロセスを完全に終了します。実際に使用されているgeoip.datとgeosite.datを別のバックアップ用ディレクトリにコピーしてください。
  2. ダウンロードした2つのファイルを、確認済みのアセットディレクトリに置きます。ファイル名は変更しないでください。拡張子が非表示の環境では、geoip.dat.datにならないよう注意します。
  3. 現在のユーザーにファイルの読み取り権限があることを確認してから、クライアントを起動します。古いタグやリソースのエラーが続く場合は、読み込み先を再確認してください。複数のディレクトリに手当たり次第ファイルをコピーしないでください。

サブスクリプションの更新とGeoデータの更新は別の操作です。「サブスクリプショングループ」の更新は主にサーバー設定を取得するもので、通常はGeoデータの更新を兼ねません。サブスクリプションを正常に読み込めても、ルーティングで使う分類が存在するとは限りません。

4. v2rayNGの更新:アプリ内の機能を使い、アプリ専用領域を直接上書きしない

v2rayNGはXrayコアを使用し、Geoファイルは通常、アプリが管理するデータ領域に保存されています。Androidのファイル管理アプリで表示される「ダウンロード」フォルダはコアのアセットディレクトリではないため、そこにファイルを置いてもルーティングには反映されません。アプリ専用ディレクトリにはシステムのアクセス制限があるため、PCと同じ方法で直接上書きすることもできません。

  1. 現在のルーティングを保存:サイドメニューから「ルーティング」画面を開き、現在のモードとカスタムルールを記録します。カスタム設定を使っている場合は、問題が起きたときに戻せるよう、設定テキストも保存してください。
  2. リソース更新の項目を探す:「ルーティング」画面右上のメニューとアプリの設定メニューを確認し、Geoリソースの更新項目を探します。バージョンによって「Geoリソースファイルを更新」や、GeoIP・GeoSiteごとの更新項目など、表示が異なる場合があります。実際の画面を確認してください。
  3. 配布元を確認してダウンロード:リソースURLを設定できる場合は、2つのURLがそれぞれ必要なファイルに対応していることを確認します。更新先にアクセスできることを確認したうえで、完了の通知を待ちます。ローカルファイルのインポート機能が明示されているバージョンに限り、その機能を使ってください。
  4. 再接続して確認:現在の接続を停止してから再接続し、ログにGeoファイルの読み込みエラーがないことを確認します。その後、以下の手順でルールの適用と接続先を検証してください。

使用中のバージョンにリソースの更新・インポート機能が見つからない場合は、まずアプリ内のヘルプを確認し、必要に応じてクライアントのダウンロードページから適切なインストーラーを選んでください。2つのファイルを差し替えるためだけに、アプリのデータを消去しないでください。ノード、グループ、ルーティング設定も削除される可能性があります。更新のために、正常に動作しているVMessやVLESSのノードを作り直す必要もありません。

5. ルーティング設定:タグ・接続先・照合順を確認

以下はV2Ray/Xrayのrouting設定例です。GeoSiteとGeoIPの指定先を示すもので、単独で起動できる完全な設定ではありません。既存のoutboundsに、directという名前の直接接続用アウトバウンドが定義されている必要があります。GUIクライアントでは異なるタグ名が生成される場合があるため、貼り付ける前に必ず確認してください。画面上の表示名だけで内部タグを判断しないでください。

{
  "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"
      }
    ]
  }
}

IPIfNonMatchは、現在の照合でドメインルールに一致しなかった場合、ポリシーに従ってIPアドレスを解決し、IPルールとの照合を試みます。「すべてのドメインを先に名前解決する」という意味ではなく、使用可能なDNSを設定する機能でもありません。AsIsは、ルーティングのためにドメインを自動でIPアドレスに解決しません。IPOnDemandは、IPアドレスが必要なルールの照合時に名前解決を行うため、より早い段階でDNSクエリが発生する場合があります。

確認項目この例の設定見落としやすい条件
ドメイン分類domain: geosite:cn実際のJSONではdomain配列を使い、データソースにcn分類が含まれている
IPアドレス分類ip: geoip:cn接続先がIPアドレスであるか、ルーティングポリシーで名前解決結果を取得できること
直接接続用アウトバウンドoutboundTag: direct既存のoutboundsに完全一致する名前のタグがある
どのルールにも一致しない通信現在の設定によって異なるフォールバックルールがない場合、通常は最初のアウトバウンドが使われる

ルールは上から順に評価され、最初に一致したルールで接続先が決まります。特定のドメインを必ずプロキシ経由にする例外ルールは、広範囲な直接接続ルールより前に置いてください。すべての通信を対象とするフォールバックルールを先頭に置くと、後続のGeoルールは適用されません。この例では、それ以外の通信を必ずプロキシに通す設定にはしていません。実際に使う際は、クライアントが生成した最終的なアウトバウンドの順序とフォールバックルールも確認してください。

DNSとルーティングは分けて検証:ドメイン分類が決めるのは接続先の振り分けであり、すでに取得した誤ったIPアドレスを修正するものではありません。ドメインルールが正しく一致しているのに接続先がおかしい場合は、datファイルを何度も交換するのではなく、DNSサーバー、名前解決時の接続先、キャッシュを確認してください。

6. 更新後の確認:読み込みからルール適用まで

ダウンロードが終わっても、確認はまだ必要です。ファイルを読み込めること、分類を利用できること、接続が意図したアウトバウンドを通ることを確かめましょう。変更する要素は一度に一組に絞り、まずファイルを更新して再起動し、その後にルーティングを調整します。ノードの切り替え、DNSの変更、データソースの変更を同時に行わないでください。

  1. 起動ログを確認:geoip、geosite、failed、not foundを含むログを探します。特定の分類の読み込みに失敗している場合は、ノードの障害と決めつけず、まずタグの綴りとデータソースを確認してください。
  2. テスト対象を選ぶ:現在のデータソースの分類一覧から、収録されていると確認できるドメインを1つ選び、その分類に該当しないドメインも選びます。ドメインの末尾だけを見てcnに含まれるか判断しないでください。
  3. 新しい接続で試す:元のページで確立済みの長時間接続を終了するか、テストするアプリを再起動してから、選んだドメインにアクセスします。ルールファイルを変更しても、確立済みの接続のアウトバウンドは自動で選び直されません。
  4. 接続ログと照合:コアのアクセスログを確認できる場合は、接続先アドレスとアウトバウンドのタグを確認します。クライアントにルールの一致番号が表示されない場合は、テストルールを1つだけ有効にして原因を絞り込み、確認後に元の設定へ戻してください。
  5. 元に戻せることを確認:新しいファイルに差し替えた後にだけ起動できなくなった場合は、サービスを停止してバックアップを復元し、再起動して確認します。復元後も問題が続く場合は、設定やDNSも調べてください。すべてをルールデータの更新が原因だと決めつけないようにしましょう。

アクセスログには、ドメインや接続先アドレスなどの利用情報が含まれる場合があります。調査のためにログレベルを一時的に上げた場合は、作業後に元の設定へ戻してください。ログを共有する前に、ノードの認証情報、サブスクリプションURL、個人のアクセス履歴を削除しましょう。

7. よくある問題:分類が見つからない・更新が反映されない・誤って振り分けられる

更新後にgeositeの分類が見つからないと表示されます。再ダウンロードが必要ですか?

まずエラーに表示されたタグを確認し、現在のデータソースの分類一覧と照合してください。ファイルを読み込めてもタグが存在しない場合は、そのデータソースで使えるタグに設定を変更するか、元のデータソースに戻す必要があります。同じデータを何度ダウンロードしても、分類が新たに追加されるわけではありません。

2つのファイルを差し替えたのに、動作が更新前と変わらないのはなぜですか?

まずコアを再起動し、実際にファイルを読み込んでいるディレクトリを確認してください。現在のモードでGeoタグを使うルーティングが有効になっているかも確認します。グローバルプロキシを使用している場合や、先に一致するフォールバックルールがある場合は、分類を更新しても接続先は変わりません。

geosite:cnを直接接続に設定したのに、日本国内の一部サイトがプロキシ経由になるのはなぜですか?

接続で使われているドメインが、現在のcnリストに含まれているか確認し、先に評価されるルールに上書きされていないか調べてください。アプリがIPアドレスへ直接接続している場合、ドメイン分類では照合できないことがあります。その場合はIPルールとドメインの取得方法をあわせて確認し、すべての接続先を直接接続に設定するのは避けてください。

Geoファイルは毎日手動で更新する必要がありますか?

更新頻度は、分類の変更が必要かどうかで決めましょう。ルールが安定しているなら、クライアントの更新機能を使って定期的に管理できます。新しいドメインが未収録の場合やIP分類が変わった場合は、配布元の更新履歴を確認してください。配布元を頻繁に切り替えるより、問題があれば戻せるファイルを保管しておくほうが、原因を特定しやすくなります。

クライアントをダウンロード