この記事のポイント

Webサイトへの通信が意図しない経路を通っても、ノードが使えなくなったとは限りません。接続はできていて、中国本土への直結やLANへのアクセスを調整したい方向けに、ドメイン用データとIP用データの違い、クライアントが実際に読み込むリソースの更新方法、JSONルールの適用順を解説します。ルール、リソースファイル、実行中のコアが対応しているかを確認しましょう。サブスクリプションを何度も更新する必要はありません。

2つのdatファイルが照合する対象

geosite.datにはタグごとに分類されたドメインの一覧が、geoip.datにはタグごとに分類されたIPアドレス範囲が保存されています。どちらもルーティング判定用のデータファイルであり、ノードのサブスクリプションではありません。サーバーアドレス、アカウント、通信パラメーターも含まれていません。データベースを更新してもノードは追加されず、ルーティングルールも自動作成されません。

項目geosite.datgeoip.dat
照合対象リクエストのドメイン宛先IPアドレス
よく使う書式geosite:cngeoip:cn、geoip:private
ルールのフィールドdomainip
誤解しやすい点cnは集合を示すタグで、.cnドメインだけに一致するわけではないIPアドレスの割り当て地域とWebサイトの所在地は別

geosite:cnに含まれるデータは、リソースの管理元によって異なります。特定のドメインやサブドメインが登録されているかどうかは、その集合のデータを確認してください。ドメインの末尾だけでは判断できません。同じgeosite.datという名前でも、データソースが異なればタグや収録内容が異なる場合があります。

geoip:privateは、LANなどインターネットに公開されていない宛先への接続を直結させる際によく使われます。代表的なプライベートIPv4アドレス範囲を以下に示します。一般的な範囲の例であり、このタグに含まれるすべてのデータを列挙したものではありません。

10.0.0.0/8
プライベートIPv4アドレス範囲
172.16.0.0/12
172.16~172.31を含む
192.168.0.0/16
家庭内LANでよく使われる範囲

要点:リクエストがドメインとIPのどちらを含むか確認する

ルーターの192.168.1.1にアクセスできない場合は、まずIPルールを確認します。Webサイトへの通信が意図しない経路を通る場合は、ドメインルールを確認してください。LAN内のIPアドレスのルール設定ミスを、ドメイン用データの更新で直そうとしないでください。

v2rayN:Geoリソースを更新して反映を確認

デスクトップ版では、現在の設定で使われているコアとリソース形式を最初に確認します。ここでは、XrayまたはV2Flyコアを使い、dat形式のリソースを読み込む場合を説明します。別のリソース形式を使用している設定では、datファイルを更新してもルールは変わりません。メニュー名はバージョンによって異なるため、現在の画面を確認してください。インストール先にある同名ファイルをまとめて置き換えるのは避けましょう。

  1. 現在のルールを保存する

    メイン画面から「設定」→「ルーティング設定」を開き、現在有効なルーティング設定とルールの順番を控えます。カスタム設定を使用している場合は、後で比較できるよう元のJSONファイルも保存してください。

  2. リソースを更新する

    更新メニューがあるバージョンでは、「更新を確認」→「Geo filesを更新」を選びます。更新処理が完了するまで待ちます。「サブスクリプションを更新」はこの操作の代わりになりません。

  3. 更新ログを確認する

    メイン画面のログでダウンロード結果を確認し、geoipとgeositeそれぞれの処理状況を確認します。一方のファイルしか更新できていない場合は、ルーティングが直ったと判断する前に、失敗したファイルの問題を解決してください。

  4. 現在のサービスを再起動する

    更新後はコアサービスを再起動するか、クライアントを終了してから起動し直します。Webサイトに新しくアクセスして、ルーティングログを確認してください。既存の長時間接続はルール更新の確認には適していません。

