GeoIP・GeoSiteデータベースの更新方法:GEOSITEルールが効かないときの確認ポイント
GeoIP・GeoSiteデータの役割と入手先、FlClashでの手動・自動更新、geox-urlの設定方法を解説。カテゴリ不足でルールが機能しない場合の確認手順も紹介します。
1. GeoSite・GeoIPとサブスクリプション更新の違い
FlClashはmihomoコアでルールを処理します。サブスクリプションには設定、プロキシ(出站)、プロキシグループが含まれ、GeoSiteとGeoIPはルールで参照するカテゴリデータを提供します。それぞれ更新される内容は異なります。サブスクリプションの更新に成功しても、ローカルデータベースが更新されたとは限りません。データベースのダウンロードに成功しても、現在の接続に該当ルールが適用されるとは限りません。
| 対象 | 照合する内容 | 主なファイル・設定項目 |
|---|---|---|
| GeoSite | ドメインの集合で分類(例:cn) | GeoSite.dat。参照先はgeox-url.geositeで指定 |
| GeoIP DAT | IPアドレスの所属カテゴリで照合 | GeoIP.dat。参照先はgeox-url.geoipで指定 |
| GeoIP MMDB | 従来型のIPジオロケーションデータベースで照合 | Country.mmdb。参照先はgeox-url.mmdbで指定 |
| サブスクリプション設定 | プロキシ、プロキシグループ、ルールなどの設定項目 | FlClashの設定一覧とサブスクリプション更新画面 |
GEOSITE,cn,DIRECTはドメインの集合で判定するルールで、接続先サーバーが中国本土にあるかを調べるものではありません。GEOIP,CN,DIRECTは接続先IPアドレスで判定し、サイト運営会社の所在地を特定するものでもありません。同じサービスでも、ドメインやCDNのIPアドレスが異なれば、判定結果が変わることがあります。
2. GEOSITEが効かないときは設定の読み込みを確認
まずFlClashの設定一覧を開き、対象の設定が現在適用されていることを確認してから、実行ログを確認します。バージョンによって画面の項目名は「設定」「ログ」またはアイコンなど異なる場合があります。この記事では特定バージョンのメニュー構成を前提にしません。更新ボタンを何度も押すより、ログに記録されたエラーをそのまま確認するほうが役立ちます。
症状に応じて次の手順を確認
- 設定を有効にできない:まずYAMLのインデント、存在しないプロキシグループ、データベースやカテゴリの不足など、読み込みエラーに対処します。この段階では、まだ通常のルール適用を確認できません。
- 設定は有効だが、サイトの接続先が違う:ルールモードになっていることを確認し、接続に実際に適用されたルールを調べます。グローバルモードやDIRECTモードでは、rules全体が想定どおりに適用されません。
- 一部のドメインだけ接続先が違う:データベースにそのドメインが登録されているか、先行するルールにマッチしていないかを確認します。すぐにクライアントを再インストールする必要はありません。
- 更新時にタイムアウトや証明書エラーが出る:ダウンロード先ドメインへの接続、システムの日付と時刻、更新時に未接続のプロキシが必要になっていないかを確認します。
次の3点を記録しておくと調査に役立ちます。現在の設定名、プロキシ(出站)モード、エラーが出たログの全文です。ログにサブスクリプションURL、アクセストークン、プロキシの認証情報が含まれる場合は、共有前に必ず伏せてください。「更新に失敗した」という情報だけでは、サーバー側のエラーかローカルでの解析失敗かを判断しにくい場合があります。
3. FlClashでデータベースを手動更新する
手動更新は、初回の読み込みに失敗した場合や、データベースを長期間更新していない場合、データソースを変更した直後などに適しています。まず、利用中のバージョンでリソース更新が可能か確認してください。設定画面でGeoデータ、地理データ、リソース更新に関する項目を探し、「Geoデータの更新」と「サブスクリプションの更新」を区別します。バージョンによっては複数のリソースをまとめて更新する場合があり、個別の更新ボタンがない場合もあります。
- 設定をバックアップする。現在使用できる設定と、追加した上書き設定を保存します。サブスクリプションURLだけを残すのは避けてください。ローカルで追加したルールがリモートのサブスクリプションに含まれていないことがあります。
- リソースのURLを確認する。GeoデータのURLをカスタム設定している場合、ダウンロード案内やログインページではなく、該当するバイナリデータが返されることを確認します。
- リソースを更新する。画面にGeoデータの更新ボタンがある場合は、一度実行して完了を待ちます。どの操作がどのログに対応するか分かりにくくなるため、更新を連続して何度も開始しないでください。
- 設定を再読み込みする。更新完了後、現在の設定を再読み込みします。必要に応じてコアを停止してから再起動し、実行中のルールにデータベースを読み込ませます。
- 新しい接続で確認する。テスト用ページの既存接続を閉じてから再アクセスし、接続履歴で適用ルールと最終的な接続先を確認します。既存接続に表示された結果だけで判断しないでください。
ダウンロードに成功しても問題が残る場合は、まず更新前後のログを比較します。「ダウンロードできない」から「カテゴリが見つからない」にエラーが変わったなら、ネットワークの問題は解消した可能性があります。プロキシのポートを変え続けるのではなく、データソースに必要なカテゴリが含まれているか確認してください。
4. geox-urlの設定と24時間ごとの自動更新
以下は、MetaCubeXが公開しているデータ配布先を使ったmihomoのGeoデータ設定例です。完全なサブスクリプションではなく、プロキシの接続先も含まれていません。統合する前に、元の設定に同じキーがないか確認してください。各項目はYAMLのトップレベルに置き、dns:、rules:、プロキシグループの下にインデントしてはいけません。
geodata-mode: true
geo-auto-update: true
geo-update-interval: 24
geox-url:
geoip: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip.dat"
geosite: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat"
mmdb: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/country.mmdb"
geo-auto-update: true:mihomoのGeoデータ自動更新を有効にします。geo-update-interval: 24:更新間隔の単位は時間です。24は1日を表し、24分ではありません。geox-url.geoip:DATモードで使用するGeoIPデータの取得先を指定します。geox-url.geosite:GEOSITEルールで使うドメイン分類データの取得先を指定します。geox-url.mmdb:MMDBモードで使うデータの取得先を指定します。ここではDATモードを有効にしているため、すべてのGEOIPルールが両方のファイルを同時に読み込むわけではありません。
FlClashは画面の設定に基づいて、実行時の設定を生成する場合があります。そのため、サブスクリプションの元データを編集した後は、これらの項目が実行時の設定に反映されているかも確認してください。次回のサブスクリプション更新で変更が上書きされないよう、利用中のバージョンが提供する設定上書きや設定統合の機能を優先してください。実行時の設定を画面で確認できない場合は、起動ログや更新ログで設定の反映状況を確認できます。
自動更新にはクライアントとコアが動作していることに加え、データの配布先にアクセスできる必要があります。PCの電源が切れている場合や、Androidでバックグラウンドプロセスがシステムに終了された場合、OSのスケジュールタスクのように更新されるわけではありません。再起動後は更新履歴を確認し、設定に24と書かれているだけで当日版のデータが使われていると判断しないでください。
5. カテゴリ不足に注意:ファイルをダウンロードできてもルールが使えるとは限らない
データセットのメンテナーによって、カテゴリ名や収録範囲が異なることがあります。設定が特定のデータソース独自のカテゴリを参照している場合、別のデータベースに切り替えるとカテゴリが見つからないエラーが発生することがあります。データを最新版に更新しても、そのデータソースに含まれる情報が取得されるだけで、別のソースにあるすべてのカテゴリが追加されるわけではありません。
データソース・カテゴリ・ルールの対応を確認する
- ログからエラーが出たカテゴリ名をコピーし、
@などの属性フィルターも残してください。前半だけを控えるのは避けましょう。 - 現在のデータソースのリポジトリにあるカテゴリ一覧や説明を確認し、該当カテゴリが実際に存在するか調べます。Webページ上の表示名をそのままルールIDとして使わないでください。
- サブスクリプションが前提としているデータソースを確認します。特定のカテゴリセットに依存する場合、容量の小さな簡易版に安易に置き換えず、互換性のあるデータを使用してください。
- 上流でカテゴリが削除・改名された場合は、該当するルールを修正します。特定のドメインが収録されていないだけなら、対象範囲を明確にしたドメインルールを追加できます。
一時的にルールを追加する場合は、完全なドメイン名を指定してください。次のルールはwww.example.comだけに適用され、完全一致の例として使えます。実際に使う場合は、DIRECTにする必要があることを確認済みのドメインを指定し、先にマッチする可能性のある広範囲のルールより前に配置してください。
rules:
- DOMAIN,www.example.com,DIRECT
- GEOSITE,cn,DIRECT
- GEOIP,CN,DIRECT,no-resolve
- MATCH,海外向けプロキシ
ここでの海外向けプロキシは、現在の設定にすでに存在するプロキシグループ名である必要があります。グループ名が異なる場合は、実際の名前に書き換えてください。この例全体でサブスクリプションのrulesを置き換えると、既存のアプリ別ルールや例外ルールが失われるため、避けてください。
6. データベース更新後もルールが違う場合の確認手順
まずルールの適用順を確認し、次にDNSと接続先アドレスを確認
mihomoのrulesは上から順に評価され、最初にマッチしたルールが後続の処理を決めます。上位により広い範囲のドメインルールがあると、後続のGEOSITEは評価されません。MATCHはフォールバック用のルールなので、通常は最後に置きます。前に配置すると、後続のカテゴリルールにマッチしなくなります。
上の例のno-resolveは、このGEOIPルールの照合時にドメイン名からIPアドレスを解決しないことを示します。その時点で接続にドメイン名しかなく、利用可能な接続先IPがない場合、IP条件をスキップして次のルールに進むことがあります。これはルールオプションの動作であり、データベース更新の失敗ではありません。調査時は接続履歴にあるドメイン、接続先IP、適用ルールを合わせて確認してください。
| 接続履歴の状況 | 優先して確認する項目 | 対処方法 |
|---|---|---|
| 先行するDOMAIN-SUFFIXにマッチしている | ルールの順序とドメインの範囲 | 必要な例外ルールを上に置き、DIRECTの範囲を広げすぎない |
| MATCHにマッチしている | ドメインの収録状況と接続先IPの有無 | カテゴリの内容とno-resolveの影響を確認 |
| 該当アプリの接続が表示されない | アプリの通信がクライアントを経由しているか | システムプロキシ、アプリのプロキシ設定、TUNの対象範囲を確認 |
| ルールは正しいのに最終的な接続先が違う | プロキシグループで現在選択されている項目 | グループ内でDIRECTや別のプロキシが選択されていないか確認 |
TUNモードはトラフィックをコアに取り込むための機能で、GeoSiteのカテゴリを追加するものではありません。システムプロキシも、その設定に従うアプリにのみ適用されます。アプリがシステムプロキシを経由しない場合、データベースを繰り返し更新しても接続先は変わりません。まず接続画面でFlClashがリクエストを受信していることを確認してから、ルールの適用状況を調べてください。
DNSキャッシュやブラウザーの接続再利用も、再テストの結果に影響します。ルールを変更したり新しいデータを読み込んだりした後は、新しい接続を確立してください。DNSやFake-IPの設定も変更した場合は、現在のバージョンで対応する方法に従って関連キャッシュを消去します。カテゴリ更新を一度テストするためだけに、アプリのデータをすべて消去しないでください。
7. 更新失敗への対処・復旧と日常のメンテナンス
ダウンロードエラーは種類に応じて対処する
- HTTP 404:ファイル名、公開先のパス、大文字・小文字を確認します。公開ページのURLはデータファイルのURLではありません。
- タイムアウト・接続切断:ダウンロード先ドメインとリダイレクト先に接続できるか確認します。ブラウザーでプロジェクトのトップページを開けても、データファイルを最後までダウンロードできるとは限りません。
- 証明書の検証エラー:まずシステム時刻を合わせ、ネットワークの認証ページやローカルのHTTPS検査環境を確認します。セキュリティ検証を安易に無効にしないでください。
- ダウンロード後の解析失敗:ファイル形式の不一致、内容がHTMLに置き換わっている、ダウンロードが中断された、データファイルとコアに互換性がない、といった可能性を確認します。
「起動前にデータをダウンロードする必要がある一方、ダウンロードにはコアのプロキシが必要」という循環が発生した場合は、まず利用可能なネットワークから互換性のあるデータを取得するか、直接アクセスできるデータソースを選んでください。アクセスできないURLを複数の項目に繰り返し設定したり、公開サブスクリプションURLを不明なオンライン変換サービスに渡したりしないでください。
更新後に設定を読み込めなくなった場合は、以前に使えていたデータファイルまたはデータソースに戻し、関連する設定項目も元に戻します。作業前にコアを停止し、復元後に再読み込みしてください。比較用に失敗時のログも保存しておきます。データソースを変更していた場合はカテゴリ名も再確認してください。ファイルだけ戻して、別データソースのカテゴリルールを残さないようにします。
更新後の確認チェックリスト
- 設定を正常に有効化でき、ログにGeoデータのダウンロードエラーやカテゴリ読み込みエラーがない。
- 自動更新の設定が実行時の設定に反映され、間隔が時間単位で指定されている。
- DIRECTにすべきドメインとプロキシ経由にすべきドメインを少なくとも1つずつテストし、それぞれの適用ルールを確認する。
- 新しい接続で再テストし、プロキシグループの最終的な接続先が想定どおりであることを確認する。
- 次回のトラブル時に復元・比較できるよう、利用可能な設定とデータソースを保存する。
ルール、データソース、実行時の設定を一致させておくことがメンテナンスの要点です。まずダウンロード、読み込み、マッチングのどの段階で失敗しているかを特定してから対処しましょう。DNS、TUN、すべてのルールを一度に変更するより、結果を確認しやすくなります。