GeoIP、GeoSite 規則檔更新與路由設定教學

了解 geoip.dat、geosite.dat 的用途、如何在用戶端更新規則檔,以及 geosite:、geoip: 前綴規則的常見搭配。

本文重點

本文適合已匯入節點、準備調整路由分流的使用者。先分清 IP 資料庫與網域資料庫,再更新用戶端實際載入的檔案,最後用一組精簡路由規則確認比對結果。本文範例採用 V2Ray/Xray 傳統 JSON 路由語法;若透過 v2rayN 介面設定,請將欄位對應到路由編輯器,不要直接貼到訂閱網址欄。

GeoIP 與 GeoSite:分別比對 IP 和網域

geoip.dat 儲存依標籤分類的 IP 網段集合,geosite.dat 則儲存依標籤分類的網域規則集合。兩者都是由核心讀取的資料檔,不是節點訂閱,也不是代理協定。更新這些檔案不會變更 VMess 或 VLESS 節點的伺服器位址、使用者識別碼或傳輸參數。

GeoIP:IP 網段集合

預設檔名
geoip.dat
路由欄位
ip
常見寫法
geoip:cn
私人網路位址標籤
geoip:private

標籤是否存在取決於檔案來源;地域分類也不代表網站營運者所在地。

GeoSite:網域規則集合

預設檔名
geosite.dat
路由欄位
domain
常見寫法
geosite:cn
單一網域的寫法
full:example.com

網域集合可能包含網域後綴、完整網域或正規表示式規則,不能只把它當成網域後綴清單。

geosite:cn 代表讀取目前網域資料庫中的 cn 集合,並非「所有以 .cn 結尾的網域」。同樣地,geoip:cn 也不是查詢某個網站的註冊地。使用 CDN 的網站可能取得多個地區的 IP,依網域分流與依解析結果分流可能會得到不同結果。

更新前檢查:檔案來源、核心與生效位置

更新失敗常見原因有三種:用戶端更新了一個資料夾,核心卻從另一個資料夾讀取;新的資料來源未包含舊規則引用的標籤;下載的內容不是有效資料檔。開始前請先備份目前可用的兩個檔案,以及路由規則或用戶端設定匯出檔。

2 個檔案
分別確認 GeoIP 與 GeoSite 更新結果
3 條規則
下文用來驗證分流的精簡範例
7 天
可作為日常檢查週期,並非必要要求
  • 先確認核心。在用戶端的節點設定與啟動記錄中確認核心名稱;不要只看桌面捷徑的名稱。
  • 接著確認來源。優先沿用目前用戶端預設的資料來源。若使用自訂來源,先確認是否提供 cn、private 等現有規則所需的集合。
  • 確認實際讀取位置。以用戶端管理的資源資料夾及啟動錯誤訊息中的路徑為準。可攜式資料夾、獨立資料目錄與多個安裝副本可能彼此不相通。
  • 保留還原方式。同時記錄原始來源、更新時間與路由設定。只備份規則文字,無法解決新檔案缺少標籤的問題。

判斷方式:先沿用相同來源,再考慮更換規則庫

如果目前分流正常,請先更新相同來源的資料。只有確認現有資料庫缺少所需分類時,才更換來源並逐一核對標籤,避免把「更新檔案」和「遷移規則系統」混為一次操作。

在用戶端更新規則檔:下載後重新載入核心

用戶端選單名稱會因版本與介面語言而異。桌面版 v2rayN 常見入口位於「檢查更新」選單下的 Geo 檔案更新項目;有些版本會將 GeoIP、GeoSite 分開列出。請依功能入口操作;若找不到對應項目,先查看目前版本的選單與記錄,不要把「更新訂閱」當成更新規則庫。

  1. 先確認連線可用。確認節點可以正常使用。若目前網路無法連上規則來源,可在用戶端支援的更新代理選項中啟用代理下載;系統代理是否生效,不能取代更新記錄的判斷。
  2. 執行 Geo 檔案更新。在 v2rayN 中展開「檢查更新」,選擇 Geo 檔案相關更新項目;若分成兩項,請分別更新 GeoIP 與 GeoSite。確認各項都顯示完成後,再修改路由。
  3. 檢查錯誤訊息。逾時通常表示連線有問題;解析、解壓縮或寫入失敗,則應檢查下載內容、資料夾權限與檔案是否被占用。檔案修改時間變更只能作為輔助判斷依據。
  4. 重新載入。使用用戶端提供的重新啟動服務或重新載入核心功能;若沒有獨立按鈕,請停止後重新啟動連線。接著檢查啟動記錄,確認沒有資料檔或分類載入錯誤。
  5. 驗證一次分流結果。保留更新前相同的路由模式與測試目標,再比較實際使用的出站。此時不要同時更換節點、DNS 與整套路由範本。

