v2rayN、v2rayNG、v2flyNGでルーティングルールを使っているものの、タグの不足、更新後の起動失敗、振り分け結果の変化に困っている方に適しています。まずルールとデータファイルをバックアップし、GeoIPとGeoSiteを更新した後、起動ログ、マッチ結果、実際の接続を順番に確認します。異常があれば、元のファイル、元のルール、元のコアの3段階で切り戻せます。
まずGeoIPとGeoSiteの役割を分けて理解する
GeoIPとGeoSiteはいずれもルーティングモジュールが読み込む分類データですが、対象が異なります。GeoIPはルール内のgeoip:privateやgeoip:cnのように、宛先IPアドレスを対象にします。GeoSiteはgeosite:cnやgeosite:category-ads-allのように、ドメインを対象にします。前者でドメインの分類を直接判定することはできず、後者もIPアドレス範囲のマッチングを代替するものではありません。
一般的なファイル名はgeoip.datとgeosite.datです。ファイルは分類データを格納するコンテナにすぎず、実際にルールから参照されるのは内部のタグです。データの提供元、作成日、軽量化の方式によって含まれるタグが異なる場合があるため、「ファイルをダウンロードできた」ことは「現在のルールにあるすべてのタグが存在する」ことを意味しません。更新前に確認すべきなのはファイルの日付ではなく、実際に使用しているタグです。
| データ種別 | マッチ対象 | ルール例 | 注意点 |
|---|---|---|---|
| GeoSite | リクエスト内のドメイン | geosite:cn |
タグが現在のgeosite.datに存在している必要があり、ルールの順序も結果に影響します。 |
| GeoIP | 宛先IPv4またはIPv6アドレス | geoip:private |
ドメインを先にIPへ解決するかどうかは、ルーティングのドメイン解決ポリシーに左右されます。 |
| 明示的なドメイン | 完全なドメイン、サフィックス、キーワード | domain:example.com |
GeoSiteタグに依存しないため、重要な例外ルールを少数残す場合に適しています。 |
| 明示的なネットワーク範囲 | 指定したCIDRアドレス範囲 | 192.168.0.0/16 |
GeoIP分類に依存しないため、LANへの直接接続ルールは通常、前方に配置します。 |
この流れが毎回すべて実行されるとは限りません。XrayルーティングのdomainStrategyを例にすると、AsIsは通常、元のドメインルールを先に処理し、GeoIPマッチのためにドメインを能動的に解決しません。IPIfNonMatchはドメインルールにマッチしなかった場合に解決を試み、その後IPルールを照合します。IPOnDemandは宛先IPが必要なルールに遭遇した際に解決を開始する場合があります。データベース更新後に振り分け結果が変わったら、ポリシーとルールの順序を併せて確認してください。
結論:まずマッチ対象を確認し、データベースの不具合を判断する
ドメインがgeoip:cnにマッチしないからといって、必ずしもデータファイルが壊れているとは限りません。AsIsポリシーでは、そもそも宛先IPの分類処理に進んでいない可能性があります。まずドメインポリシーとログに記録された宛先アドレスを確認し、その後でデータファイルを変更するか判断してください。
更新前に3種類の切り戻し材料を保存する
Geoデータを更新しても、通常はノードのVMess、VLESS、TLS、REALITYパラメータは変わりません。ただし、ルーティングタグの利用可否や分類範囲が変わる可能性はあります。安全のため、いきなり上書きせず、現在のルール、現在のデータファイル、クライアントが呼び出しているコアの情報を先に保存してください。これにより、問題の原因がルール、データ、コアの切り替えのどこにあるか判断できます。
v2rayNでは、まず「設定」→「ルーティング設定」を開き、現在有効なルーティングルールセット、ルールの順序、デフォルトの出力先を記録します。続いてメイン画面で現在のコアの種類を確認します。Xrayを使用している場合、展開版のデータファイルは対応するコアのリソースディレクトリに置かれていることが一般的です。v2rayN 7.xのビルドによってディレクトリ構成が異なる場合があるため、起動ログに表示されるリソースパス、またはクライアントが実際に選択しているコアのディレクトリを基準にしてください。似たファイル名だけを頼りに別のコアのリソースを上書きしないでください。
- ルーティング設定をエクスポートまたはコピー:有効になっているルールの順序を保存します。特にLANへの直接接続、ブロック、指定ドメイン、最終フォールバックのルールを残してください。
- 古いデータファイルをコピー:現在の
geoip.datとgeosite.datを日付付きのローカルバックアップフォルダに保存し、新しいファイルと同じパスに混在させないでください。 - コアとクライアントの状態を記録:現在使用しているXrayまたはv2flyコア、更新前に正常起動できていたか、テスト用ノードに接続できるかを記録します。
- カスタムタグを一覧化:ルーティング設定内の
geoip:とgeosite:を検索し、使用頻度の低いタグを別途一覧にします。 - 一度に更新するリソースは1組だけ:コア、サブスクリプション、DNS、Geoデータを同時に変更しないでください。ログに異常が出た際、原因の切り分けが難しくなります。
デスクトップでは、コアを停止してからファイルをコピーすると、読み込みや置き換えの途中と重なるのを避けられます。Androidのv2rayNGとv2flyNGでは通常、アプリがリソースディレクトリを管理するため、システムのサンドボックス内にあるファイルを探す必要はありません。アプリ内に用意されたGeoリソースの更新またはインポート機能を優先し、操作前にカスタム設定をエクスポートしてください。v2rayNGはXrayコア、v2flyNGはv2flyコアを使用します。基本的なgeoip.datとgeosite.datルールへの対応方針は近いものの、すべての拡張タグや設定項目が完全に一致するとは限りません。
更新機能はリソースを置き換えるだけで、ルールの互換性までは保証しない
v2rayNで「更新を確認」→「Geo files」からダウンロードした後も、コアを再起動してログを確認する必要があります。進捗表示が完了したことは更新処理の完了を示すだけで、タグの読み込みや振り分けのマッチ確認に代わるものではありません。
ルールタグ、順序、コアの互換性を確認する
Geoデータで最も多い互換性の問題は、ファイル全体を読み込めないことではなく、新しいデータに特定のカスタムタグが存在しないことです。geoip:privateのような基本タグは比較的よく使われますが、地域、サービスカテゴリ、拡張属性のタグはデータセットによって異なります。古い設定や別のデータソースに基づくルールを使用している場合、更新前に新しいファイルが同じタグを提供しているか必ず確認してください。
ルールの順序も重要です。ルーティングは通常、上から順にマッチする項目を探すため、前方にある広範なルールが後方の精密なルールを上書きする場合があります。たとえば、対象範囲の広いGeoSite分類を先に置き、その後に個別ドメインの直接接続ルールを置くと、後者が実行されない可能性があります。重要なドメインを処理する場合は、明示的な例外ルールを広範な分類より前に置き、最終フォールバックの出力先も残してください。
ドメイン分類ルール
- 入力
- リクエストドメイン
- タグ
- geosite:cn
- 出力先
- direct
- 前提条件
- タグが存在し、ドメインを取得できること
まずドメイン分類で処理し、マッチしなかったリクエストを後続ルールに引き継ぐ構成に適しています。
アドレス分類ルール
- 入力
- 宛先IP
- タグ
- geoip:private
- 出力先
- direct
- ポリシー
- domainStrategyと組み合わせる
LANアドレスは先に直接接続へ振り分け、管理画面やローカルサービスがプロキシ経由にならないようにします。
以下は構造を理解するための簡略化したルーティング例です。v2rayNに実際にインポートする場合、出力先タグは現在の設定にあるタグと一致させる必要があります。クライアントが別の名称を生成している場合は、既存の値を使用し、例を機械的にそのままコピーしないでください。
{
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "direct"
},
{
"type": "field",
"domain": ["domain:intranet.example"],
"outboundTag": "direct"
},
{
"type": "field",
"domain": ["geosite:cn"],
"outboundTag": "direct"
}
]
}
}
このうちdomain:intranet.exampleは明示的なドメインルールで、GeoSiteデータに依存しないため、重要な内部サービスの保護ルールに適しています。新しいGeoSiteファイルに特定の業務カテゴリがない場合は、まず重要なドメインだけを明示的なルールに変更すれば、基本的な利用を復旧できます。その後、互換性のあるデータを探すか、分類設計を見直すか判断してください。タグが1つ不足しただけで、すべての振り分けを一度に削除しないでください。
- タグは存在するのにマッチしない:ドメインがすでにIPへ変換されていないか、先行するルールで処理されていないか、スニッフィング設定から宛先ドメインを取得できるかを確認します。
- タグが存在しない:コアの起動時に分類リストの不足が直接報告されることが多いため、古いファイルに戻すか、新しいデータに実際に含まれるタグへ変更してください。
- GeoIPが機能しない:宛先がまだドメイン形式でルーティングに渡されているか、
domainStrategyがIPマッチングの継続を許可しているかを確認します。 - すべての通信が同じ出力先になる:デフォルトルール、最終フォールバックルール、出力先タグを確認してください。原因はGeoファイルとは限りません。
起動ログでファイルとタグの読み込みを確認する
更新が成功したか判断するには、まず古いコアを完全に停止してから再起動します。設定ウィンドウを閉じるだけでは不十分です。コアは通常、起動時または該当タグを初めて解析するときにGeoデータを読み込みます。古いプロセスが動いたままだと、ディスク上のファイルを置き換えても、現在の接続が古いリソースを使い続ける可能性があります。
v2rayNでは、いったんサービスを停止し、選択した設定を再起動してからログウィンドウで最初の30秒を確認します。テスト環境でローカルSOCKSポート127.0.0.1:10808を使用する場合は、まずこのインバウンドが正常にリッスンしていることを確認し、その後Geo関連のエラーを調べます。ポート競合でコアが起動していない場合、後続の振り分けテストには意味がありません。10808はこの記事でのテスト値であり、実際のポートは「設定」→「パラメータ設定」にあるローカルリスニング設定を確認してください。
| ログまたは現象 | 考えられる原因 | 次の手順 |
|---|---|---|
| geoip.datまたはgeosite.datが見つからない | ファイルが現在のコアのリソースディレクトリにないか、別のコア用ディレクトリに更新ファイルが書き込まれています。 | 起動ログでリソースパスを確認し、元のファイルを現在のコアが実際に読み込む場所へ戻します。 |
| list not found またはタグ不足 | ルールが新しいデータに含まれていない分類タグを参照しています。 | 古いデータに戻すか、ルールを新しいファイルに存在するタグへ変更して再起動します。 |
| コアは起動するが振り分けが逆になる | ルールの順序、ドメインポリシー、分類内容のいずれかが変わっています。 | ルーティングログを有効にし、固定したテストドメインで実際にマッチした出力先を比較します。 |
| ローカルポートがリッスンしていない | 設定またはリソースの読み込み中にコアが終了したか、ポートが使用中の可能性があります。 | 最初に出たエラーを処理し、ブラウザのアクセス結果からGeoデータの状態を推測しないでください。 |
コアのバージョンによってエラー文は多少異なりますが、判断の順序は同じです。まずログにある最初の致命的なエラーを探し、それがファイルパス、タグ名、設定項目のどれを指しているか確認します。その後に出る接続失敗は、コアが正常起動していないことによる連鎖的な結果にすぎない場合があります。geoip、geosite、routing、failed、具体的なタグ名を重点的に検索してください。
更新は完了したのに、なぜログには古いルール結果が表示されるのですか?
まずクライアントでコアを停止し、タスクマネージャーで古いプロセスが終了したことを確認してから、設定を再起動します。ファイルを置き換えただけでコアを再起動しない場合、現在のプロセスが読み込み済みの古いデータを使い続ける可能性があります。
特定のGeoSiteタグが見つからない場合はどうすればよいですか?
「設定」→「ルーティング設定」を開き、ログに表示されたgeosite:タグを特定します。まず古いファイルに戻して設定が起動できることを確認し、次に新しいデータが同名のタグを提供しているか確認します。存在しない場合は、ファイルを何度も上書きするのではなく、ルールを調整してください。
コアは起動するのに、指定したドメインが別の出力先に接続されるのはなぜですか?
そのドメインを一時的に明示的なdomain:ルールとして記述し、広範な分類より前に置きます。明示的なルールでマッチするなら接続経路は正常なので、GeoSiteの分類内容とルールの順序を引き続き確認してください。
v2rayNGの更新後、サブスクリプションを再インポートする必要はありますか?
通常は必要ありません。GeoリソースとVMess、VLESSノードのサブスクリプションは、それぞれ異なる内容を管理します。まず現在の設定を再起動して実行ログを確認し、サブスクリプション自体のノードパラメータが変わった場合にのみ更新してください。
Webページが開くかどうかだけで、振り分けが正しいと確認できますか?
できません。Webページにアクセスできることは、利用可能な出力先が存在することを示すだけです。直接接続になるはずの対象、プロキシ経由になるはずの対象、LAN上の対象をそれぞれテストし、ルーティングログで3つのリクエストが実際に使用した出力先タグを確認してください。
更新に問題がある場合は、ファイル、ルール、コアの順に段階的に戻す
切り戻しの目的は、異常な状態で変更を重ねることではなく、更新前の既知の正常な状態を早く復元することです。まずコアを停止し、新しいgeoip.datとgeosite.datをリソースディレクトリから移動してから、バックアップファイルを戻します。再起動後に元のルールが正常に戻れば、問題の範囲は新しいデータまたはタグの互換性に絞り込めます。
古いデータに戻しても異常が続く場合は、更新前にエクスポートしたルーティング設定を復元します。特にルールの順序、domainStrategy、出力先タグを確認してください。データとルールを戻してもコアが起動しない場合は、更新中にXrayまたはv2flyコアも切り替わっていないか確認します。クライアントのバージョン、コアのバージョン、データファイルは個別に記録し、3つの変数を1回の更新にまとめないでください。
- 第1段階:データファイルを復元。ファイル不足、タグの不存在、更新後に分類結果が突然変わった場合に適しています。
- 第2段階:ルーティングルールを復元。タグやルールの順序を変更した後に、全通信が直接接続、全通信がプロキシ経由、LANへ接続できないといった状態になった場合に適しています。
- 第3段階:元のコア選択に戻す。更新時にコアも変更し、ログに設定項目の互換性エラーが出た場合に適しています。
- 第4段階:最小限のルールに戻す。LANへの直接接続と最終プロキシ出力先だけを残し、基本接続を確認してからGeoルールを1つずつ戻します。
接続が復旧したら、定期的なメンテナンス手順を決めておくと安心です。更新前に2つのデータファイルとルーティング設定を保存し、更新後にローカルポート、最初のログエラー、3つの固定テスト対象を確認します。問題がないことを確認してから一時バックアップを削除してください。日付が変わるたびにGeoデータを頻繁に置き換える必要はありません。新しいアドレス範囲やドメイン分類をルールが実際に必要とするときに、更新する明確なメリットがあります。
最終判断:起動、接続、正しいマッチのすべてが必要
コアの起動に成功したことは、リソースを読み込めたことを示すだけです。Webページを開けることも、どこかの出力先が利用できることを示すだけです。メンテナンスを完了するには、ログにGeoの読み込みエラーがなく、固定したテストリクエストが接続でき、直接接続とプロキシ対象が想定どおりの出力先にマッチする必要があります。