サブスクリプションをインポート済みで、直結とプロキシのルールを調整したいデスクトップユーザー向けです。まずドメインの集合とIPアドレスの集合の違いを把握し、クライアントが実際に読み込むデータファイルを更新します。その後、v2rayNでルールを順番に追加し、接続先を確認します。例ではV2Ray/Xrayのルーティング項目を扱います。クライアントの完全な設定を置き換える用途ではありません。
GeoIPとGeoSite:照合対象の違い
geosite.datにはラベルごとに整理されたドメインの集合が、geoip.datにはラベルごとに整理されたIPアドレス範囲の集合が保存されています。これらはルーティングの照合に使うデータであり、ノードのサブスクリプションではありません。VMessやVLESSの接続を確立するものでもありません。ルールデータを更新してもサーバーは追加されず、サブスクリプション内の認証情報も変わりません。
GeoSite:ドメインの集合
- ファイル名
geosite.dat- ルール項目
domain- 指定方法
geosite:cn- 照合対象
- 接続時に渡された、またはスニッフィングで取得したドメイン
ラベルに含まれる内容はデータソースによって管理されています。ラベル名だけで対象をすべて判断することはできません。
GeoIP:IPアドレスの集合
- ファイル名
geoip.dat- ルール項目
ip- 指定方法
geoip:private- 照合対象
- 接続先のIPアドレス、またはポリシーに従って名前解決されたIPアドレス
IPアドレスの割り当て先はルーティングの判定に使う情報であり、Webサイトの運営地域と同じとは限りません。
geosite:cnは通常、データソースに登録された中国関連ドメインに一致します。一方、geoip:cnは該当するIPアドレス範囲に一致します。互いに置き換えられる指定ではありません。ドメインが複数地域のCDNを利用することもあれば、同じIPアドレスで複数のドメインが運用されることもあります。ドメインルールとIPルールは別々に設定してください。
ルールデータは、ルーティングの3つ目の段階で使われます。アプリがシステムプロキシやTUNを経由していなければ、ファイルを更新しても、そのアプリの接続がルーティング処理に入ることはありません。接続先がIPアドレスのみでドメインがない場合、GeoSiteルールでWebサイト名を直接識別することもできません。スニッフィングでドメインを補えるかどうかは、通信プロトコルとクライアントの設定によります。
更新前に確認すること:コア、データソース、バックアップ
v2rayNはクライアントで、V2Ray/Xrayは接続を処理するコアです。この記事では、これらのコアが使用するDAT形式のルールデータを扱います。別形式のルールを使う設定に切り替えた場合、ファイル名が似ているだけで互換性があるとは判断できません。現在使用中のコアと起動ログを確認してから、更新するファイルを決めてください。
- 現在の状態を記録:v2rayNのバージョン、現在のルーティングプリセット、ドメインの名前解決ポリシー、コアのログに表示されたリソースパスを控えてください。ソフトウェアのショートカットの場所だけを記録しても不十分です。
- ルーティングをバックアップ:「設定」→「ルーティング設定」で、有効なルールとその順序を記録してください。特にカスタムの直結、ブロック、プロキシルールを控えます。
- データをバックアップ:実際に読み込まれている
geoip.datとgeosite.datを見つけ、別のバックアップ用フォルダーにコピーしてください。バックアップファイルに使用中のファイルと同じ名前を付けないでください。 - データソースを確認:まずはクライアントに設定されているルールデータの配布元をそのまま使いましょう。配布元を変更する場合は、現在のルールで参照しているラベルがすべて含まれているか、ドキュメントを確認してください。
サブスクリプション、クライアント、コア、ルールデータの更新は、それぞれ別の作業です。サブスクリプションを更新すると、主にノード情報が更新されます。クライアントの更新にリソースファイルが含まれる場合もありますが、それだけで現在のルールデータが更新済みとは限りません。原因を調べるときは一度に一種類だけ変更し、ノード、ルール、データソースのどれが変わったのか分からなくならないようにしましょう。
ルールデータの更新:クライアントの更新機能と手動置き換え
まずはv2rayNの内蔵更新機能を使ってください。一般的なデスクトップ版では「更新を確認」に「Geoファイルを更新」があります。メニュー名はバージョンや画面の種類によって異なる場合があります。この項目が見つからない場合は、使用中のバージョンの説明を確認してください。「サブスクリプションを更新」は別の操作です。
- 設定済みのリソースダウンロード先に、現在のネットワークからアクセスできることを確認してください。更新方法にプロキシ経由のダウンロードがある場合は、使用中のノードが利用できることを確かめてから選択します。
- Geoファイルの更新を実行し、ログでダウンロード結果を確認してください。一度に複数のファイルを更新する場合は、最後のメッセージだけでなく、ファイルごとに成功したか確認しましょう。
- 更新後はコアを再起動してください。コアだけを再起動する方法が分からない場合は、v2rayNを正常に終了してから再度起動します。タスクトレイに最小化しただけでは再起動になりません。
- 再接続して起動ログを確認し、ファイルの読み込み失敗、ラベル不足、ルーティング初期化エラーがないことを確かめてから、ルーティング結果を検証してください。
手動で置き換える場合は、まず実際のリソースフォルダーを確認
手動更新は、内蔵ダウンロードに失敗した場合や、データソースを固定したい場合に適しています。コアを停止してから、信頼できるルールデータの配布元からDATファイルを入手し、コアが実際に読み込むリソースフォルダーに配置してください。ファイル名はgeoip.datとgeosite.datのままにします。圧縮ファイルは先に展開してください。WebページをDAT拡張子で保存しても、ルールデータとしては使えません。
- 決め打ちのパスを使わない:ポータブル版とインストール版、またプラットフォームによってデータフォルダーは異なります。同じPCにクライアントが複数インストールされている場合もあります。
- コアを単独で実行する場合は環境変数を確認:Xrayでは
XRAY_LOCATION_ASSET、V2RayではV2RAY_LOCATION_ASSETでリソースフォルダーを指定できます。クライアントから起動する場合は、クライアントの起動環境に従ってください。 - 元に戻せる状態を保つ:2つのファイルを両方更新して問題が起きた場合は、まず同じタイミングで作成したバックアップ一式を復元してからコアを再起動してください。異なる配布元のファイルが混在すると、原因を特定しにくくなります。
ファイルの更新日時は参考にはなりますが、新しいデータが読み込まれた証拠にはなりません。更新後も動作がまったく変わらない場合は、別のコピーを置き換えていないか、コアを正しく再起動したかを確認してください。複数の配布元から続けてダウンロードし、同じフォルダーに上書きするのは避けましょう。原因を調べる手掛かりが失われます。
v2rayNのルーティング設定:項目とルールの順序
「設定」→「ルーティング設定」を開き、使用するルーティング設定を選んでルールを編集または追加します。一般的なルール編集画面には「ドメイン」「IP」とアウトバウンドの選択項目があります。画面の構成はバージョンによって異なります。geosite:cnはドメイン欄に、geoip:cnやgeoip:privateはIP欄に入力してください。3つすべてをドメイン欄に貼り付けないでください。
| 目的 | 入力欄 | 内容 | アウトバウンド |
|---|---|---|---|
| LANアドレスを直結 | IP | geoip:private | 直結 |
| 集合に含まれるドメインを直結 | ドメイン | geosite:cn | 直結 |
| 該当地域のIPアドレスを直結 | IP | geoip:cn | 直結 |
| 指定したドメインをプロキシ経由にする | ドメイン | full:example.com | プロキシ |
V2Ray/Xrayはルールを上から順に照合し、最初に一致したルールでアウトバウンドを決定します。優先したい個別ルールは、広い範囲を対象とするルールより前に配置してください。たとえば直結対象の集合に含まれるドメインをプロキシ経由にしたい場合は、そのドメイン専用のプロキシルールを、集合を直結するルールより前に置きます。表のexample.comは、完全一致の書き方を説明するためのドキュメント用ドメインです。
{
"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"
}
]
}
}
1つのルールにドメインとIPなど異なる条件を同時に設定した場合、通常はすべての条件を満たす必要があります。「ドメインかIPのどちらかに一致」という意味ではありません。そのため、ドメインによる直結とIPによる直結は別々のルールにしてください。また、domain:example.comとfull:example.comを混同しないよう注意しましょう。前者は指定したドメインとそのサブドメインに一致し、後者は指定した完全なドメインだけに一致します。
ドメイン名前解決ポリシー:GeoIPが照合されるタイミング
domainStrategyは、ルーティング時にドメインをどのように扱うかを制御する設定です。DNSサーバーのアドレス設定とは異なります。接続先が最初からIPアドレスの場合は、そのままIPルールで照合できます。ドメインを含むリクエストをIPルールに照合するために追加で名前解決するかどうかは、選択したポリシーによります。
AsIs:IPルールとの照合を目的としたドメインの名前解決は行いません。主にドメインルールで振り分ける設定に適していますが、geoip:cnがあるだけでは、ドメインリクエストの名前解決は行われません。IPIfNonMatch:ドメインがどのルールにも一致しなかった場合に、名前解決してIPアドレスでの照合を試みます。上の抜粋ではこのポリシーを使い、まずドメインの集合を照合してから、IPアドレスの割り当て先を確認します。IPOnDemand:照合中にIPアドレスが必要な条件があると、名前解決を行います。より早い段階で名前解決が行われるため、ルールの順序とDNSの応答結果が動作にどう影響するか、あわせて確認してください。
IPIfNonMatchの設定で、すべてのリクエストに一致するフォールバックルールを末尾より前に追加すると、ドメインの照合段階ですでに一致し、「不一致後に名前解決する」という動作が期待どおりにならない場合があります。そのため、ポリシー名だけでGeoIPが必ず実行されるとは判断できません。ルール全体を確認してください。また、DNSから返されるCDNのIPアドレスが変わると、同じドメインでもネットワークによって一致するIP集合が異なる場合があります。
これらのアドレス範囲は、geoip:privateを理解するための具体例であり、集合の全内容を示すものではありません。ほかの特殊用途のアドレスが含まれる場合もあります。LAN内サービスにアクセスできるかどうかは、TUNのルーティング、システムのファイアウォール、接続先デバイスの権限にも左右されます。失敗の原因をすべてGeoIPに求めないでください。
検証とトラブル対処:一致したルールを確認してから変更
検証では、直結される想定のドメイン、プロキシ経由になる想定の接続先、アクセス権のあるLAN内サービスをそれぞれ選びます。テストするアプリが実際にクライアントのプロキシ経路を通るようにし、接続ログで接続先とアウトバウンドのタグを確認してください。応答が速くなったことやWebページが表示できたことだけでは、ルールが正しく適用されたとは判断できません。
- 変更したルーティング設定を保存して有効にし、元のプリセットに戻っていないことを確認します。
- テスト接続を作り直します。ブラウザーの既存の長時間接続では以前のアウトバウンドが使われ続ける場合があるため、テストページを閉じてから開き直してください。
- 必要に応じて一時的にログレベルを上げ、接続先のドメイン、IPアドレス、アウトバウンドを確認します。記録が済んだら通常のログレベルに戻し、詳細なアクセス記録が長期間蓄積されないようにしてください。
- 変更する項目は一度に1つにします。たとえば、まずルールの順序を変更し、次に名前解決ポリシーを見直します。ルールデータの配布元を変えるのは最後にしてください。
更新後にgeositeラベルが見つからないと表示される場合
エラーに表示されたラベル名を省略せず記録し、ルールがIP集合ではなくドメイン集合を参照していることを確認します。現在のデータソースがそのラベルを提供しているか調べてください。配布元を変更した後にエラーが出た場合は、元のデータファイルに戻すか、新しい配布元が対応を明記している集合にルールを変更してから、コアを再起動します。
ファイルを置き換えたのに、ルーティング結果が変わらないのはなぜ?
コアが実際に読み込んでいるフォルダーを確認し、更新後に再起動したか確かめてください。次に、より前のルールがすでに一致していないか、アプリが古い接続を再利用していないかを調べます。最後に、編集したルーティング設定が現在有効な設定であり、同名のバックアップではないことを確認してください。
geoip:cnを追加しても、中国本土のWebサイトがプロキシ経由になるのはなぜ?
まず、リクエストの接続先がドメインかIPアドレスかを確認し、次にドメインの名前解決ポリシーを調べてください。AsIsでは、IPルールのためにドメインリクエストを自動で名前解決しません。また、前にあるドメインルールがプロキシに一致している場合、後続のGeoIPルールで上書きすることはできません。geosite:cnの位置と、フォールバックを含むルール全体を確認してください。
geosite.datだけ更新できますか?
個別に更新できますが、想定した配布元のファイルであり、現在使用しているラベルが含まれていることを確認してください。2種類のデータの配布元を同時に変更する場合は、まとめて1回の変更として記録し、旧ファイルをそれぞれ保管しておくと安心です。どちらかの読み込みに失敗した場合は、まず正常に動作する状態へ戻してから原因を調べてください。
安定した設定を保つには、データの配布元、更新日時、ルールの順序、名前解決ポリシーを記録しておくことが大切です。ルールデータを更新すれば集合の内容を補えますが、アウトバウンドの選択ミスは解決できません。また、DNSやシステムプロキシの確認に代わるものでもありません。クライアントの基本設定についてはクイックスタートをご覧ください。ルーティングやDNSの用語を確認する場合は用語集をご利用ください。