v2rayNまたはv2rayNGを正常に使えているものの、中国国内サイトがプロキシ経由になったり、ドメイン振り分けが機能しなかったり、ルールタグを認識できなかったりする場合に適した内容です。2種類のGeoデータのマッチング、デスクトップとAndroidでの更新手順、バージョン確認、ルール検証コマンド、トラブル対応を解説します。操作後は、原因がデータファイル、ルール順序、DNS解決のどこにあるかを切り分けられます。
GeoIPとGeoSiteはそれぞれ何を解決するのか
V2RayとXrayのルーティング機能は、まず接続先を特定し、その後ダイレクト、プロキシ、ブロックのどのアウトバウンドへ渡すかを決めます。接続先がIPアドレスならGeoIPのデータ集合でネットワーク範囲を判定でき、ドメイン名が残っていればGeoSiteのデータ集合でサイトの分類を判定できます。2つのファイルはクライアント本体ではなく、VMessやVLESSなどのプロトコル設定を変更するものでもありません。ルールマッチングに必要なデータを提供するだけです。
geoip.datには、地域や用途別に整理されたIPアドレス帯が保存されています。よく使われるルールにはgeoip:cnとgeoip:privateがあり、前者は通常、中国国内のIPに、後者はLANやループバックアドレスなどの予約済みアドレス帯にマッチします。データベースが古いと、新しく割り当てられたアドレス帯が既存の集合に該当せず、最後のフォールバックルールに処理されることがあります。
geosite.datには、カテゴリ別に整理されたドメイン集合が保存されています。代表的なタグはgeosite:cn、geosite:geolocation-!cnなどで、データソースによっては独自の分類タグもあります。マッチするのはドメインであり、ウェブページの内容ではありません。サイトのドメイン変更、静的リソース用ドメインの追加、サービス入口の変更後は、古いデータではメインドメインだけにマッチし、画像、API、ログイン用ドメインを取りこぼす場合があります。
| データファイル | 主なマッチ対象 | 代表的なルール | 主な用途 |
|---|---|---|---|
geoip.dat |
IPv4・IPv6アドレス帯 | geoip:private |
LANアドレスをダイレクト接続 |
geoip.dat |
地域別IP集合 | geoip:cn |
中国国内アドレスをダイレクト接続 |
geosite.dat |
ドメインとドメインサフィックス | geosite:cn |
中国国内ドメインをダイレクト接続 |
geosite.dat |
地域外ドメイン集合 | geosite:geolocation-!cn |
プロキシのアウトバウンドへ渡す |
更新前にバージョン、パス、既存ルールを記録する
接続に問題があるとき、いきなりすべてのファイルを上書きしないでください。クライアントのバージョン、コアの種類、現在のアウトバウンドタグ、カスタムルールを先に記録しておけば、更新後の変化がどの項目によるものか判断できます。この記事の操作基準はv2rayN 7.x、v2rayNG 1.10.x、Xrayコアです。マイナーバージョンによってメニュー名は変わる場合がありますが、確認する順番は変わりません。
デスクトップでは、現在実際に使われているコアのディレクトリも確認します。v2rayNでは「設定」→「パラメータ設定」→「コア設定」で選択中のコアを確認できます。インストール方法によって、Geoファイルはプログラムのデータディレクトリまたは該当コアのディレクトリに置かれます。検索結果の最初に出た同名ファイルを上書きするのではなく、実行ログでコアの起動パスを確認してください。
- 現在のカスタムルーティング設定をエクスポートまたはコピーし、
domain、ip、inboundTag、outboundTagを重点的に残します。 - ログに現在のコアバージョンと設定ファイルの場所を記録し、v2flyとXrayの実行ディレクトリを混同しないようにします。
- システム時刻とタイムゾーンが正しいことを確認します。時刻が大きくずれていると更新リクエストやTLS接続に影響するため、Geoデータの障害と誤認しないでください。
- 現在正常に使える
geoip.datとgeosite.datのコピーを保管します。ロールバック時は2つのファイルをセットで戻してください。
デスクトップ版の確認項目
- クライアント
- v2rayN 7.x
- メニュー
- 設定 → パラメータ設定
- コア
- Xrayまたはv2fly
- ログ
- コアの起動パスを確認
実際のコアディレクトリを確認してから、内蔵のGeoファイル更新を実行します。
Android版の確認項目
- クライアント
- v2rayNG 1.10.x
- カーネル
- Xray
- 入口
- 設定 → Geoリソースファイル
- 操作
- ダウンロードしてサービスを再起動
アプリ内の更新入口を使い、ファイルマネージャーで内部データを上書きしないでください。
v2rayNでGeoデータファイルを更新する
v2rayNの内蔵更新機能は、現在のバージョンに対応したデータをダウンロードし、コアが読み込むファイルを置き換えます。手動でディレクトリを探すより、まずこの機能を使うほうが確実です。開始前に現在のプロキシサービスを停止し、コアプロセスが古いファイルを使用中でない状態にしてください。TUNモードを使っている場合も、先にTUNを無効にしてから更新します。
- v2rayNのメイン画面を開き、ステータスバーで現在のコアが停止していることを確認します。
- 「更新を確認」メニューを開き、「Geoファイルを更新」または同様のGeoデータ更新項目を選択します。7.xの一部バージョンでは、更新サブメニュー内にあります。
- ダウンロードと置き換えが完了したことが画面に表示されるまで待ちます。進行中にクライアントを終了しないでください。
- 「設定」→「パラメータ設定」→「コア設定」を開き、選択中のコアが先ほど更新した対象と一致していることを再確認します。
- 元のノードを起動してログウィンドウを開き、
geoip.datが見つからない、geosite.datが見つからない、ルールタグが存在しないといったエラーがないことを確認します。 - システムプロキシまたはTUNモードを再び有効にし、中国国内のドメインとプロキシが必要なドメインを1つずつ使って、アウトバウンドの結果を確認します。
内蔵更新でファイルが使用中と表示されたら、まずv2rayNを終了し、タスクマネージャーで該当するコアプロセスが終了したことを確認してから、クライアントを開き直してもう一度実行します。書き込みに失敗した場合は、プログラムディレクトリに現在のアカウントの書き込み権限があるか確認してください。管理者モードで常用して権限問題を隠すのではなく、アカウントから書き込める場所にプログラムデータを置くほうが安全です。
手動置換は、信頼できるデータファイルを入手済みで、現在のコアが読み込む場所を明確に把握している場合に限って行います。操作時は必ずコアを停止し、2つの古いファイルを名前変更して保存したうえで、新しいgeoip.datとgeosite.datを同じデータディレクトリに入れてください。片方だけを置き換えるとタグの収録範囲が一致せず、切り分け時の変数が増えます。
v2rayNGでGeoリソースを確認・更新する
v2rayNGはXrayコアでルーティングを処理し、Geoファイルをアプリが管理します。Androidでは通常、アプリ内部のデータディレクトリは一般のファイルディレクトリとして開放されません。そのため、デスクトップ版のファイルをダウンロードフォルダへコピーして自動認識を待つのではなく、v2rayNGの設定画面から更新してください。
操作前にメイン画面の停止ボタンをタップし、ステータスバーでプロキシサービスが終了したことを確認します。「LANをバイパス」やカスタムルーティングを有効にしている場合は、現在の設定も記録してください。リソースを更新してもルールの順序は自動修正されません。
- v2rayNGを開き、現在の接続を停止します。
- 右上のメニューを開き、「設定」→「Geoリソースファイル」の順に進みます。マイナーバージョンによっては「Geoファイル」や「Geoデータを更新」と表示されます。
- GeoIPとGeoSiteをそれぞれ更新し、両方が完了と表示されるまで待ちます。通信が遅い場合はアプリを前面に表示したままにし、システムによる処理中断を避けてください。
- 設定画面に戻り、「ルーティング設定」を開いて、定義済みルールとカスタムルールが引き続き有効になっているか確認します。
- メイン画面に戻ってノードを再起動し、実行ログでリソースの読み込みとルーティングの初期化にエラーがないことを確認します。
- 一度機内モードをオンにしてから通信を戻し、ドメインとIPをテストします。古い接続やDNSキャッシュの影響を除外できます。
| 更新後の症状 | 優先して確認する場所 | 対処方法 |
|---|---|---|
| サービスを起動できない | 実行ログに最初に出たエラー | ファイルのダウンロードが完全か確認し、2つの更新をもう一度実行 |
| 中国国内のドメインがまだプロキシ経由になる | ルーティングルールの順序 | 明示的なダイレクト接続ルールを最終的なプロキシルールより前に置く |
| ドメインルールにマッチしない | DNSとdomainStrategy | ルーティング段階でドメイン名が保持されているか確認 |
| 一部のアプリだけ変化しない | アプリの接続キャッシュ | 対象アプリのプロセスを終了してから接続し直す |
更新後の実際の効果はルール順序で決まる
Geoデータはマッチング可能な集合を提供するだけで、最終的なアウトバウンドはルーティングルールが上から順に決定します。より具体的なLAN、指定ドメイン、指定IPのルールを前に置き、範囲の広い地域集合を後ろに置き、最後にプロキシまたはダイレクト接続のフォールバックを設定します。最初のルールが0.0.0.0/0のすべてにマッチする場合、後続のGeoIPルールが処理されることはありません。
次の例は一般的な順序を示しています。プライベートアドレスを先にダイレクト接続し、中国国内のドメインとIPもダイレクト接続し、地域外のドメインをプロキシへ渡します。設定内のdirectとproxyは実際のアウトバウンドタグと一致させる必要があります。クライアントが生成した設定を確認せず、タグ名をそのまま写さないでください。
{
"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"
},
{
"type": "field",
"domain": ["geosite:geolocation-!cn"],
"outboundTag": "proxy"
}
]
}
}
IPIfNonMatchは、ドメインルールにマッチしなかった場合にIPを解決し、IPルールを試す設定です。GeoSiteとGeoIPを併用する構成に適していますが、解決処理が1回増えます。AsIsにすると、コアはIPルーティングのためにドメインを自動解決しません。そのため、geoip:cnに依存するルールでは、ドメイン形式のままの接続先を処理できない場合があります。
- プリンター、ルーターの管理画面、ローカルサービスがプロキシ経由にならないよう、LANルールを地域ルールより前に置きます。
- 一部のサイトだけ特別に処理できるよう、正確なドメインルールを広範囲のGeoSiteタグより前に置きます。
- ブロックルールでは、現在のデータファイルに実際に含まれるタグだけを使います。ログにタグが存在しないと表示されたら、データソースとタグ名を確認してください。
- 最終フォールバックルールは方向を明確にしたものを1つだけ残し、条件のないルールが複数あって互いに隠し合う状態を避けます。
新しいデータがコアに読み込まれたことを確認する方法
「更新成功」という表示だけでは、ルーティングが新しいデータを使っている証拠にはなりません。確認は、ファイルの読み込み、ルールへのマッチ、実際のアウトバウンドの3層に分けます。1層目で起動ログを確認し、2層目でルール順序を確認し、3層目で接続先がダイレクトかプロキシかを比較します。分けて確認することで、DNSキャッシュ、ノードの遅延、ブラウザーの接続再利用をGeoファイルの不具合と誤認せずに済みます。
- コアを再起動した直後にログを確認し、
geoip、geosite、failed、routingなどのキーワードを検索します。 - ルーティングルールでダイレクト接続に指定した中国国内のドメインへアクセスし、ログに記録された対象ドメイン、対象IP、アウトバウンドタグを確認します。
- 次に
geosite:geolocation-!cnで処理されるドメインへアクセスし、ログにプロキシのアウトバウンドが表示されることを確認します。 - 既知のIPアドレスへ直接接続し、GeoIPルールがマッチングに参加しているか確認します。この手順はドメインのテストとは分けて実行してください。
- ローカルHTTPまたはSOCKS入口を使う場合は、アプリが接続するポートとクライアントの表示値が一致していることを確認します。たとえば一般的な構成では
10808です。新しい設定のテストに古いポートを使わないでください。
| ログ情報 | 意味 | 次の手順 |
|---|---|---|
| リソースファイルを開けない | パス、権限、またはファイルの状態に異常がある | コアを停止して更新をやり直し、実際のコアディレクトリを確認する |
| ルールタグが存在しない | 現在のGeoデータにそのタグが含まれていない | 使用可能なタグに変更するか、対応するデータ集合へ更新する |
| すべて最終ルールにマッチする | 前段の条件にマッチしていない | ドメインが解決済みか、ルールの並び順を確認する |
| アウトバウンドは正しいがアクセスできない | 問題はGeo振り分け層にない | ノード、DNS、トランスポート設定、対象サービスの状態を引き続き確認する |
更新頻度とよくある質問
Geoデータに全員共通の固定更新周期はありません。通常の利用なら月に1回確認すれば十分です。カスタムルーティングを頻繁に調整する場合、新しいドメインを認識させたい場合、または一部のアドレスが突然誤ったアウトバウンドへ進む場合は、その都度確認してください。クライアントやコアをアップグレードした後もGeoファイルが正常に読み込まれるか確認しますが、問題がなければ毎日更新する必要はありません。
更新はルーティング保守の一部であり、接続障害全般を直すためのボタンではありません。ノードの停止、VMessやVLESSのパラメータミス、システムプロキシの無効化、ポート競合などは、Geoファイルを置き換えても解決しません。まずログから障害がルーティング層にあることを確認してから、データを更新してください。
更新後、中国国内サイトまでプロキシ経由になった?
まずgeosite:cnとgeoip:cnが最終プロキシルールより前にあるか確認し、次にdomainStrategyがドメインのIPマッチングをスキップするAsIsになっていないか確認します。変更後はコアを約2秒停止してから再起動してください。
geoip.datだけ更新しても問題ない?
技術的には単独で置き換えられますが、トラブル対応中はおすすめしません。GeoIPとGeoSiteは通常、同じルーティングで連携して使われます。セットで更新すれば、タグの収録範囲や生成時刻のずれによる判断の偏りを抑えられます。
v2rayNGの更新が何度もタイムアウトする?
まず利用可能だと確認できるノードへ接続し、「設定」→「Geoリソースファイル」から更新をやり直します。同時に省電力制限を無効にし、アプリを前面に表示したままにしてください。通常のウェブページにもアクセスできない場合は、先にノードまたはDNSの問題を解決します。
ファイルを更新したのに古い接続が変わらないのはなぜ?
コアと対象アプリの両方が既存の接続を保持している可能性があります。プロキシサービスを停止し、対象アプリを終了して2〜5秒待ってから、コアとアプリを再起動してください。ブラウザーでテストする場合は、接続の再利用を減らすため新しい独立ウィンドウを使えます。
カスタムタグが見つからない場合は?
Geoデータ集合によって含まれるタグは完全には一致しません。まずコアのログから正確なタグ名を書き写し、ルールのスペルミスを確認してください。タグの存在を確認できない場合は、cn、privateなど、現在のファイルで認識できることを確認済みの集合を使います。