Clash
Clash ecosystemClash 原指依規則運作的代理核心,也常用來泛指相容其設定方式的用戶端生態。看到「支援 Clash 設定」時,不能因此認定所有用戶端都支援相同欄位或協定。排查設定錯誤前,應先確認實際執行的核心名稱,而不是只記錄安裝套件或視窗標題。
設定名詞 / 欄位對應 / 適用範圍
依設定主題查找術語。每個項目都會說明概念、對應欄位與常見誤解;欄位說明以 mihomo 為參考,用戶端介面上的名稱可能不同。
先分清楚負責處理連線的核心與管理設定的介面,再判斷問題出在哪個層級。
Clash 原指依規則運作的代理核心,也常用來泛指相容其設定方式的用戶端生態。看到「支援 Clash 設定」時,不能因此認定所有用戶端都支援相同欄位或協定。排查設定錯誤前,應先確認實際執行的核心名稱,而不是只記錄安裝套件或視窗標題。
mihomo 是從 Clash.Meta 延續發展而來的開源代理核心,負責連線處理、DNS 解析、協定通訊與規則執行。它可以獨立執行,也可以由圖形用戶端啟動及管理。設定文件中的 tun、sniffer 等欄位能否使用,須依核心版本及所在平台判斷。
圖形用戶端提供核心所需的訂閱匯入、策略選擇、日誌檢視及系統整合等操作介面。介面中修改的設定可能先經用戶端合併,再傳給核心,因此編輯的檔案不一定是最終生效的檔案。用戶端版本與核心版本是兩項不同資訊;回報問題時一併記錄兩者,比只提供介面截圖更有助於找出原因。
系統代理會將作業系統的代理設定指向用戶端的本機監聽位址,例如回送位址上的 HTTP 或混合連接埠。只有遵循這項設定的應用程式才會透過代理傳送連線;部分命令列工具與遊戲會使用獨立的網路設定。啟用系統代理不代表所有流量都會被接管,也不代表所有 DNS 查詢路徑都會自動變更。
用戶端通常會透過某個節點連線至指定測試網址,再依實作方式記錄請求耗時;測試結果不一定等同於 ICMP ping。測試網址、連線重複使用、逾時設定與當下網路狀況都會影響結果。測試值較低,只代表這次測試路徑耗時較短,不能直接推論下載頻寬、影片傳輸速度或其他網站是否可連線。
協定決定用戶端與代理伺服器的通訊方式。節點參數必須與伺服器相符;名稱相同不代表設定可以直接互換。
代理節點是一組連線至代理伺服器所需的參數,通常包含 type、server、port 及驗證欄位。節點可以直接定義在 proxies 中,也可以由節點提供者載入。顯示名稱只是本機引用識別,不應只憑名稱中的地區或倍率文字判斷實際路由、效能與服務能力。
HTTP 代理依 HTTP 代理機制轉送請求;連線至 HTTPS 目標時,通常會透過 CONNECT 建立通道。設定中的 HTTP 代理節點是遠端出口,與用戶端在本機開啟的 HTTP 監聽連接埠並非同一概念。目標使用 HTTPS,也不代表用戶端至代理伺服器這一段自動採用 TLS,仍須檢查節點的傳輸設定。
SOCKS5 是一種代理協定,支援 TCP 連線與 UDP 轉送機制,也可使用使用者名稱與密碼驗證。協定本身不提供傳輸加密,不能因為「需要密碼」就認定連線已加密。UDP 是否實際可用,還須確認應用程式是否使用對應機制、伺服器是否支援,以及節點設定是否啟用相關功能。
Shadowsocks 是一種加密代理協定,在 mihomo 節點設定中使用 type: ss。伺服器位址、連接埠、加密方式與密碼必須相符,不能只修改節點名稱來轉換協定。若涉及外掛或 UDP 轉送,也須確認核心支援相應功能,並與伺服器使用的參數一致。
Trojan 是採用 TLS 保護傳輸的代理協定,節點設定欄位為 type: trojan。連線能否成功不只取決於密碼,也與目標位址、SNI、憑證鏈及傳輸方式有關。遇到憑證錯誤時,應先確認網域、裝置時間與憑證狀態,不應將略過憑證驗證當成一般修復方式。
規則用來判斷連線屬於哪一類;策略組則決定這類連線最後使用哪個出口。
規則分流會依據網域、IP、程序等條件,為連線選擇直連、拒絕或代理出口。在規則模式下,rules 通常由上而下比對,第一個符合的規則會決定處理目標;較具體的例外應放在涵蓋範圍較廣的規則之前。規則引用的策略組名稱必須確實存在;切換至全域模式後,也不能再假設連線仍依這套順序分流。
策略組會將多個節點或其他策略組整理為固定的出口名稱,供規則引用。select 通常用於手動選擇,url-test 依測試結果選擇,fallback 則著重依序尋找可用出口。實際選擇結果會受到測試網址與參數影響;群組中的節點看似可用,不代表每個服務目標都能連線。
GeoIP 會依資料庫記錄的 IP 歸屬分類進行比對,例如 GEOIP,CN,DIRECT。它不是即時地理定位,也不直接代表網站的語言或營運主體;CDN 位址變更也會影響結果。實際使用的資料檔取決於核心的資料模式;加入 no-resolve 時,也須了解它對網域觸發解析的限制。
GeoSite 是依服務或用途整理的網域集合,可透過 GEOSITE 規則引用。分類名稱與收錄範圍由資料來源維護,不同來源未必包含相同分類,也不保證及時納入新網域。它比對的是網域集合,不能取代依 IP 歸屬比對的 GeoIP;更新後應檢查資料載入日誌。
MATCH 是不附加比對條件的預設規則,通常放在 rules 末尾,處理前面都未符合的連線。目標可以是代理策略組,也可以是 DIRECT 等內建策略,並非一定要走代理。如果將它放在清單前面,後續一般規則就沒有比對機會,因此檢查規則順序通常比繼續增加規則更重要。
解析路徑與連線路徑是兩回事。若要確認流量是否完整接管,必須一併檢查應用程式、作業系統與核心設定。
DNS 會將網域解析為 IP 位址等紀錄;mihomo 的 dns 區段用來設定內建解析服務及其上游。填入 nameserver 不代表所有應用程式都會自動使用它,系統解析器與瀏覽器內建的加密 DNS 仍可能採用其他路徑。排查時應分別確認由誰發出查詢、查詢送往何處,以及解析結果對應的連線如何路由。
TUN 模式透過虛擬網路介面接收由系統路由送入的 IP 封包,可涵蓋部分不遵循系統代理的程式。它通常涉及額外權限、網路堆疊與路由設定;實際接管範圍也會受到排除規則、IPv6 與其他 VPN 影響。啟用 tun.enable 只是設定入口,仍須搭配路由表、連線日誌與 DNS 接管結果進行確認。
Fake-IP 會為網域查詢回傳合成位址,由核心保存位址與網域的對應關係,待連線進入核心後再利用這項對應進行分流。合成位址不是目標伺服器的真實位址,用它判斷地理歸屬沒有意義。若服務需要真實解析結果,可依相容性需求設定 fake-ip-filter;修改後也要留意舊 DNS 快取的影響。
DNS 洩漏是指網域查詢偏離預期的解析路徑,送往非預期解析器。檢查時須同時考慮系統 DNS、應用程式內建的 DoH、IPv6,以及網路切換後的回退行為,不能只看網頁顯示的出口 IP。測試頁顯示的解析器名稱只能作為線索,應依據實際預期、核心日誌與多次測試確認;啟用 TUN 模式本身也不能作為判斷結論。
網域嗅探會從連線中可觀察到的協定中繼資料擷取網域,例如 HTTP Host 或部分 TLS 交握中的 SNI,以補充只有 IP 的連線資訊。它無法解密任意 HTTPS 內容,也不能保證每條連線都能取得網域。啟用 sniffer 後,應依協定與目標確認實際行為,不能將它當成 DNS 設定或準確規則資料的替代方案。
分清楚完整設定、節點集合與規則集合,才能判斷該從哪個入口匯入,以及更新時哪些內容會被覆蓋。
訂閱是透過 URL 取得並更新節點或設定的發佈方式,並非代理協定。連結回傳的內容可能是完整 YAML、編碼後的節點清單或其他格式,應使用用戶端對應的匯入入口。訂閱網址可能包含帳戶授權參數,應視為敏感資訊;公開日誌或截圖時須隱藏完整連結。更新失敗也不代表所有已快取的節點會立即失效。
YAML 是 mihomo 設定採用的資料序列化格式;對應關係表示欄位關聯,清單表示一組項目,縮排則決定層級。縮排應使用空格,含特殊字元的值須依語法正確加上引號,不可混用 Tab 與空格。檔案可由 YAML 剖析器讀取,只代表格式成立;還須檢查欄位型別、策略名稱引用,以及核心是否支援相關欄位。
節點提供者透過 proxy-providers 定義,從遠端或本機來源載入節點集合,再由策略組的 use 欄位引用。它能將節點更新與規則、策略組結構分開,適合保留本機分流邏輯的設定。提供者來源未必接受任意完整設定檔;排查時應檢查回傳內容、快取路徑、更新狀態,以及引用名稱是否一致。
規則提供者透過 rule-providers 載入可更新的規則集合,再由 RULE-SET 規則加入主要規則清單。behavior 用來區分網域、IP 網段或傳統規則等內容類型,format 則描述檔案格式;兩者都必須符合資料來源。只定義提供者不會自動參與分流,還須檢查引用位置及其在 rules 中的順序。
覆寫與合併是在訂閱設定上保留或新增本機設定的處理方式,常用於調整連接埠、DNS 或補充規則。具體行為由用戶端決定:部分欄位會整體取代,部分會合併,清單也可能採用插入前端或附加至末端的方式。修改後應檢視最終生效的設定並重新載入;override.yaml 只是常見的檔名,並非所有用戶端都會自動讀取的通用入口。