GeoIP・GeoSiteデータベース更新ガイド|mihomoのgeodata設定とルール判定

GeoIPとGeoSiteのデータ形式や配布元、mihomoのgeodata-mode・更新URL・自動更新の設定方法を解説。データが古い場合の症状と確認方法も紹介します。

GeoIPとGeoSiteの違い:IPデータとドメイン分類を理解する

mihomoのルール設定では、GEOIP,CN,DIRECT と GEOSITE,cn,DIRECT は似て見えますが、参照するデータは異なります。GeoIPはIPアドレス範囲を国・地域、またはデータセットで定義された分類に割り当てます。一方、GeoSiteはドメインをサイト、サービス、テーマ別に分類します。データベースが提供するのは判定材料であり、接続を直接接続にするかプロキシ経由にするかは、ルール末尾のポリシーで決まります。

たとえば、日本国内のサイトにアクセスすると、ドメインがまず GEOSITE,cn に一致する場合があります。一致しなければ、後続のルールで名前解決された接続先IPが GEOIP,CN に一致することもあります。海外CDNや共有クラウド、新しいドメインを利用するサイトでは、両者の判定結果が異なっても、必ずしもデータベースの破損を意味しません。分類基準と実際のサーバー構成が異なる可能性があります。

データファイル主な用途注意点
geoip.datDATモードでGEOIPルールにIP分類を提供収録される分類は配布元によって異なる
Country.mmdbMMDBモードでIPの地理情報を提供DAT形式とは異なり、拡張子の変更だけでは置き換えられない
geosite.datGEOSITEルールにドメイン分類を提供分類名や属性はデータセットによって異なる

データの配布元と分類基準

代表的な配布元には、Loyalsoldierのv2ray-rules-datやMetaCubeXのmeta-rules-datがあります。これらはデータの構築・配布プロジェクトであり、プロキシノードの提供元ではありません。どちらも geosite.dat を配布していますが、分類や付加属性、収録範囲が完全に一致するとは限りません。配布元を切り替える前に、設定で使っている分類が移行先のデータセットにも存在するか確認してください。

GeoIPの国判定は、サービス運営会社の所在国とも、アクセス時に必ず通るネットワーク経路とも異なります。GeoSiteの分類ラベルも、サイトのすべてのサブドメインが同じ構成で運用されていることを示すものではありません。

geodata-mode:GEOIPで読み込む形式を指定

geodata-mode はmihomoのトップレベル設定項目です。true にするとGEOIPはDATデータを、false にするとMMDBデータを使用します。この設定は「すべての地理ルールを有効にする」スイッチではなく、ドメインルールをIPルールに自動変換するものでもありません。GeoSiteは引き続き専用のドメインデータベースを参照します。

# rules、dnsなどと同じ階層に置くトップレベル設定
geodata-mode: true

geo-auto-update: true
geo-update-interval: 24

geox-url:
  geoip: "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat"
  geosite: "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat"
  mmdb: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/country.mmdb"

この例では自動更新間隔を24時間に設定し、3つのデータURLを明示しています。プロキシ設定全体の例ではないため、サブスクリプションのノードやポリシーグループの代わりにはなりません。DATモードでGEOIPを調べる場合は、まず geoip のURLと対応ファイルを確認してください。MMDBモードに戻す場合は mmdb を確認します。ファイルのダウンロードが成功しただけで、現在使用中のデータも更新されたと判断しないでください。

設定項目は最終的に適用されるファイルに記述する

Clash Nyanpasuの画面設定、サブスクリプション設定、オーバーライド設定から、実際にカーネルが読み込むファイルが生成される場合があります。設定画面や手順はクライアントのバージョンによって異なるため、最終的に適用される設定に上記のトップレベル項目が含まれているかを確認してください。ダウンロードしたサブスクリプションファイルを直接編集すると、次回の更新で変更が上書きされることがあります。継続して使う設定は、クライアントが対応するオーバーライドまたは設定マージ機能で保存してください。

  • 別の設定項目にしか対応していないカーネルではなく、mihomoが現在有効になっていることを確認します。
  • geox-url はYAMLのトップレベルに置きます。dns や profile の下にインデントしないでください。
  • 変更後に設定を再読み込みします。現在のバージョンで関連設定が再初期化されない場合は、カーネルを再起動して確認してください。
  • 実行ログで設定の解析エラーを確認してください。エディターに「保存しました」と表示されただけで、設定が反映されたと判断しないでください。

