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 與排除項目,不能只因開關已開啟,就認定所有連線都進入核心。
更新資料庫、更新訂閱與更新核心是三件不同的事。訂閱提供節點參數;資料庫提供可供引用的路由集合;核心負責執行設定。切換 VMess 或 VLESS 節點不會自動修正資料庫標籤,更新資料庫也無法修復失效的節點憑證。
在用戶端更新
建議方式使用 v2rayN 提供的 Geo 檔案更新功能,由用戶端處理下載與檔案存放。完成後查看更新結果,再重新啟動核心確認是否載入。
適用對象:使用內建路由、希望減少目錄操作的一般使用者。
手動替換檔案
只有在確認資料庫來源、標籤集合與核心資源目錄後,才手動操作。替換前請保留舊檔案,不要直接修改 App 套件中的檔案或系統目錄權限。
適用對象:內建更新失敗,或使用自訂資料庫的進階使用者。
使用 v2rayN 更新 Geo 檔案的步驟
v2rayN 的選單文字會依版本與介面語言而異。常見桌面版的操作路徑為「檢查更新」→「更新 Geo files」;若介面分別列出 GeoIP、GeoSite,請分開更新。以下依常見路徑說明,不代表所有平台的選單位置都相同。
-
確認目前使用的核心
在主介面確認目前節點,並查看執行日誌中的核心名稱。本文的程式碼範例適用於讀取 DAT 資料庫的 Xray 或 V2Ray 設定;若目前使用其他規則格式,請勿直接套用。
-
保留原有規則
開啟「設定」→「路由設定」,記下目前啟用的路由預設、規則順序與網域策略。若使用自訂規則,請先備份現有內容,以便發生異常時還原。
-
更新檔案
開啟「檢查更新」→「更新 Geo files」。若選單分別提供「更新 GeoIP」與「更新 GeoSite」,請依序執行並等待用戶端顯示各自的更新結果。
-
重新載入核心
確認下載完成後,使用用戶端提供的核心重新啟動功能;若找不到對應選項,請正常結束並重新開啟用戶端。重新載入資料庫比只更新訂閱更能針對問題進行確認。
-
查看載入日誌
確認沒有讀取資料庫失敗、集合不存在或路由設定無效等錯誤。接著分別測試一個明確設為直連的目標,以及一個明確設為代理的目標,確認實際出站是否符合預期。
手動處理時,請先停止核心,並從用戶端日誌或資源目錄設定確認實際檔案位置。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"
}
]
}
}
- 網域集合寫在 domain:
geosite:cn用來參照網域集合;full:example.com只會比對該網域本身,不會自動涵蓋其子網域。 - IP 集合寫在 ip:
geoip:private與geoip:cn放在同一個陣列中,表示目標 IP 命中任一集合即可。 - 不同欄位通常必須同時符合:若在同一條規則中同時填入
domain和ip,並非「網域或 IP 任一命中」即可。若需要分別比對,應拆成兩條規則。 - 介面輸入與 JSON 不同:用戶端的網域清單輸入框通常只要填入
geosite:cn,不需要貼上外層 JSON。請先確認輸入框是網域清單、IP 清單,還是完整設定編輯器。
範例中的 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 核心,支援的設定功能與資料庫讀取方式也應依實際版本確認。能匯入訂閱不代表所有用戶端都會共用同一份路由資料庫。
- 先確認輸入:在日誌中確認核心接收到的是網域還是 IP;若只有 IP,網域集合可能完全沒有參與比對。
- 再確認集合:確認目前的資料庫包含所引用的標籤,不要直接照抄其他來源的標籤名稱。
- 最後確認出站:命中直連規則後仍無法連線,可能是 DNS 或目標網路問題,不一定是 GeoIP 分類錯誤。
日常維護可分成三個步驟:更新檔案並確認已載入、檢查規則順序與網域策略,再用新連線驗證出站。資料庫提供集合,設定決定流量去向,系統代理與 TUN 則負責將流量送入核心;釐清這三個層面,排查路由分流問題會更直接。