GeoIP、GeoSite 資料庫更新指南:在路由分流規則中使用 geoip.dat、geosite.dat

了解 GeoIP 與 GeoSite 資料庫的內容、如何在用戶端一鍵更新,以及 geosite:cn、geoip:private 等常用規則的比對順序與設定注意事項。

本文重點

GeoSite 依網域集合比對,GeoIP 則依 IP 位址集合比對。本文適合使用 v2rayN 設定路由分流的 Mac 使用者,說明資料庫更新位置、Xray 與 V2Ray 的路由欄位、規則順序及日誌檢查方式。先確認連線已進入核心,再檢查資料庫與規則;更新訂閱不能取代更新這兩個檔案。

GeoIP 與 GeoSite 分別比對什麼

geosite.dat 儲存依標籤分類的網域規則集合,項目可以是完整網域、網域後綴或其他支援的比對形式。geoip.dat 儲存依標籤分類的 IP 網段集合,通常包含國家或地區分類,以及特定用途的位址分類。兩者都是二進位資料庫,不能將一般網域文字檔改名後直接使用。

GeoSite:網域集合

常見檔案
geosite.dat
路由欄位
domain
參照範例
geosite:cn
比對對象
連線中的目標網域

標籤是否存在,取決於目前使用的資料庫來源與內容。

GeoIP:位址集合

常見檔案
geoip.dat
路由欄位
ip
參照範例
geoip:private
比對對象
目標 IP 或路由解析出的 IP

位址分類不等於網站分類,也不代表連線一定可達。

geosite:cn 並不是「所有以 .cn 結尾的網域」,而是資料庫中名為 cn 的集合。集合可能包含其他網域後綴,也可能尚未收錄新上線的網站。geoip:cn 則依資料庫中的位址範圍比對,不能據此判斷網站營運主體或使用者所在地。

geoip:private 常用於內網及特殊用途位址的直連規則,但不要將它視為完整的區域網路網域清單。例如,192.168.1.1 是 IP 目標,printer.local 是網域目標,後者還涉及名稱解析。某個位址是否收錄,請以目前的資料庫內容為準。

先檢查系統代理,再選擇更新方式

路由規則只會處理已進入代理核心的連線。macOS 系統代理主要影響遵循系統代理設定的 App;若某個 App 繞過系統代理,修改 GeoSite 規則通常不會改變它的連線路徑。TUN 可以接管更多流量,但仍須檢查路由、DNS 與排除項目,不能只因開關已開啟,就認定所有連線都進入核心。

2 種檔案
本文涵蓋 geoip.dat 與 geosite.dat
3 種策略
AsIs、IPIfNonMatch、IPOnDemand
53
傳統 DNS 常用 UDP/TCP 連接埠

更新資料庫、更新訂閱與更新核心是三件不同的事。訂閱提供節點參數;資料庫提供可供引用的路由集合;核心負責執行設定。切換 VMess 或 VLESS 節點不會自動修正資料庫標籤,更新資料庫也無法修復失效的節點憑證。

在用戶端更新

建議方式

使用 v2rayN 提供的 Geo 檔案更新功能,由用戶端處理下載與檔案存放。完成後查看更新結果,再重新啟動核心確認是否載入。

適用對象:使用內建路由、希望減少目錄操作的一般使用者。

手動替換檔案

只有在確認資料庫來源、標籤集合與核心資源目錄後,才手動操作。替換前請保留舊檔案,不要直接修改 App 套件中的檔案或系統目錄權限。

適用對象:內建更新失敗,或使用自訂資料庫的進階使用者。

使用 v2rayN 更新 Geo 檔案的步驟

v2rayN 的選單文字會依版本與介面語言而異。常見桌面版的操作路徑為「檢查更新」→「更新 Geo files」;若介面分別列出 GeoIP、GeoSite,請分開更新。以下依常見路徑說明,不代表所有平台的選單位置都相同。

  1. 確認目前使用的核心

    在主介面確認目前節點,並查看執行日誌中的核心名稱。本文的程式碼範例適用於讀取 DAT 資料庫的 Xray 或 V2Ray 設定;若目前使用其他規則格式,請勿直接套用。

  2. 保留原有規則

    開啟「設定」→「路由設定」,記下目前啟用的路由預設、規則順序與網域策略。若使用自訂規則,請先備份現有內容,以便發生異常時還原。

  3. 更新檔案

    開啟「檢查更新」→「更新 Geo files」。若選單分別提供「更新 GeoIP」與「更新 GeoSite」,請依序執行並等待用戶端顯示各自的更新結果。

  4. 重新載入核心

    確認下載完成後,使用用戶端提供的核心重新啟動功能;若找不到對應選項,請正常結束並重新開啟用戶端。重新載入資料庫比只更新訂閱更能針對問題進行確認。

  5. 查看載入日誌

    確認沒有讀取資料庫失敗、集合不存在或路由設定無效等錯誤。接著分別測試一個明確設為直連的目標,以及一個明確設為代理的目標,確認實際出站是否符合預期。