データベースの更新:自動更新・手動実行・オフラインでの置き換え

サブスクリプション、ルールセット、geodataの更新は、それぞれ別の仕組みです。サブスクリプションの更新では通常、YAMLやノード情報を取得します。rule-providers は独自のURLと間隔で更新され、地理データベースの自動更新には geo-auto-update を使います。サブスクリプションを一度更新しても、GeoIPとGeoSiteの更新が完了したとは限りません。

自動更新は設定とネットワークの両方を確認

  1. 適用中の設定で geo-auto-update: true を確認し、geo-update-interval: 24 の単位が時間であることも確認してください。
  2. 実行環境から実際のダウンロードURLにアクセスできるか確認します。GitHubの配布ファイルではリダイレクトが発生することがあるため、トップページを開けるだけでは不十分です。
  3. カーネルログでダウンロード、読み込み、エラーの内容を確認し、ドメインの名前解決、接続タイムアウト、HTTPレスポンス、ファイル解析のどの段階で失敗したか記録します。
  4. クライアントに地理データベースの更新機能があれば、手動で実行して確認します。機能がない場合、サブスクリプション更新ボタンを代わりに使わないでください。

データ取得にプロキシ接続が必要なのに、プロキシの起動にはローカルデータベースが必要な場合、起動時に依存関係が発生します。まず利用可能な旧ファイルを残してカーネルが起動できる状態を保ち、そのうえでダウンロード先を修正してください。データディレクトリ全体を先に空にすると、「データが古い」状態から「カーネルが設定を読み込めない」状態に悪化するおそれがあります。

オフラインでの置き換えはファイル形式に合わせて行う

オンラインでダウンロードできない場合は、配布元にアクセスできるネットワーク環境で対象ファイルを取得し、使用する端末に転送できます。まずクライアントの実行情報やログからカーネルが実際に使うデータディレクトリを特定します。旧ファイルをバックアップしてカーネルを停止し、元のファイル名で該当データを置き換えてから再起動してください。インストール先からデータディレクトリを推測しないでください。ポータブル版と通常インストール版では保存場所が異なる場合があります。

ダウンロードするファイルは、配布物そのものである必要があります。ログインページやエラーページ、圧縮ファイルを geosite.dat という名前で保存しても、カーネルの解析には失敗します。HTTPステータス、ファイルの種類、配布元の説明を確認してください。ファイルの更新日時が新しいだけでは、内容が正しいとは限りません。

カーネルがファイルを読み込んでいる最中にデータベースを上書きしないでください。また、MMDBファイルの名前をDATに変更しても使えません。置き換え後に起動できない場合は、まずバックアップを戻し、ログから形式や分類の互換性に問題がないか確認します。

ルール判定:データ更新後はルールの順序も確認

mihomoはルールを上から順に照合し、最初に一致したルールで接続先を決定します。データベースを更新しても、この順序は変わりません。先頭に範囲の広いドメインルールや MATCH があると、後続のGEOIPやGEOSITEルールが実行されないことがあります。

# ルール例:PROXYには登録済みのノード名またはポリシーグループ名を指定
rules:
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
  - IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
  - GEOSITE,cn,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

この例はルールの順序だけを示したもので、LANやIPv6を含む完全な振り分け設定ではありません。最初の3行は一般的なIPv4プライベートアドレス範囲を対象にしています。ドメイン分類を国別IP分類より前に置き、最後にプロキシポリシーへ振り分けます。既存の設定に rules がある場合は、項目を統合し、同名のトップレベルキーを追加しないでください。PROXY はどの設定にも存在する組み込みポリシーではないため、実際に使っているポリシーグループ名に置き換えます。

no-resolveはIPルールの判定結果に影響する

IP系ルールでは no-resolve を指定できます。この指定は、そのルールに一致させるためにドメインを積極的に名前解決しないことを意味します。接続情報に利用可能な接続先IPがない場合、ルールに一致しないことがあります。そのため、GEOIP,CN,DIRECT に何も考えず no-resolve を追加すると、名前解決に依存していた振り分け動作が変わる可能性があります。DNS設定、接続情報、実際の要件を踏まえて追加を判断してください。

