mihomo 核心
Proxy core · mihomo負責代理連線、規則比對、DNS 解析與 TUN 流量處理的程式核心,源自 Clash Meta 專案。圖形用戶端可以呼叫 mihomo,但介面名稱與核心名稱不一定相同。遇到欄位不支援或設定載入失敗時,應確認實際使用的核心及版本,而不只是用戶端版本。
核心與用戶端
從匯入訂閱到接管網路,依概念查找設定。每張卡片說明術語、常見誤解,以及需要一併檢查的設定項目。
介面、背景程序與控制介面各有不同職責。排查問題時,先確認目前執行的是哪個核心,再確認修改儲存在哪裡。
負責代理連線、規則比對、DNS 解析與 TUN 流量處理的程式核心,源自 Clash Meta 專案。圖形用戶端可以呼叫 mihomo,但介面名稱與核心名稱不一定相同。遇到欄位不支援或設定載入失敗時,應確認實際使用的核心及版本,而不只是用戶端版本。
核心與用戶端
提供訂閱管理、策略選擇、記錄檢視與系統設定介面,並呼叫核心運作的應用程式,例如 Clash Verge Rev。不同用戶端對覆寫、服務模式及設定儲存的處理方式可能不同。同一份訂閱改用另一個用戶端後,應重新檢查系統代理、TUN 與本機修改,不能只看匯入成功的提示。
核心與用戶端
供控制面板或管理程式讀取連線、切換策略及重新載入設定的介面,監聽位址由 external-controller 指定。它不是瀏覽器使用的代理連接埠,也不應填入代理設定取代 mixed-port。啟用時應設定 secret 存取密鑰並限制監聽範圍,避免將管理權限開放給不受信任的網路。
核心與用戶端
連線至外部控制介面的管理介面,通常用來檢視規則、使用中的連線與策略組。external-ui 可用來指定面板靜態檔案目錄,但面板本身不負責代理轉送。關閉瀏覽器中的面板頁面不一定會停止核心;面板無法開啟,也不一定表示代理連線已中斷。
核心與用戶端
節點是連線參數,協定則是通訊規範。先確認參數與伺服器端一致,再判讀測試結果。
一組用來建立代理連線的伺服器參數,通常包含伺服器位址、連接埠、協定與驗證資訊。在設定檔中,節點可以直接寫入 proxies,也可以由代理集合提供。節點不等於完整設定,顯示名稱也無法證明實際出口位置;排查連線時,還需要參考記錄與目標網站的連線結果。
代理協定
用戶端與代理伺服器之間交換資料時遵循的通訊規範,節點中的 type 欄位用來宣告類型。協定、底層傳輸方式與 TLS 設定屬於不同層次,不能只根據其中一個欄位補齊其他參數。核心支援某種協定,也不代表目前的訂閱提供了該協定所需的完整資訊。
代理協定
一種加密代理協定,在 mihomo 節點設定中使用 type: ss。伺服器位址、連接埠、加密方式 cipher 與密碼都必須和伺服器端一致,不能根據節點名稱推斷。若伺服器端要求額外外掛程式或特定參數,還需確認核心是否相容;設定能通過語法解析,不代表遠端服務一定連得上。
代理協定
透過指定測試位址檢查連線並測量請求往返時間,結果會受測試位址、連線重用與網路環境影響。測試成功只代表這次請求完成,不能證明所有網站或協定都可用。延遲也不等於下載速度;發生逾時時,應先區分節點無法連線、DNS 解析失敗,或測試位址本身無法存取。
代理協定
規則決定比對範圍,策略決定如何處理。應一併查看記錄中的命中規則與最終採用的策略。
依網域名稱、IP 或其他條件,為連線選擇處理策略的方式,使用 mode: rule 啟用規則模式。規則通常由上往下比對,符合後交由指定策略處理,末尾常用 MATCH 處理其餘連線。若規則引用名為 PROXY 的策略,設定中必須先定義該名稱,不能只複製規則列就直接使用。
規則與分流
在 proxy-groups 中定義、供規則引用的代理選擇集合。select 用於手動選擇,url-test 依測試結果選擇,fallback 則依可用性與順序切換,三者用途不同。組名、節點名稱與規則中的引用都必須一致;自動測試選出的節點,也不一定最適合目前使用的網站。
規則與分流
將大量比對條件放入獨立檔案,再由 rule-providers 管理的資料集合。主規則透過 RULE-SET 引用集合,並在該規則中指定處理策略。集合的 behavior 必須符合檔案內容格式;更新成功只代表檔案已成功取得,還要檢查引用位置及前方是否已有規則先行命中。
規則與分流
依 IP 位址所屬地區進行比對的資料與機制,例如 GEOIP,CN,DIRECT 表示符合對應位址時直接連線。使用 MMDB 資料模式時,常見的資料庫檔案為 Country.mmdb;資料庫遺失或更新失敗可能影響規則運作。IP 歸屬資訊不一定反映伺服器的實際位置,也無法取代特定網域規則。
規則與分流
網域名稱如何解析,以及連線如何保留網域資訊,是兩個相關但不同的問題。修改前先確認實際查詢路徑。
將網域名稱解析為 IP 位址等記錄的系統;mihomo 透過 dns 設定控制相關行為。作業系統、瀏覽器與核心可能各自有解析設定,應用程式啟用加密 DNS 後也可能使用獨立路徑。遇到網頁無法開啟時,應區分解析失敗與連線失敗,不能只替換 nameserver 就認定問題已解決。
DNS 與網路堆疊
先為網域名稱回傳合成 IP,待連線進入核心後,再還原與該網域相關的 DNS 工作模式,使用 enhanced-mode: fake-ip 啟用。這有助於保留網域比對資訊;合成位址並非網站的真實伺服器位址。部分區域網路服務或特殊應用程式需要加入 fake-ip-filter;調整後也要留意應用程式與系統中的舊 DNS 快取。
DNS 與網路堆疊
DNS 查詢未依預期的解析路徑進行,而是送到其他解析器,例如原本預期透過代理查詢,實際上卻仍送往本機網路的解析器。判斷時應一併檢查系統 DNS、瀏覽器加密 DNS、TUN 接管方式與核心的上游請求路徑。測試頁面顯示某地區的解析器,並不足以單獨證明發生洩漏;應先確認預期路徑,再比對實際請求。
DNS 與網路堆疊
從可辨識的連線交握資訊中補充網域線索的功能,由 sniffer 設定控制,可協助處理只帶有目標 IP 的連線。這不等於解密 HTTPS 內容,也無法保證還原所有網域;部分交握資訊可能無法取得。若發生誤判或特定應用程式異常,應檢查嗅探範圍與排除項目,而不是強制覆寫所有連線。
DNS 與網路堆疊
完整設定、節點來源與本機修改應分開理解。訂閱更新後遺失的設定,通常需要儲存在覆寫層。
由遠端連結提供、可更新的設定或節點資料,常見內容包括 Clash YAML 設定、編碼後的節點清單與協定連結集合。連結能開啟,不代表格式適用於目前的匯入方式;回傳 HTML 登入頁也不是有效設定。訂閱網址中的驗證參數應視同密碼,不要貼到截圖、客服單或不受信任的轉換服務中公開。
訂閱與設定檔
mihomo 常用的結構化文字格式,以縮排表示層級,並以連字號表示清單項目。縮排應使用空格,不要混用定位字元;包含特殊字元的字串可依 YAML 語法加上引號。錯誤訊息 yaml: unmarshal errors 可能與欄位類型或結構不符有關;檔案能成功解析,也不代表節點、策略組與規則引用都正確。
訂閱與設定檔
在 proxy-providers 中定義的節點來源,可來自遠端或本機檔案,通常透過策略組的 use 欄位引用。它負責提供節點,不等於包含 DNS、規則與監聽連接埠的完整設定。若將代理集合連結直接當成完整訂閱匯入,可能缺少執行所需的結構;應先檢查檔案內容與用戶端支援的匯入方式。
訂閱與設定檔
在訂閱原始內容之外儲存修改,並由用戶端產生執行設定時套用的機制,適合保留自訂規則、DNS 或監聽設定。直接修改下載的訂閱檔案,內容可能在下次更新時被取代。不同用戶端處理陣列取代、規則新增及指令碼執行順序的方式可能不同;儲存後應檢查最終生效的設定,不能只看編輯器中的片段。
訂閱與設定檔
代理監聽、系統設定與路由接管不是同一個開關。啟用後應以實際使用的應用程式驗證;關閉後則檢查系統設定是否已還原。
由作業系統提供給支援此設定的應用程式使用的代理入口,通常指向用戶端在本機監聽的位址與連接埠。部分程式使用自己的代理設定或直接連線,因此開啟系統代理不代表整台裝置的流量都已交由核心處理。結束用戶端後,若瀏覽器仍顯示代理連線失敗,應檢查系統代理設定是否殘留,以及對應的監聽程序是否仍在執行。
系統與平台
透過虛擬網路裝置與路由設定,將符合接管條件的 IP 流量交由核心處理,常用於不遵循系統代理設定的應用程式。啟用通常需要管理員權限、系統服務或平台授權,但開關顯示為啟用,不代表所有路由都已正確建立。遇到無法連線時,應檢查 DNS 接管、路由排除項目與其他 VPN 是否衝突,再決定是否調整網路堆疊。
系統與平台
允許其他裝置透過目前裝置的代理監聽連接埠建立連線,通常涉及 allow-lan、監聽位址與系統防火牆。其他裝置應填入目前裝置的區域網路位址,而非代表裝置本身的 127.0.0.1。共享代理入口不會自動改變整個網路的預設閘道;使用時也應限制存取範圍,避免將代理連接埠開放至公開網路。
系統與平台
服務模式通常用來以系統服務等方式執行背景核心;開機啟動則是在系統啟動或使用者登入時執行程式,兩者並不相同。關閉視窗可能只是縮到系統匣,也可能讓核心繼續執行,實際行為取決於用戶端。設定後應分別確認介面是否啟動、核心是否執行,以及系統代理或 TUN 是否依預期恢復。
系統與平台