ダウンロードに失敗した場合は、主に2つのケースに分けて考えます。リソースの取得中にタイムアウトする場合は、更新経路を確認します。ダウンロード後の起動時にエラーが出る場合は、ファイル形式と集合タグを確認します。クライアントにプロキシ経由でリソースを更新する設定があれば、接続できる状態で試してください。データソースを切り替えた場合は、カスタムルールで参照しているタグが引き続き存在するかも確認しましょう。

v2rayNG:リソースファイルから更新

Android版のv2rayNGはXrayコアを使用します。リソース管理に対応したバージョンでは、左上のメニューから「リソースファイル」を開き、リソース一覧を確認して、画面上の更新操作を実行します。バージョンによって文字ボタンや更新アイコンが表示されます。操作前に対象のファイル名を確認し、geoipだけを更新してgeositeを更新し忘れないようにしてください。

  1. 現在のルーティング設定を確認する

    左上のメニューから「ルーティング設定」を開き、選択中のモードとカスタムルールを控えます。カスタムJSONを使用している場合は、追加のデータファイルを参照していないかも確認してください。

  2. リソースファイルを開く

    メニューに戻って「リソースファイル」を開き、geoip.datとgeosite.datに対応するリソース項目を確認します。古いバージョンでこのメニューがない場合、ファイルを適当にシステムのダウンロードフォルダーへコピーしただけでは、インポートされたことになりません。

  3. 更新して結果を確認する

    画面上の更新操作を実行し、各リソースの結果が表示されるまで待ちます。失敗した場合は、表示されたメッセージを記録してください。ネットワークのタイムアウト、リソースURLの利用不可、ファイルの読み込みエラーは、それぞれ別に対処します。

  4. 再接続してテストする

    接続を停止してから再度開始し、「ログ」で起動時とアクセス時の記録を確認します。メイン画面の接続ボタンがオンになっているかだけで判断せず、ブラウザーから新たにアクセスして検証してください。

Androidでは、アプリ専用の保存領域と通常のダウンロードフォルダーは別です。手動でダウンロードしたファイルは、クライアントが対応するインポートまたはリソース管理の手順でコアに読み込ませる必要があります。また、アプリごとのプロキシ設定も確認してください。ブラウザーがVPNの対象から除外されている場合、コアのルーティング設定を変更しても、そのブラウザーの通信経路は変わりません。

ルーティングJSON:フィールド、出力タグ、適用順

以下はXray/V2Fly形式の設定を想定したroutingの例です。単独で起動できる完全な設定ではありません。directとproxyという名前のアウトバウンドがすでにあるものとします。前者は直結用、後者は既存のノードを指します。タグは参照名にすぎず、directと書いても直結機能が自動作成されるわけではありません。

{
  "routing": {
    "domainStrategy": "AsIs",
    "rules": [
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "domain": ["geosite:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "ip": ["geoip:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "network": "tcp,udp",
        "outboundTag": "proxy"
      }
    ]
  }
}

ルールは上から順に照合され、最初に一致したルールで出口が決まります。最後のルールは通常のTCP・UDP通信を対象にするため、具体的なルールより後ろに置く必要があります。先頭に置くと、後続の中国本土向け直結ルールが通信を処理できなくなります。

フィールドまたは書式意味確認ポイント
domainドメインを照合するここにgeosite:cnを指定
ip宛先IPを照合するここにgeoip:privateを指定
outboundTag既存のアウトバウンドをtagで参照スペルと大文字・小文字を一致させる
AsIsルーティング照合のためにドメインを追加で名前解決しないドメインが一致しなくても、IP集合は自動で照合されない

ここでは動作を明確にするためAsIsを指定しています。ルーティングに渡された値がドメインで、geosite:cnに一致しない場合、geoip:cnに一致させるためだけにコアが追加で名前解決することはありません。その場合は最終的にプロキシルールが適用されます。リクエストにIPアドレスが含まれている場合は、IP条件を直接照合できます。

