本文適合已匯入訂閱、準備調整路由分流的使用者。先釐清 IP 資料庫與網域資料庫的差異,再透過 v2rayN 更新 Geo 檔案、確認核心實際讀取的位置,最後設定國家與廣告類別規則。範例採用 V2Ray/Xray 的 DAT 路由語法;操作前請確認目前使用的核心,以及資料來源是否包含引用的類別。
GeoIP 與 GeoSite:各自比對什麼
geoip.dat 儲存依國家或其他標籤分類的 IP 網段;geosite.dat 儲存依標籤分類的網域規則。這些是供核心讀取的資料檔,不是節點清單,也不是訂閱網址。更新訂閱會更新伺服器設定,但不能據此認定 Geo 檔案也已更新。
| 項目 | GeoIP | GeoSite |
|---|---|---|
| 常見檔名 | geoip.dat | geosite.dat |
| 比對對象 | 目標 IPv4 或 IPv6 位址 | 連線攜帶或透過嗅探取得的網域 |
| 規則範例 | "ip": ["geoip:cn"] | "domain": ["geosite:cn"] |
| 主要限制 | 不能僅憑 IP 歸屬地判斷營運者所在地 | 類別範圍取決於資料來源,且需要網域資訊 |
geoip:cn 表示引用資料庫中的 cn IP 集合,不是「所有中文網站」。geosite:cn 引用的是網域類別,兩者並非一一對應。網站可能使用跨國 CDN,同一個網域在不同網路環境下也可能解析到不同位址,因此網域規則與 IP 規則要分開理解。
在 v2rayN 更新 Geo 檔案
先確認目前節點使用 V2Ray 或 Xray,以及目前啟用的路由方案。v2rayN 負責產生設定並管理核心,實際讀取資料庫、比對路由的是核心。以下以提供「檢查更新」→「更新 Geo 檔案」入口的桌面介面為例;不同介面版本的名稱或位置可能有所不同,更新訂閱不能取代這項操作。
-
記錄目前狀態
記下目前啟用的路由方案、節點使用的核心,以及這次準備排查的網域。先備份路由設定,避免在同一次操作中混合修改規則與更新資料庫。
-
執行更新
在主畫面開啟「檢查更新」→「更新 Geo 檔案」。查看介面訊息或記錄,確認下載作業已完成;只看到選單項目被點選,不能證明檔案已成功寫入。
-
確認檔案
找到目前執行中的用戶端資料目錄,檢查
geoip.dat與geosite.dat的修改時間、檔案大小和更新記錄。如果有多個同名檔案,還要確認核心實際使用的是哪一份。 -
重新啟動並驗證
重新啟動目前使用的核心;若介面沒有獨立的重新啟動選項,請完整關閉用戶端後再啟動。確認記錄中沒有 Geo 檔案載入錯誤,再重新建立測試連線,觀察規則是否導向預期的出口。
若更新失敗,請依錯誤類型處理:下載逾時時檢查連線至更新來源的網路;憑證錯誤時先檢查系統日期與時間;寫入失敗時檢查目錄權限,以及檔案是否遭其他程序占用。訂閱群組中的「透過代理更新」是訂閱更新選項,不能據此推斷它也會控制 Geo 檔案下載。
存放位置:以目前執行個體與核心記錄為準
不要只憑網路上的固定路徑覆蓋檔案。可攜式目錄、安裝目錄、使用者資料目錄,以及不同發行套件的資源配置都可能不同。尤其是電腦中保留兩份 v2rayN 時,更新舊目錄中的檔案,不會自動影響目前執行個體讀取的資料。
定位方式:先找到執行個體,再確認資源目錄
Windows
- 在工作管理員中對目前的程序選擇「開啟檔案位置」,確認實際執行的是哪一份程式。
- 在與目前執行個體相關的目錄中搜尋兩個 DAT 檔案,並查看更新後的修改時間。
- 搭配用戶端記錄、產生的設定與核心啟動資訊,判斷實際使用的資源路徑。
macOS 與 Linux
- 區分應用程式的安裝位置與目前使用者的資料目錄,不要假設資源都放在程式旁邊。
- 檢查啟動環境與核心記錄,確認是否明確指定資源目錄。
- 手動替換前先停止核心、保留原始檔案,並確認目標目錄具有寫入權限。
有同名檔案不代表核心正在讀取該檔案;請交叉確認目前執行個體、啟動環境與載入記錄。
例如,在 Windows 的 PowerShell 中,可以先進入已確認的用戶端目錄,再執行下方的唯讀搜尋。結果只會列出該目錄樹中的檔案,不會自動覆蓋任何內容;若資源位於使用者資料目錄,還需要到相應目錄繼續搜尋。
Get-ChildItem -Path . -Recurse -File -Filter '*.dat' |
Where-Object { $_.Name -in @('geoip.dat', 'geosite.dat') } |
Select-Object FullName, Length, LastWriteTime
手動管理核心時,也要留意資源目錄環境變數,例如 V2Ray 的 V2RAY_LOCATION_ASSET 或 Xray 的 XRAY_LOCATION_ASSET。由用戶端管理核心時,不要任意新增這些變數,否則核心可能會略過剛更新的目錄。只有確認啟動方式與實際讀取路徑後,手動替換才有意義。
規則設定:封鎖廣告、網域直連與 IP 直連
以下是 V2Ray/Xray 設定中的 routing 片段,並非可直接執行的完整用戶端設定。範例展示三條規則:將廣告類別導向封鎖出口,並將中國大陸網域與 IP 導向直連出口。使用前務必確認實際的出口標籤;此處的 block 與 direct 只是範例標籤,不會因為寫入規則就自動建立出口。
{
"routing": {
"domainStrategy": "AsIs",
"rules": [
{
"type": "field",
"domain": [
"geosite:category-ads"
],
"outboundTag": "block"
},
{
"type": "field",
"domain": [
"geosite:cn"
],
"outboundTag": "direct"
},
{
"type": "field",
"ip": [
"geoip:cn"
],
"outboundTag": "direct"
}
]
}
}
- 將廣告規則放在前面:規則會依序比對,由第一條符合的規則決定出口。如果範圍較廣的直連規則排在前面,後面的廣告規則可能就沒有機會處理該連線。
- 網域與 IP 分開設定:在同一條
field規則中同時填入domain和ip,並不表示「任一條件符合即可」。若要讓兩類條件任一符合時都直連,請分別建立規則。 - 封鎖規則需要對應的出口:
block應指向已定義的封鎖出口,例如使用blackhole協定的出口;直連標籤則應指向freedom出口。實際名稱請以產生的設定為準。 - 補上預設出口:此片段未定義未符合規則的流量要如何處理。V2Ray/Xray 通常會以第一個出口處理未符合規則的流量,請檢查用戶端產生設定中的出口順序或備援規則。
在 v2rayN 的路由編輯介面中輸入時,網域條件使用 geosite:category-ads,IP 條件使用 geoip:cn,不要把整個 JSON 物件貼到單一條件欄位中。儲存後還要確認這套方案已設為目前啟用的路由。完整欄位說明請參閱本站的完整設定指南。
網域策略:為什麼 IP 規則沒有符合
範例選用 AsIs,表示路由階段不會為了比對 IP 規則而額外解析網域目標。若連線原本攜帶的是 IP,仍可符合 geoip:cn;若連線攜帶網域但未符合網域規則,就不能期待它一定會符合中國大陸 IP 直連規則。
AsIs:先依網域分類
建議適合作為本教學的排查起點。網域類別與 IP 條件的適用範圍明確,可避免在同一次測試中引入額外的 DNS 解析;但這不代表所有網路環境都應固定使用此策略。
適用情況:先確認 GeoSite 規則與排序是否正確。
IPIfNonMatch:解析後再比對
網域未符合現有規則時,嘗試解析網域並繼續以 IP 條件比對。採用前請檢查核心的 DNS 設定、解析結果與預設出口,避免將解析差異誤認為資料庫過期。
適用情況:明確需要透過解析後的 IP,為網域流量補充分流規則。
如果應用程式直接連線到 IP,GeoSite 可能無法取得網域。嗅探可以從部分協定流量中擷取網域,但並非所有連線都能還原網域;應用程式使用的傳輸方式與加密機制也會影響結果。單獨更新 geosite.dat,無法解決「路由時根本沒有網域可供比對」的問題。
更新後仍有異常:依據記錄縮小排查範圍
驗證時不要只看網頁能否開啟。先記下待測網域、預期出口與存取時間,再查看同一時段的核心記錄。記錄的詳細程度取決於目前的記錄層級;必要時可暫時提高詳細程度,排查完成後再恢復。避免公開包含訂閱網址或認證資訊的完整記錄。
顯示找不到 category-ads,但檔案不是已經更新了嗎?
先確認資料來源是否提供此類別。如果來源只提供其他廣告集合,請依實際標籤修改規則,不要一再下載相同檔案。修正後重新啟動核心,確認類別載入錯誤已消失,再測試連線。
顯示無法開啟 geoip.dat,應該放在哪裡?
先查看記錄中的失敗路徑,確認目錄存在、檔名正確,且程序具有讀取權限。接著檢查啟動環境是否指定了其他資源目錄。不要把檔案複製到多個目錄碰運氣。
廣告規則已儲存,為什麼還是會看到廣告?
確認目前啟用的方案、規則順序與封鎖出口標籤,再檢查廣告請求使用的網域是否包含在類別中。與正文共用網域的廣告很難只靠網域清單區分,頁面快取或既有連線也可能保留舊結果。
中國大陸網站走代理,是 GeoIP 過期了嗎?
先確認連線目標是網域還是 IP。使用 AsIs 時,網域未符合規則不代表一定會進一步比對 IP。也要檢查是否有更前面的代理規則、目標是否使用境外 CDN,以及 DNS 解析結果是否符合預期。
同一套規則在另一個核心無法使用?
先確認目標核心支援的規則格式。本文的 DAT 檔案以及 geosite:、geoip: 引用方式適用於 V2Ray/Xray,不能只改副檔名就轉成其他核心的規則集。請改用目標核心相應的資料格式與設定欄位。
後續維護:分開更新資料庫與規則
更新資料庫會改變類別所包含的項目,更新路由則會改變條件、順序與出口,兩者都會影響分流結果。一次只調整一個變數,較容易判斷問題是來自資料變動、規則覆蓋,還是 DNS 解析差異。每次更新訂閱後,沒有必要手動替換所有檔案。
- 變更前先備份:保存目前可用的 Geo 檔案與路由設定,並記錄資料來源和更新時間,以便發生異常時還原。
- 更新後檢查啟動狀態:先確認核心是否正常載入,再測試直連、代理與封鎖三種預期結果,不要只測試單一網頁。
- 重新建立連線:既有連線可能繼續沿用建立時的路徑。重新啟動核心並重新發出請求,才能更清楚地觀察新設定的效果。
- 區分桌面版與 Android 版:v2rayNG 使用 Xray 核心,v2flyNG 使用 V2Fly 核心,但兩款用戶端的資料管理入口與資源目錄不同,不能直接套用桌面版的檔案路徑。
若遇到無法啟動或網路中斷,請優先還原上一份可用設定,再逐項排查。其他常見連線問題可參閱疑難排解。Geo 資料只是路由條件之一;流量入口、規則順序、DNS 策略與出口標籤都會共同決定最終的連線路徑。