本文適合已匯入節點、準備調整路由分流的使用者。先分清 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,依網域分流與依解析結果分流可能會得到不同結果。
更新前檢查:檔案來源、核心與生效位置
更新失敗常見原因有三種:用戶端更新了一個資料夾,核心卻從另一個資料夾讀取;新的資料來源未包含舊規則引用的標籤;下載的內容不是有效資料檔。開始前請先備份目前可用的兩個檔案,以及路由規則或用戶端設定匯出檔。
- 先確認核心。在用戶端的節點設定與啟動記錄中確認核心名稱;不要只看桌面捷徑的名稱。
- 接著確認來源。優先沿用目前用戶端預設的資料來源。若使用自訂來源,先確認是否提供
cn、private等現有規則所需的集合。 - 確認實際讀取位置。以用戶端管理的資源資料夾及啟動錯誤訊息中的路徑為準。可攜式資料夾、獨立資料目錄與多個安裝副本可能彼此不相通。
- 保留還原方式。同時記錄原始來源、更新時間與路由設定。只備份規則文字,無法解決新檔案缺少標籤的問題。
判斷方式:先沿用相同來源,再考慮更換規則庫
如果目前分流正常,請先更新相同來源的資料。只有確認現有資料庫缺少所需分類時,才更換來源並逐一核對標籤,避免把「更新檔案」和「遷移規則系統」混為一次操作。
在用戶端更新規則檔:下載後重新載入核心
用戶端選單名稱會因版本與介面語言而異。桌面版 v2rayN 常見入口位於「檢查更新」選單下的 Geo 檔案更新項目;有些版本會將 GeoIP、GeoSite 分開列出。請依功能入口操作;若找不到對應項目,先查看目前版本的選單與記錄,不要把「更新訂閱」當成更新規則庫。
- 先確認連線可用。確認節點可以正常使用。若目前網路無法連上規則來源,可在用戶端支援的更新代理選項中啟用代理下載;系統代理是否生效,不能取代更新記錄的判斷。
- 執行 Geo 檔案更新。在 v2rayN 中展開「檢查更新」,選擇 Geo 檔案相關更新項目;若分成兩項,請分別更新 GeoIP 與 GeoSite。確認各項都顯示完成後,再修改路由。
- 檢查錯誤訊息。逾時通常表示連線有問題;解析、解壓縮或寫入失敗,則應檢查下載內容、資料夾權限與檔案是否被占用。檔案修改時間變更只能作為輔助判斷依據。
- 重新載入。使用用戶端提供的重新啟動服務或重新載入核心功能;若沒有獨立按鈕,請停止後重新啟動連線。接著檢查啟動記錄,確認沒有資料檔或分類載入錯誤。
- 驗證一次分流結果。保留更新前相同的路由模式與測試目標,再比較實際使用的出站。此時不要同時更換節點、DNS 與整套路由範本。
在 Android 上,v2rayNG 的 Geo 資源更新入口通常位於側邊選單或資源相關頁面;進入後依頁面提供的更新操作執行。v2flyNG 的選單配置與可用更新項目應以安裝版本為準,不要直接套用另一款用戶端的選單名稱。行動裝置完成更新後,同樣需要停止並重新啟動連線。
路由規則寫法:網域優先、IP 補充、最後設兜底
路由會依規則排列順序進行比對,符合後便使用對應的出站。以下示範「中國大陸網域直連、私人與中國大陸 IP 直連、其他 TCP/UDP 流量走代理」的基本結構。此處的 direct 和 proxy 都是出站標籤,必須與現有設定中的 outbounds[].tag 完全一致。
這是設定片段,不是完整的用戶端設定。適用於直接編輯 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 與本機代理設定。
不必為了追求最新資料而每天更換來源。一般使用者每週檢查一次即可;若分類有明確變更或記錄出現錯誤,再提前處理。更新規則庫不會提高節點本身的頻寬,也不會改變伺服器是否支援特定協定;它只會更新路由判斷所依據的資料。
驗證是否生效:固定三個目標,保留還原方式
驗證時選擇一個預期直連的網域、一個預期走代理的網域,再選一個有權限存取的區域網路服務。目的不是測速,而是確認三類連線都使用預期的出站。區域網路服務應使用實際存在的位址,不要反覆向隨機位址傳送測試請求。
- 確認使用相同入口。例如應用程式使用
127.0.0.1:10808時,先確認該連接埠確實是目前用戶端的監聽連接埠,並核對它接受的代理協定。10808 只是範例,不能取代實際設定。 - 確認設定已載入。儲存路由並重新載入核心,檢查是否出現檔案讀取、標籤缺失或設定解析錯誤。若啟動失敗,不要根據瀏覽器的狀況推測路由結果。
- 逐一建立新連線。記錄目標、時間,以及記錄中顯示的出站標籤。若用戶端只顯示
direct/proxy,這些資訊可以確認使用的出口,但未必能指出實際符合哪一條規則。 - 縮小問題範圍。必要時暫時只保留最精簡的規則集,或提高記錄詳細程度進行一次短時間重現。排查完成後請恢復常用的記錄等級;分享記錄前,移除節點位址、使用者識別碼與瀏覽記錄。
- 保留可用版本。確認三個目標都符合預期後,再清除過期備份。遇到問題時,先還原原始檔案與規則,再分別重新執行更新與修改。
最後請保存三類資訊:規則檔來源、路由排列順序,以及實際使用的核心。之後即使更換裝置或重新安裝用戶端,也能先還原一致的分流邏輯,再決定是否調整分類與 DNS。更多初始設定請參閱設定教學,欄位說明可對照協定手冊。