GeoIP 與 GeoSite 資料庫更新教學:GEOSITE 規則失效時的排查方法
瞭解 GeoIP、GeoSite 資料檔的用途與來源,學習在 FlClash 手動或自動更新資料庫、設定 geox-url 下載網址,並排查分類缺漏造成的規則失效。
1. 先釐清 GeoSite、GeoIP 與訂閱更新的差異
FlClash 使用 mihomo 核心處理規則。訂閱提供設定檔、出站與策略組;GeoSite 和 GeoIP 則提供規則引用的分類資料。這三者更新的是不同內容:訂閱更新成功,不代表本機資料庫也已更新;資料庫下載成功,也不代表目前連線一定會符合對應規則。
| 項目 | 比對內容 | 常見檔案或設定位置 |
|---|---|---|
| GeoSite | 依網域集合分類,例如 cn | GeoSite.dat,來源由 geox-url.geosite 指定 |
| GeoIP DAT | 依 IP 位址所屬分類比對 | GeoIP.dat,來源由 geox-url.geoip 指定 |
| GeoIP MMDB | 傳統 IP 地理位置資料庫比對 | Country.mmdb,來源由 geox-url.mmdb 指定 |
| 訂閱設定檔 | 出站、策略組、規則及其他設定項目 | FlClash 的設定檔清單與訂閱更新入口 |
GEOSITE,cn,DIRECT 依網域集合判斷,不是查詢伺服器是否位於中國大陸。GEOIP,CN,DIRECT 依目標 IP 判斷,也不代表能辨識網站所屬公司。同一項服務使用不同網域或 CDN 位址時,這兩種條件可能會得到不同結果。
2. GEOSITE 規則失效:先確認設定檔是否載入成功
先開啟 FlClash 的設定檔清單,確認目前使用的是目標設定檔,再查看執行記錄。不同版本的入口名稱可能是「設定檔」、「記錄」或相應圖示;本文不限定特定版本的選單層級。記下記錄中的原始錯誤,比一再點選更新更有幫助。
依照遇到的情況選擇下一步
- 設定檔無法啟用:先處理 YAML 縮排錯誤、策略組不存在、資料庫缺漏或分類不存在等載入錯誤。此時還沒進入正常的分流驗證階段。
- 設定檔已正常啟用,但網站走錯出口:先確認目前使用規則模式,再查看該連線實際命中的規則。全域模式與直連模式不會依預期執行整套 rules 分流。
- 只有部分網域走錯:確認資料庫是否收錄該網域,以及是否有更前面的規則先命中;不必馬上重新安裝用戶端。
- 更新時出現逾時或憑證錯誤:檢查下載網域的網路連線、系統日期與時間,以及更新要求是否依賴尚未就緒的代理伺服器。
建議記下三項資訊:目前的設定檔名稱、出站模式,以及完整的失敗記錄。記錄若包含訂閱網址、存取權杖或節點憑證,分享前請先遮蔽這些內容。只看「更新失敗」四個字,很難判斷是遠端回傳錯誤,還是本機解析失敗。
3. 在 FlClash 手動更新資料庫
首次載入失敗、資料庫長期未更新,或剛更換資料來源時,適合手動更新。先確認目前版本的用戶端是否支援更新資源:到設定頁面尋找 Geo 資料、地理資料或資源更新相關項目,並分清楚「Geo 資料更新」與「訂閱更新」。部分版本會將多種資源整合為單一更新操作,也有部分版本沒有獨立的更新按鈕。
- 備份設定檔。儲存目前可用的設定檔與既有覆寫內容。不要只保留訂閱網址,因為本機新增的規則可能不在遠端訂閱內。
- 檢查資源網址。若已填入自訂 Geo 資料網址,確認回傳的是對應的二進位資料檔,而不是下載說明頁或登入頁。
- 更新資源。若介面提供 Geo 資料更新按鈕,執行一次並等候完成。不要連續啟動多次更新,以免難以判斷哪次操作對應哪一筆記錄。
- 重新載入設定檔。更新完成後重新載入目前使用的設定檔;必要時停止並重新啟動核心,讓執行中的規則重新讀取資料庫。
- 建立新連線進行驗證。關閉測試頁面原有的連線後重新造訪,查看連線記錄中的規則與最終出站,不要只看舊連線顯示的結果。
下載成功後若問題仍在,先比較更新前後的記錄。若錯誤從「無法下載」變成「分類不存在」,代表網路連線可能已恢復;接下來應檢查資料來源包含哪些分類,而不是繼續修改代理連接埠。
4. 設定 geox-url 與每 24 小時自動更新
以下是 mihomo 的 Geo 資料設定片段,使用 MetaCubeX 公開的資料發布網址。這不是完整的訂閱,不包含任何代理出站。合併前請檢查原設定中是否已有相同名稱的鍵;這些選項位於 YAML 頂層,不能縮排到 dns:、rules: 或任何策略組底下。
geodata-mode: true
geo-auto-update: true
geo-update-interval: 24
geox-url:
geoip: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip.dat"
geosite: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat"
mmdb: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/country.mmdb"
geo-auto-update: true:啟用 mihomo 的 Geo 資料自動更新機制。geo-update-interval: 24:更新間隔的單位是小時,24 代表一天,不是 24 分鐘。geox-url.geoip:為 DAT 模式指定 GeoIP 資料來源。geox-url.geosite:為 GEOSITE 規則指定網域分類資料來源。geox-url.mmdb:為 MMDB 模式指定對應的資料來源;目前範例啟用 DAT 模式,不代表每條 GEOIP 規則都會同時讀取兩種檔案。
FlClash 可能會依照介面設定產生最終執行設定。因此,編輯訂閱原文後,也要確認這些欄位確實套用到執行設定中。優先使用目前版本提供的覆寫或設定合併功能,避免下次更新訂閱時修改內容遭到覆蓋。若介面沒有檢視執行設定的功能,可透過啟動記錄與更新記錄確認選項是否生效。
自動更新需要用戶端與核心持續執行,也需要能連上下載來源。電腦關機或 Android 背景程序遭系統終止時,不能把它當成系統層級的排程工作。重新啟動後應查看更新記錄,而不是只因設定中寫了 24,就認定資料一定是當天的版本。
5. 分類缺漏:檔案下載成功,不代表規則可用
不同維護者的資料集,分類名稱與收錄範圍可能不同。若設定檔引用了某個資料來源專有的分類,改用另一份資料庫後,就可能出現找不到分類的錯誤。更新至最新檔案只能取得該資料來源目前提供的資料,無法自動補齊其他來源的所有分類。
確認資料來源、分類與規則是否相符
- 從記錄中複製報錯的分類名稱,保留
@等屬性篩選部分,不要只記下前半段。 - 查看目前資料來源專案的分類清單或說明,確認該分類確實存在;不要直接將網頁上的顯示名稱當成規則識別碼。
- 核對訂閱原本指定的資料來源。若訂閱依賴特定集合,應使用相容的資料,而非任意換成容量較小的精簡版。
- 若該分類已由上游移除或更名,請修改對應規則;若只是特定網域未收錄,則可新增範圍明確的網域規則。
臨時新增規則時,優先使用完整網域。例如以下規則只會影響 www.example.com,可用於示範精確比對;實際使用時,請填入已確認需要直連的業務網域,並將規則放在可能先命中的寬泛規則之前。
rules:
- DOMAIN,www.example.com,DIRECT
- GEOSITE,cn,DIRECT
- GEOIP,CN,DIRECT,no-resolve
- MATCH,境外代理
這裡的 境外代理 必須是目前設定檔中已存在的策略組名稱;若你的策略組名稱不同,請改成實際名稱。不要直接用整段範例取代訂閱中的 rules,否則會遺失原有的應用程式分流與例外規則。
6. 資料庫已更新,規則仍走錯時的檢查順序
先確認規則命中順序,再檢查 DNS 與目標位址
mihomo 的 rules 會依序比對,由最先命中的規則決定後續處理方式。若清單上方已有涵蓋範圍更大的網域規則,後面的 GEOSITE 就不會有比對機會。MATCH 是兜底規則,通常放在最後;若提前放置,就會遮住後面的分類規則。
上例中的 no-resolve 表示這條 GEOIP 規則不會為了比對而主動觸發網域解析。若此時連線只有網域名稱、沒有可用的目標 IP,就可能略過這項 IP 條件並繼續比對後續規則。這是規則選項的運作方式,不代表資料庫更新失敗。排查時應一併參考連線記錄中的網域、目標 IP 與命中規則。
| 連線記錄中的現象 | 優先檢查項目 | 處理方式 |
|---|---|---|
| 命中前面的 DOMAIN-SUFFIX | 規則順序與網域範圍 | 將必要的精確例外規則提前,避免擴大直連範圍 |
| 命中 MATCH | 是否收錄該網域、目標 IP 是否可用 | 檢查分類內容與 no-resolve 的影響 |
| 看不到該應用程式的連線 | 應用程式是否經過用戶端 | 檢查系統代理、應用程式代理或 TUN 接管範圍 |
| 規則正確,但最終出口不符 | 策略組目前的選擇 | 確認群組中是否選取了 DIRECT 或其他出站 |
TUN 模式處理的是流量如何進入核心,不會替 GeoSite 增加分類。系統代理也只對遵循該設定的應用程式生效。若應用程式繞過系統代理,一再更新資料庫也不會改變它的出口。應先在連線頁面確認要求確實由 FlClash 接收,再檢查規則命中情況。
DNS 快取與瀏覽器連線重用也會影響重新測試的結果。修改規則或載入新資料後,請重新建立連線;若也更改了 DNS 或 Fake-IP 設定,請使用目前版本支援的方式清除相關快取。不要只為了測試一次分類更新,就隨意清除所有應用程式資料。
7. 更新失敗、復原與日常維護
依錯誤類型處理下載異常
- HTTP 404:檢查檔名、發布路徑與大小寫。發布頁面的網址不是資料檔網址。
- 逾時或連線中斷:檢查網路是否能連上下載網域及其重新導向目標。瀏覽器能開啟專案首頁,不代表資料檔可以完整下載。
- 憑證驗證錯誤:先同步系統時間,再檢查網路認證頁面或本機 HTTPS 檢查環境;不要直接關閉安全驗證。
- 下載後解析失敗:確認檔案格式是否相符、內容是否被替換成 HTML、下載是否中斷,以及資料檔是否與核心相容。
若遇到「核心必須先下載資料才能啟動,但下載又依賴該核心代理」的循環,請先透過可用網路取得相容資料,或改用能直接連線下載的資料來源。不要把無法連線的網址反覆填入多個欄位,也不要把公開訂閱網址交給不明的線上轉換服務處理。
更新後若設定檔無法載入,請還原先前可用的資料檔或資料來源,並復原相應的設定選項。操作前先停止核心,還原後重新載入,並保留失敗記錄以便比對。若曾更換資料來源,也要重新確認分類名稱;不能只還原檔案,卻保留另一套分類規則。
單次更新的驗收清單
- 設定檔可正常啟用,記錄中沒有 Geo 資料下載或分類載入錯誤。
- 自動更新選項確實已套用到執行設定,更新間隔以小時為單位。
- 至少測試一個應直連的網域與一個應走代理的網域,並查看各自命中的規則。
- 使用新連線重新測試,並確認策略組的最終出站符合預期。
- 儲存可用的設定檔與資料來源,方便下次故障時復原及比較。
維護的重點是讓規則、資料來源與執行設定保持一致。先確認問題發生在下載、載入或比對階段,再採取相應處理,通常比同時更換 DNS、TUN 與所有規則更容易得到可驗證的結果。