在 Android 上,v2rayNG 的 Geo 資源更新入口通常位於側邊選單或資源相關頁面;進入後依頁面提供的更新操作執行。v2flyNG 的選單配置與可用更新項目應以安裝版本為準,不要直接套用另一款用戶端的選單名稱。行動裝置完成更新後,同樣需要停止並重新啟動連線。

路由規則寫法:網域優先、IP 補充、最後設兜底

路由會依規則排列順序進行比對,符合後便使用對應的出站。以下示範「中國大陸網域直連、私人與中國大陸 IP 直連、其他 TCP/UDP 流量走代理」的基本結構。此處的 direct 和 proxy 都是出站標籤,必須與現有設定中的 outbounds[].tag 完全一致。

請求進入核心 比對網域規則 必要時進行解析 比對 IP 規則 套用兜底出站

這是設定片段,不是完整的用戶端設定。適用於直接編輯 V2Ray/Xray JSON 的情況;若透過用戶端圖形介面管理路由,請在路由編輯器中依照相同順序建立規則,並儲存為目前啟用的規則集。

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "domain": [
          "geosite:cn"
        ],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "ip": [
          "geoip:private",
          "geoip:cn"
        ],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "network": "tcp,udp",
        "outboundTag": "proxy"
      }
    ]
  }
}
  • 第一條先依網域集合判斷。請求包含網域且符合 geosite:cn 時,直接使用 direct,不必再依靠 GeoIP 作出同一次分流判斷。
  • 第二條依 IP 集合判斷。同一個 ip 陣列中的兩個集合採「符合任一項即可」,不需要目標同時屬於兩個集合。私人位址集合的實際範圍以資料檔為準。
  • 第三條明確設定兜底規則。前面都未符合的 TCP 與 UDP 請求會使用 proxy。這條範圍較廣的規則應放在最後,否則後續規則可能沒有機會比對。
  • 不要任意合併欄位。同一條規則同時填入 domain 與 ip,不代表「網域或 IP 符合其中之一即可」。不同條件欄位通常必須同時符合,分成兩條規則會更容易檢查。

IPIfNonMatch 的意思是:網域請求無法依網域條件決定路由時,解析目標 IP,再嘗試比對 IP 條件。最後的 network 兜底規則不是網域分類,也不能取代這個解析步驟。若設定為 AsIs,路由模組不會為了 IP 規則主動解析網域;只有網域資訊的請求可能因此使用兜底出站。

DNS 與規則順序:更新成功,分流結果仍可能不符預期

GeoSite 不會自動指定 DNS 伺服器,GeoIP 也無法修正錯誤的解析結果。路由模組決定連線使用哪個出站;DNS 設定則決定如何取得位址。兩者相關,但「中國大陸網域直連」不代表 DNS 查詢一定會送往中國大陸的 DNS。DNS 伺服器選擇與查詢出站仍須分別檢查。

觀察到的狀況優先檢查項目處理方式
網域規則始終未命中核心收到的是網域還是 IP檢查應用程式的代理方式;視需要評估嗅探設定,不要假設所有加密連線都能還原網域。
所有網站都使用相同出口路由模式與第一條規則確認已啟用自訂分流,並將全匹配規則移至最後。
同一網站偶爾使用不同出口CDN 位址與 IP 分類檢查是否依賴 GeoIP;若需要穩定結果,可新增優先比對的網域例外。
修改規則後,既有連線沒有變化連線是否已建立重新載入核心並建立新的測試連線,不要用既有長連線判斷新規則。