fake-ipを使うと、アプリケーションにはマッピング用のアドレスが見える場合があり、そのIPから実際のサーバーの国を直接判断することはできません。接続の詳細で復元されたドメイン、接続先情報、ヒットしたルール、最終的な接続経路を確認してください。アプリケーションが独自の暗号化DNSを使う場合や、カーネルにIPアドレスしか渡さない場合、GEOSITEで照合できるかどうかは、ドメイン情報を取得できるか、スニッフィングなどの設定が有効かによって変わります。

データが古いときの症状:分類の欠落と想定外の判定を切り分ける

症状優先して確認する項目確認方法
新しいドメインが想定した分類に一致しないデータに未収録、または分類基準が異なる配布元の分類内容とローカルの更新日時を確認
設定読み込み時に分類が存在しないと表示されるルールの分類名に誤記がある、またはデータ配布元を変更した配布元に該当の分類と属性があるか確認
更新後も古いルールに一致するファイルが再読み込みされていない、または前のルールが先に一致している再読み込み後に新しい接続を作り、ヒットしたルールを確認
ファイルのダウンロードには成功したが解析に失敗するダウンロードした内容が想定の形式ではないレスポンス内容とDAT・MMDBのファイル形式を確認
CDNの接続先が変わったDNS応答のIPアドレス、またはGeoIPの割り当てが変わった更新前後の実際の名前解決結果を比較

「日本国内のサイトがプロキシ経由になった」からといって、GeoSiteが古いとは限りません。プロキシモードがグローバルになっている、カスタムルールが対象ドメインに先に一致している、接続にドメイン情報がない、ポリシーグループの接続先が適切でない、といった可能性も確認してください。逆に、データベース上の国判定が正しくても、サービスのアカウント地域や著作権上の地域要件に合うとは限りません。

rule-providersはgeosite.datの別名ではない

RULE-SET は rule-providers で定義したルールセットを参照し、YAML、テキスト、または対応するMRS形式を利用できます。一方、GEOSITE は地理ドメインデータベースを検索します。データの配布元、形式、更新方法はそれぞれ異なります。ルールセットのURLを geox-url.geosite に設定したり、DATファイルを通常のテキスト形式のルールセットに指定したりしても、形式は自動変換されません。

更新後の確認手順:一度に変更する項目は1つだけ

データベースの更新が有効かどうかは、最終的に「同じ接続先への新しい接続がどのルールに一致したか」で判断します。ブラウザーはHTTP/2やHTTP/3の接続を再利用する場合があり、確立済みの接続はルールファイルを更新しても自動で接続先が切り替わりません。対象の接続を閉じるかテスト用アプリを再起動してから、新たにアクセスしてください。

  1. 現状を記録:直接接続するドメインとプロキシ経由にするドメインを1つずつ選び、現在のルールモード、ヒットしたルール、ポリシーグループ、接続先を記録します。
  2. データだけを更新:結果が変わった原因を特定できなくなるため、DNS、TUN、ルールの順序は同時に変更しません。
  3. 正常に読み込まれたか確認:ダウンロードや解析のエラーがログにないか確認します。必要に応じてカーネルを再起動し、設定が正常に起動することを確かめてください。
  4. 新しい接続を作成:同じドメインに再アクセスし、接続の詳細でGEOSITE、GEOIP、その他のどのルールに一致したか確認します。
  5. 例外に対処:配布元の分類が実際の要件と異なる場合は、対象範囲を明確にしたドメインルールを追加し、関連する範囲の広いルールより前に配置します。

特定のドメインを一時的に直接接続する場合は、DOMAIN,example.com,DIRECT のような完全一致ルールを追加できます。サブドメインも対象にする必要がある場合に限り、DOMAIN-SUFFIX を検討してください。単一サイトの問題を解決するために、クラウド事業者が保有する広範なIP範囲全体を直接接続にするのは避けましょう。同じIPを共有する別のサービスにも影響する可能性があります。

日常のメンテナンスは、起動可能なデータベースのバックアップを残し、自動更新の成功を確認し、重要なサイトへの新しい接続で動作を確かめる、という3つの手順にまとめられます。GeoIPとGeoSiteの更新で確認できるのは、判定材料が最新で利用可能かどうかです。ルールの順序、DNSの動作、ポリシーグループの振り分けは、それぞれ別に確認してください。設定の概念は技術リファレンス、初期設定は使い方ガイドをご覧ください。

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