mihomo
Formerly Clash Metamihomo 是由 Clash Meta 專案延續而來的代理核心,負責連線處理、規則比對與 DNS 等核心工作。圖形化用戶端可以呼叫它,但用戶端名稱不一定和核心名稱相同。判斷某項設定能否使用時,應確認目前執行的核心及其支援範圍,不能只根據應用程式名稱推斷。
CLASH / 設定檔閱讀參考
依六大概念分類查閱核心、協定、分流與設定欄位。每張卡片先說明術語,再釐清容易混淆的適用範圍;也可直接分享術語連結。
先分清楚負責處理連線的程式,以及提供操作介面的應用程式。
mihomo 是由 Clash Meta 專案延續而來的代理核心,負責連線處理、規則比對與 DNS 等核心工作。圖形化用戶端可以呼叫它,但用戶端名稱不一定和核心名稱相同。判斷某項設定能否使用時,應確認目前執行的核心及其支援範圍,不能只根據應用程式名稱推斷。
代理核心是實際接收連線、執行分流規則並建立對外連線的程式。圖形化用戶端可以在安裝套件中附帶核心,也可以在設定中管理核心更新。排查設定錯誤時,核心記錄通常比介面上的連線開關更有參考價值,因為開關已開啟不代表每條連線都成功建立。
圖形化用戶端提供匯入訂閱、選擇策略群組、查看連線紀錄及設定系統代理等操作介面,再將有效設定交由核心執行。即使使用相同核心,不同用戶端的選單名稱與設定檔儲存方式仍可能不同。教學中的按鈕位置僅供參考,實際操作時應找到相應功能,不必要求介面文字完全一致。
設定相容性是指目前的用戶端與核心能否辨識設定中的欄位、協定及行為選項。YAML 能成功解析,不代表其中每項功能都受到支援。匯入時若出現未知欄位、找不到策略或不支援協定等錯誤,應先確認設定檔的目標核心,再檢查欄位拼寫、引用名稱與功能支援情況。
協定規範用戶端與伺服器之間的通訊方式,不等同於節點名稱或傳輸方式。
Shadowsocks 是一種加密代理協定,設定通常包含伺服器位址、連接埠、加密方法和密碼。用戶端與伺服器必須使用相容的加密方法,不能只因密碼相同就認定設定正確。部分節點還需要額外的外掛程式參數,手動填寫時應依照服務提供者提供的完整參數設定。
VMess 是一種代理協定,通常以 UUID 識別使用者,並可搭配不同傳輸方式使用。伺服器位址、連接埠、傳輸層參數與 TLS 設定都必須與伺服器端相符。WebSocket 路徑與請求標頭屬於傳輸設定,不是節點備註;漏填這些參數,可能導致位址連得上,卻始終無法建立代理連線。
VLESS 是一種輕量代理協定,本身不負責傳輸加密,通常搭配 TLS 或 REALITY 等機制部署。它與 VMess 是不同協定,不能只修改類型名稱就互相轉換。匯入後若提示不支援參數,應同時核對核心能力與伺服器端要求,尤其留意傳輸方式、流量控制及相關交握參數。
Trojan 是一種通常透過 TLS 建立加密連線的代理協定,使用密碼進行驗證。能否成功連線,還取決於伺服器名稱、憑證與傳輸參數是否相符。遇到憑證錯誤時,應檢查裝置時間、填寫的網域名稱與憑證有效性,不宜把停用憑證驗證當成日常解法。
rule、global、direct 決定對外連線的選擇;TUN 則決定流量如何進入核心。
規則模式對應 mode: rule,核心會依照設定中的規則順序,為收到的連線選擇對外策略。符合第一條規則後,就會使用該規則指定的策略,因此同一時間可以同時有直連與代理連線。切換至規則模式後,仍應檢查策略群組選擇的出口;模式本身不會取代節點選擇。
全域模式對應 mode: global,會將進入核心的連線一律交由 GLOBAL 策略處理。它只會改變核心內部的對外連線選擇,不會自動讓所有應用程式的流量都進入核心。若某個應用程式繞過系統代理,只切換全域模式未必有效,還須檢查流量接入方式。
直連模式對應 mode: direct,讓進入核心的連線直接連至目的地,不經遠端代理節點。這和完全退出用戶端不同,核心仍可能處理 DNS 與連線。若要比較原本的網路狀態,應分清切換直連模式、關閉系統代理與停止 TUN 這幾種操作;它們影響的環節並不相同。
TUN 模式透過虛擬網路介面接收流量,可涵蓋部分不遵循系統代理設定的應用程式。這是一種流量接入方式,可搭配規則模式或全域模式使用。啟用時通常會涉及系統權限、路由與 DNS 接管;若同時使用其他 VPN,應留意預設路由衝突,而不是反覆切換節點。
規則負責比對,策略負責執行,資料集合則提供可重複使用的比對條件。
規則分流會依據網域、目的 IP、程序等條件,將連線交由直連、拒絕或指定代理策略處理。規則通常由上而下比對,順序會影響最終結果;範圍較廣的規則若排在前面,可能會遮蔽後方較精確的規則。排查網站走錯出口時,應在連線紀錄中查看命中的規則,再調整順序或條件。
策略群組會將節點或其他策略組合成規則可引用的對外連線入口。select 用於手動選擇;url-test 和 fallback 則會依各自的測試機制選擇可用出口。規則引用的是策略群組名稱,修改名稱後應同步更新所有引用,否則可能出現找不到策略的設定錯誤。
GeoIP 會根據 IP 資料庫提供的歸屬資訊比對目的 IP,常用來依國家或地區選擇策略。資料庫結果不代表網站營運方所在地,也可能因 IP 位址分配變動而有所延遲。網域規則與 GeoIP 規則屬於不同的比對層次;若網站需要固定出口,通常應優先考慮明確的網域規則。
規則提供者透過 rule-providers 定義規則集合,再由 RULE-SET 在規則清單中引用。這種方式方便獨立維護與更新規則,但仍會受到引用位置與規則順序影響。規則集的內容格式必須符合宣告的行為類型;下載成功也不代表一定能如預期解析及比對。
解析、流量接管與連線探測是不同環節,應分別檢查。
DNS 會將網域名稱解析為 IP 位址等紀錄,是建立網路連線前的重要環節。啟用核心 DNS 後,仍須確認系統與應用程式的查詢是否實際經過這條解析路徑。瀏覽器內建的加密 DNS 可能使用另一條路徑,因此排查解析問題時,應同時檢查用戶端、系統與應用程式這三處。
Fake-IP 是由核心回傳給應用程式的虛擬 IP,用來建立 IP 與網域名稱的對應關係。連線至該位址後,核心可以還原網域名稱,並執行相應的分流與連線處理。這個位址不是網站的真實伺服器 IP;切換解析模式後,若應用程式仍使用舊快取,可能需要重新建立連線或清除解析快取。
DNS 洩漏通常是指網域查詢繞過預期的解析路徑,改由其他解析服務接收。網頁能透過代理開啟,並不能單獨證明 DNS 查詢也走了預期路徑。測試結果應配合瀏覽器加密 DNS、系統解析器與用戶端 DNS 策略來判讀;出現多個解析服務也不一定代表設定錯誤。
用戶端顯示的延遲,通常是向指定測試位址發出探測後所需的時間,實際計算方式依各種實作而異。它不是下載速度,也不能代表瀏覽所有網站的體驗。比較節點時應使用相同的測試位址與條件;測試逾時也可能是目標服務設有限制,不能只憑一次結果判定節點完全無法使用。
先了解檔案格式、遠端來源與本機修改之間的關係,再開始編輯。
YAML 是 Clash 常用的設定檔格式,透過鍵值、清單與縮排組織設定。縮排須使用空格,同一層級必須對齊;清單項目通常以連字號開頭。編輯時應避免重複鍵,特殊字元可能影響解析時則應加上引號;格式正確後,還要檢查欄位意義與策略引用。
訂閱是用戶端定期或手動擷取遠端設定檔與節點清單的方式。連結可能回傳完整設定檔,也可能只提供節點資料;能否匯入取決於格式及用戶端支援情況。連結通常包含個人存取憑證,應妥善保密;更新訂閱不等於續約,帳戶效期與資料更新是兩回事。
節點是一組用來連線至遠端代理服務的參數,通常包含名稱、協定、位址、連接埠及驗證資訊。節點名稱只是顯示標籤,無法據此確認實際位置、品質或可用狀態。匯入節點後,還須讓策略群組引用該節點,並讓目標連線使用該策略;清單中看得到節點,不代表已開始使用。
覆寫與合併是在訂閱設定檔之外儲存本機調整,並在產生執行設定時套用這些調整的機制。不同用戶端對欄位替換、清單追加及執行順序的處理方式可能不同。直接編輯訂閱快取的內容,可能會在下次更新時被取代;需要長期保留的規則,應透過用戶端提供的覆寫功能維護,並檢查最終生效的設定。