同じルール内のdomain、ip、portなど異なる条件は、通常すべて満たす必要があります。同じフィールドの配列に複数の値を入れると、そのフィールドの候補として扱われます。「ドメインが中国本土のもの、またはIPが中国本土のもの」を表すには、例のようにルールを2つに分けます。2つのフィールドを同じオブジェクトに入れないでください。

自動更新と手動置き換え:運用方法に合わせて選ぶ

普段の運用では、タグを毎回変更するよりも、安定したデータソースと更新結果の確認が重要です。標準リソースに必要な集合がない場合や、更新による変化を調べたい場合は、手動での管理を検討するとよいでしょう。

クライアントから自動更新

おすすめ

クライアントのGeo更新またはリソースファイルのメニューから更新します。リソースの保存先はクライアントが管理します。更新後はサービスを再起動し、ログで読み込みが成功したか確認してください。

適した用途:一般的な集合を使い、パスの指定ミスを減らしたい日常的な設定

リソースを手動で置き換える

最初にコアが実際に使うリソースディレクトリを確認し、古いファイルを保存してから置き換えます。新しいファイルにルールが参照するタグが含まれているかも確認してください。ファイル名が同じかどうかだけでは判断できません。

適した用途:独自のデータソースを使う場合、リソースを固定したい場合、または比較・復元用に保存したい場合

要点:一度に変更するのは1つの要素だけ

まずリソースだけを更新して再起動し、動作を確認してからルールを変更します。ノードの変更、DNS設定の変更、データベースの交換、ルーティング順の変更を同時に行うと、問題が解消しても原因を特定しにくくなります。

更新後も通信経路が違う場合:ログを見て順に確認

検証には3種類の宛先を選びます。実際にアクセスできるLAN内サービス、直結させたいWebサイト、プロキシ経由にしたいWebサイトです。テスト対象、想定する出口、実際のログを記録してください。複雑な速度測定表を作るより、各通信が正しいアウトバウンドに到達しているかを確認するのが先です。

更新したのにcn集合が見つからないと表示されるのはなぜ?

最初に更新したファイルがコアの実際の読み込み先にあるか確認し、次にデータソースがcnタグを提供しているかを確認します。コアを停止して、以前に動作していたリソースに戻してから再起動してください。復元後に正常に動作する場合は、新しいデータソースの集合に関する説明を確認します。更新ボタンを繰り返し押すだけでは解決しません。

中国本土のWebサイトがプロキシ経由になる場合、geoip:cnを最上段に置けばよい?

まずリクエストに含まれているのがドメインかIPかを確認してください。AsIsでは、IPルールを先頭に移動しても、未解決のドメインが自動的にIPアドレスへ変わることはありません。まずgeosite:cnと先行ルールを確認し、そのうえでドメインの名前解決方針を変更するか判断してください。

privateルールがあるのに、自宅の機器にアクセスできないのはなぜ?

まず機器の実際のLAN内IPアドレスで接続を試します。ホスト名だけで失敗する場合は、LAN内の名前解決を個別に確認してください。IPアドレスでも失敗する場合は、クライアントがLANへの通信を除外していないか、VPNがその通信を処理しているか、対象サービスがアクセス可能なアドレスで待ち受けているかを確認します。

domainとipを同じルールに書くと、一致しにくくなるのはなぜ?

異なるフィールドは単純な「または」の条件ではありません。中国本土向けドメインと中国本土向けIPは別々のルールオブジェクトに分け、意図した順番に並べてからコアを再起動します。クライアントのルーティングエディターが設定を自動生成する場合は、入力欄だけでなく最終的に生成されたルールも確認してください。

最後に、動作する設定とリソースの取得元を記録しておきましょう。次にルーティングの問題が発生したら、まずルールの順番とリソースの変更を比較し、それから通信経路を確認します。集合の内容が変わったのか、設定の参照先が誤っているのか、そもそも通信がコアに届いていないのかを切り分けられます。