即使設定了 IPIfNonMatch,已符合前面網域規則的請求也不會再交由後面的 GeoIP 規則改判。反過來說,如果應用程式在進入代理前就已將網域解析為 IP,GeoSite 可能沒有網域可供比對。能否透過嗅探取得網域,取決於協定、流量型態與設定,不能當成百分之百有效的補救方式。

判斷方式:先確認請求資訊,再判斷資料庫是否過期

遇到出站結果不符預期時,先核對記錄中的目標網域或 IP、命中的出站與規則順序。只有在請求資訊正確、規則確實已啟用,但集合仍未包含目標時,才考慮更新資料或新增單獨的例外規則。

更新失敗或分類不存在:常見問題排除

更新顯示成功,為什麼啟動時卻提示分類不存在?

先記下記錄中缺少的標籤,例如 geosite:cn。確認目前檔案來源是否包含此集合,再檢查核心讀取的路徑。不要只把標籤改成看似相近的名稱;可先還原備份檔案,確認成功啟動後,再依新資料來源提供的分類調整規則。

GeoIP 已更新完成,但 GeoSite 下載逾時怎麼辦?

分別查看兩項更新結果,先檢查失敗項目的來源與網路連線。如果用戶端支援透過代理更新,請使用已確認可用的節點重試。不要反覆覆寫仍可使用的檔案,也不要複製一個檔案後改名充當另一個檔案。

訂閱已更新,為什麼路由資料庫仍是舊的?

訂閱主要提供節點資訊,Geo 檔案則有獨立的更新入口。請前往用戶端的 Geo 資源更新項目執行更新,再重新啟動連線。若訂閱服務另有提供路由設定,也應分別確認規則文字與資料檔的更新狀態。

更新後部分網站無法開啟,需要馬上更換節點嗎?

先確認核心是否正常啟動,再查看該網站使用的出站是否有變化。若更新前可正常使用,還原兩個資料檔後也恢復正常,請優先檢查標籤差異與分類變更;若所有連線都失敗,再檢查節點連線、DNS 與本機代理設定。

不必為了追求最新資料而每天更換來源。一般使用者每週檢查一次即可;若分類有明確變更或記錄出現錯誤,再提前處理。更新規則庫不會提高節點本身的頻寬,也不會改變伺服器是否支援特定協定;它只會更新路由判斷所依據的資料。

驗證是否生效:固定三個目標,保留還原方式

驗證時選擇一個預期直連的網域、一個預期走代理的網域,再選一個有權限存取的區域網路服務。目的不是測速,而是確認三類連線都使用預期的出站。區域網路服務應使用實際存在的位址,不要反覆向隨機位址傳送測試請求。

  1. 確認使用相同入口。例如應用程式使用 127.0.0.1:10808 時,先確認該連接埠確實是目前用戶端的監聽連接埠,並核對它接受的代理協定。10808 只是範例,不能取代實際設定。
  2. 確認設定已載入。儲存路由並重新載入核心,檢查是否出現檔案讀取、標籤缺失或設定解析錯誤。若啟動失敗,不要根據瀏覽器的狀況推測路由結果。
  3. 逐一建立新連線。記錄目標、時間,以及記錄中顯示的出站標籤。若用戶端只顯示 direct/proxy,這些資訊可以確認使用的出口,但未必能指出實際符合哪一條規則。
  4. 縮小問題範圍。必要時暫時只保留最精簡的規則集,或提高記錄詳細程度進行一次短時間重現。排查完成後請恢復常用的記錄等級;分享記錄前,移除節點位址、使用者識別碼與瀏覽記錄。
  5. 保留可用版本。確認三個目標都符合預期後,再清除過期備份。遇到問題時,先還原原始檔案與規則,再分別重新執行更新與修改。

最後請保存三類資訊:規則檔來源、路由排列順序,以及實際使用的核心。之後即使更換裝置或重新安裝用戶端,也能先還原一致的分流邏輯,再決定是否調整分類與 DNS。更多初始設定請參閱設定教學,欄位說明可對照協定手冊。

用戶端下載