手動處理時,請先停止核心,並從用戶端日誌或資源目錄設定確認實際檔案位置。App 安裝目錄與使用者資料目錄可能不同;在 macOS 上尤其不要預設資料庫應放在 App 套件內。替換後若出現標籤缺漏,還原原檔通常比繼續新增規則更容易找出問題。

geosite:cn 與 geoip:private 的正確用法

以下是 Xray/V2Ray 格式的 routing 設定片段,並非可獨立執行的完整設定。範例中的 direct、proxy 必須與完整設定中已定義的出站標籤一致。v2rayN 會產生執行設定,請優先在用戶端的路由編輯器中調整,不要修改產生後很快就會被覆寫的暫存檔。

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

範例中的 example.com 僅用來說明精確網域規則,實際使用時請換成需要指定出站的網域。最後一條是明確的 TCP/UDP 預設規則,不代表所有用戶端的預設行為。若沒有預設規則,未命中的流量通常會交由預設出站處理;不要假設預設出站一定是代理。

路由規則順序如何搭配 DNS 策略

規則會依序檢查,命中後便使用對應的出站,不會繼續尋找「更精確」的下一條。一般可先放明確的例外,再放網域集合、IP 集合,最後放預設規則。若將涵蓋所有 TCP/UDP 的規則放在最前面,後續的 GeoSite 與 GeoIP 規則就沒有機會處理這些連線。

domainStrategy路由行為排查重點
AsIs路由比對時不會額外解析網域;若目標本身是 IP,仍可比對 IP 規則。網域連線不能只靠 GeoIP 規則,就期待完整分流。
IPIfNonMatch網域未命中規則時,嘗試解析為 IP 後再次比對。檢查前面的網域規則或預設規則是否已命中。
IPOnDemand比對過程遇到需要 IP 的規則時,依需求解析目標網域。前面的 IP 規則可能在後續網域例外規則之前命中。

特別注意:前面的範例使用 IPIfNonMatch,並在最後設定預設規則。即使網域沒有命中 geosite:cn,也可能先命中預設規則,因此不會因為「未命中 GeoSite」就一定進入額外的 IP 解析流程。此範例優先依網域分流;其中的 IP 規則仍可處理目標本身就是 IP 的連線。

若確實需要先解析未分類網域,再使用 GeoIP 分流,可以重新設計預設規則與預設出站,或評估 IPOnDemand,但必須一併檢查規則順序。不能只改策略名稱,就認定行為正確。採用按需解析時,請將指定走代理的網域例外放在範圍較廣的 IP 規則之前,減少例外規則被提前涵蓋的情況。

更新後仍未生效:依症狀排查

不要同時更換訂閱、修改 DNS、切換路由又更新資料庫。每次只變更一個條件,並記錄目標網域、目標 IP、命中的規則與出站標籤,才能分辨是「連線未進入核心」、「資料庫無法載入」,還是「規則比對錯誤」。

症狀優先檢查處理方式
更新後核心無法啟動檔案讀取路徑、資料庫格式、集合標籤查看啟動日誌,還原舊檔案,再確認設定引用的集合是否存在。
中國大陸網站仍走代理網域是否已收錄、是否被前置規則涵蓋先新增明確的網域規則進行驗證,再決定是否調整集合或更新來源。
無法連線內網裝置連線目標是網域還是 IP、解析結果及 TUN 排除項目先使用裝置實際的內網 IP 測試,再分別處理名稱解析與路由。
切換規則後沒有變化目前啟用的路由預設、現有持續連線確認預設已生效,重新建立測試連線,必要時重新啟動核心。
只有特定 App 發生異常App 是否遵循系統代理、是否自帶 DNS先確認流量入口,不要只靠新增 GeoSite 項目處理。

相同的設定概念也可用於 Android 上的 v2rayNG,但它使用 Xray 核心,選單與資源目錄不能直接照搬桌面版操作。v2flyNG 使用 v2fly 核心,支援的設定功能與資料庫讀取方式也應依實際版本確認。能匯入訂閱不代表所有用戶端都會共用同一份路由資料庫。

日常維護可分成三個步驟:更新檔案並確認已載入、檢查規則順序與網域策略,再用新連線驗證出站。資料庫提供集合,設定決定流量去向,系統代理與 TUN 則負責將流量送入核心;釐清這三個層面,排查路由分流問題會更直接。

下載v2rayN依平台選擇用戶端