MANUAL · ZERO TO PRO

Clash 從零到精通完整手冊

九章線性推進:從核心概念到客戶端選擇與安裝,再到訂閱匯入、代理模式、規則分流TUN 模式,最後是日常維護與進階路線。每章可獨立查閱,也可從頭依序讀完。

章節 9 · 核心 mihomo (Clash Meta) · 涵蓋 Windows / macOS / Linux / Android / iOS
本頁與入門指南的分工:如果目標是十分鐘內連上網路,先看 入門指南,那邊只保留「跟著做就能完成」的主線步驟;本手冊是系統查閱版,按知識階梯完整展開每個環節的原理、參數與差異,遇到指南裡沒講透的地方,回到這裡按章節目錄定位。

01核心概念:核心、客戶端與設定檔

核心與客戶端是兩層東西

Clash 生態由兩層組成。底層是核心:一個命令列程式,負責監聽本機連接埠、接收應用程式流量、依規則比對後轉發到對應的代理伺服器或直連出口。目前生態的主流核心是 mihomo(即 Clash Meta 分支),它在原版 Clash 核心封存後持續維護,擴充了出站協定、規則集與 TUN 堆疊,詳見部落格《mihomo 核心與原版 Clash 有什麼區別》

上層是圖形客戶端:Clash Plus、Clash Verge Rev、FlClash 這些名稱各異的應用程式,本質都是核心的「駕駛艙」——負責匯入訂閱、切換節點、開關系統代理與 TUN、顯示日誌與連線。理解這一點後很多疑問會自動消解:不同客戶端的功能差異主要在介面與封裝,分流能力取決於核心;換客戶端不需要換訂閱,設定檔對任何核心相容的客戶端都通用。

設定檔的三大區塊

核心的全部行為由一份 YAML 設定檔(通常叫 config.yaml,客戶端裡稱 Profile)決定。無論檔案多長,骨架都是三塊:

  1. 入站與全域參數:監聽連接埠、區域網路存取開關、執行模式、日誌等級、DNS 設定。
  2. proxies 與 proxy-groups:節點清單(每個節點是一台代理伺服器的位址、連接埠、協定與憑證)和代理群組(把節點依策略編組,供規則引用)。
  3. rules:分流規則清單,決定每條連線走哪個代理群組。

這三塊的邊界值得記牢:出問題時先判斷症狀落在哪一塊,排查範圍立刻縮小三分之二。連接埠衝突、區域網路裝置連不上屬於第一塊;節點全部逾時、測速一直轉圈屬於第二塊;某個網站走錯出口、該直連的卻繞了一圈屬於第三塊。後面第八章的故障對照表就是按這個思路組織的。

一份最小可讀的全域參數段長這樣:

mixed-port: 7890        # HTTP 與 SOCKS5 合一的混合入站連接埠
allow-lan: false        # 是否允許區域網路裝置接入
mode: rule              # rule / global / direct 三種執行模式
log-level: info         # silent / error / warning / info / debug
external-controller: 127.0.0.1:9090   # 本機 API 控制連接埠

其中 mixed-port 是最常被問到的欄位:它同時接受 HTTP 與 SOCKS5 兩種協定的連線,所以瀏覽器、命令列工具、下載器填同一個連接埠都能用,不必像早年那樣分別設定 portsocks-portallow-lan 打開後,同一區域網路的手機、電視盒子把代理指向這台機器的內網位址即可共享分流,但也意味著任何能存取該網段的裝置都能借用你的代理,在公共網路下不要開啟。external-controller 預設只監聽 127.0.0.1,把它改成 0.0.0.0 會把控制介面暴露到區域網路,必須同時設定 secret 密語。

高頻名詞速查

名詞含義
節點(Proxy)一台代理伺服器的連線資訊:位址、連接埠、協定、加密與憑證。
代理群組(Proxy Group)依策略組織的節點集合,如手動選擇、自動測速、故障轉移。
訂閱(Subscription)機場提供的 URL,存取後回傳一份完整設定檔,節點變動時重新抓取即可同步。
Profile客戶端裡對「一份設定檔」的稱呼,可同時儲存多份並隨時切換。
延遲測試客戶端向測試位址發出請求測量往返耗時,反映連線可用性而非頻寬。
規則集(Rule Set)把大量同類規則打包成外部檔案,設定裡一行引用,支援定期更新。
GEO 資料GeoIP / GeoSite 資料庫,提供「依國家 IP 段」「依站點分類網域」的批量比對能力。

02選客戶端:平台矩陣與取捨

先看平台,再看偏好

選客戶端的第一個限制是作業系統。下表與下載中心的收錄一致,每格依推薦順序排列:

平台推薦順序備註
WindowsClash Plus → Clash Verge Rev → FlClash → Clash NyanpasuClash for Windows 已停止維護,僅作封存
macOSClash Plus → Clash Verge Rev → FlClashClashX Meta 已停止維護,僅作封存
AndroidClash Plus → Clash Meta for Android → FlClash → Surfboard均以 VpnService 實作
iOSClash Plus(App Store)商店直接取得,官網 clashplus.io
LinuxClash Verge Rev → FlClash伺服器情境可直接執行 mihomo 核心

Clash Plus 是全平台首推:五個平台介面與操作邏輯一致,換裝置不用重新學習,內建 mihomo 核心,訂閱匯入、TUN、規則分流開箱可用。Clash Verge Rev 在桌面端提供更細緻的設定能力,覆寫腳本、外部控制、核心切換都有入口,適合願意讀文件的使用者。FlClash 以 Flutter 構建,一套介面橫跨桌面與 Android,偏好極簡操作可以選它。Clash Nyanpasu 是 Windows 上另一個 Verge 系分支,介面風格不同,功能面接近。Clash Meta for Android 是 Android 上最貼近核心原生行為的客戶端;Surfboard 則相容 Clash 設定格式,作為 Android 備選。

關於停更客戶端:Clash for Windows 與 ClashX Meta 已停止維護,核心停留在封存版本,新協定與新規則語法不再跟進。舊裝置延續舊習慣可以繼續用,新裝機一律建議從維護中的客戶端開始。逐項參數比較見客戶端比較

03安裝:五平台逐一過一遍

Windows

下載中心 Windows 區取得安裝包,雙擊執行,依照嚮導選擇安裝目錄即可。兩個常見卡關點:一是 SmartScreen 提示「已保護你的電腦」,這是系統對新發布安裝包的預設攔截,點「其他資訊 → 仍要執行」繼續;二是安裝完成後找不到視窗——Clash 系客戶端啟動後預設收進工作列系統匣,點系統匣裡的貓圖示喚出主介面。若計畫使用 TUN 模式,首次啟動時同意客戶端申請的服務安裝或系統管理員授權,後面第七章會用到。

macOS

下載 .dmg 映像檔,開啟後把應用程式圖示拖入 Applications 資料夾。注意區分晶片版本:Apple Silicon(M 系列)與 Intel 對應不同安裝包,下載頁已分開標註。首次開啟如提示「無法驗證開發者」,到「系統設定 → 隱私權與安全性」頁面底部點「仍要打開」,或對應用程式圖示按右鍵選「打開」再確認一次。客戶端申請安裝輔助服務(用於接管系統代理與 TUN)時輸入密碼放行。

Linux

桌面發行版推薦 .deb 包,Debian / Ubuntu 系直接安裝:

# 檔名以實際下載為準
sudo apt install ./clash-verge-rev_amd64.deb
# 或使用 dpkg,再補齊依賴
sudo dpkg -i ./clash-verge-rev_amd64.deb
sudo apt -f install

安裝後從應用程式選單啟動。TUN 模式需要授予核心 CAP_NET_ADMIN 能力或以服務方式執行,客戶端設定裡通常有一鍵「服務模式」入口。無桌面的伺服器環境跳過 GUI,直接使用 mihomo 核心,見第九章。

Android

下載中心 Android 區取得 APK,安裝時依系統提示允許「來自此來源的應用程式」。首次點擊連線,系統會彈出 VPN 連線請求對話框——這是 VpnService 機制的標準授權,確認後狀態列出現鑰匙圖示,表示流量已進入客戶端。部分中國大陸品牌系統的背景管控較為激進,建議同時把客戶端加入省電白名單與自動啟動允許清單,否則鎖定畫面一段時間後代理會被系統回收,細節見部落格《Clash Android 客戶端使用要點》

iOS

iOS 透過 App Store 取得 Clash Plus,在下載頁 iOS 區有商店直達連結與官網 clashplus.io。安裝後首次啟動同樣會請求新增 VPN 設定,到「設定 → 一般 → VPN 與裝置管理」可以看到對應描述檔。訂閱匯入與節點切換的操作邏輯與桌面版一致,後續章節的概念全部通用。

04訂閱匯入與設定管理

訂閱連結是什麼

訂閱是一個 HTTPS 位址,由服務商產生,內容是隨節點變動即時更新的完整設定檔。客戶端「匯入訂閱」做的事就是:請求這個位址 → 把回傳的 YAML 存成一份 Profile → 設為目前生效設定。因此訂閱連結等同於帳號憑據,不要貼到公開場合,也不要在截圖裡裸露。

匯入與更新

  1. 在服務商用戶中心複製訂閱連結,注意選擇 Clash 或 mihomo 格式(部分面板對不同核心輸出不同內容)。
  2. 開啟客戶端的 Profile / 設定頁,貼上連結,點匯入。清單中出現新項目並顯示流量、到期時間(若面板提供)即成功。
  3. 點選該項目設為啟用。之後節點清單、代理群組、規則全部來自這份設定。
  4. 設定自動更新間隔(常見 24 小時)。服務商更換節點位址後,本地不更新就會出現「全部逾時」。
匯入失敗排查:先在瀏覽器直接開啟訂閱連結——能下載到文字說明連結有效,問題在客戶端網路(可暫時用系統瀏覽器下載後作為本地檔案匯入);打不開則是連結過期或被網路攔截,回服務商面板重設訂閱。

還有一類容易忽略的情況:訂閱本身可用,但客戶端顯示的到期時間或流量資料是空的。這些資訊來自服務商在 HTTP 回應標頭裡附帶的 subscription-userinfo 欄位,並非所有面板都會下發,缺失不影響節點使用,不必當成故障處理。反過來,如果流量數字長期不動,通常是客戶端拿的是本地快取——手動點一次更新即可刷新。

本地設定與多 Profile 管理

除了訂閱,客戶端也支援新建空白 Profile 或匯入本地 YAML 檔案,適合自架伺服器使用者與想完全掌控規則的人。多份 Profile 之間是互斥切換關係:同一時刻只有一份生效,切換即整體替換連接埠、節點、規則三塊。常見管理策略是「訂閱一份 + 本地實驗一份」:日常用訂閱,折騰規則時切到本地副本,改壞了隨時切回去。訂閱每次更新會覆蓋遠端內容,直接改訂閱 Profile 的變動會遺失——持久化客製化要用第九章的覆寫機制。Profile 結構的完整說明見部落格《Clash 設定檔是什麼》

05代理模式與系統代理

三種執行模式

設定裡的 mode 欄位有三個值。rule(規則):每條連線依 rules 清單逐條比對,命中什麼走什麼,是日常推薦模式——中國大陸網站直連、其他地區走代理,互不干擾。global(全域):跳過規則,所有流量進同一個代理群組,僅用於暫時排查「是不是規則沒比對對」。direct(直連):全部流量不走代理,相當於保留客戶端在線但讓路。切換入口在客戶端主介面,通常是三個並排的選項。

系統代理在做什麼

開啟「系統代理」開關時,客戶端向作業系統註冊一個 HTTP/SOCKS 代理位址,預設是 127.0.0.1:7890(即上文 mixed-port 的混合連接埠)。瀏覽器和多數遵守系統代理設定的應用程式,會主動把流量投遞到這個連接埠。它的局限也在「主動」二字:命令列工具、部分遊戲與舊應用程式不讀取系統代理設定,流量不會經過核心——這類情境交給第七章的 TUN 模式。

驗證連線是否生效

連線後用兩步確認。第一步看客戶端連線面板:存取任意網站,面板出現新連線紀錄且標註了命中規則與出口,說明流量確實進來了。第二步用命令列明確指定代理測試:

# 透過本機混合連接埠發出請求,能收到回應標頭即連線可用
curl -x http://127.0.0.1:7890 -I https://www.cloudflare.com

如果直連正常、走代理逾時,依次檢查:節點是否可用(換一個節點重試)、訂閱是否過期、本地防火牆是否攔截了客戶端。

06規則分流:讓每條連線各行其道

規則如何比對

rules 清單自上而下逐條比對,命中即停。每條規則由「類型, 比對值, 目標策略」組成,目標策略可以是某個代理群組,也可以是內建的 DIRECT(直連)與 REJECT(拒絕)。清單末尾必須有一條 MATCH 兜底,接住所有前面漏掉的流量。常用規則類型如下:

類型比對對象範例
DOMAIN網域完全相等DOMAIN,api.example.com,PROXY
DOMAIN-SUFFIX網域後綴DOMAIN-SUFFIX,youtube.com,PROXY
DOMAIN-KEYWORD網域包含關鍵字DOMAIN-KEYWORD,google,PROXY
IP-CIDR目標 IP 段IP-CIDR,192.168.0.0/16,DIRECT
GEOIPIP 所屬國家GEOIP,CN,DIRECT
RULE-SET外部規則集檔案RULE-SET,streaming,PROXY
MATCH兜底,比對一切MATCH,PROXY

順序敏感是新手最常踩的坑:把 GEOIP,CN,DIRECT 放在某條海外網域規則之前,而該網域恰好解析到中國大陸 CDN 時,連線會提前命中直連。原則是精確規則在前,範圍規則在後,MATCH 永遠最後

代理群組的四種策略

規則的目標一般不是單個節點而是代理群組,群組內策略決定實際出口:select 手動選擇,介面上點誰走誰;url-test 定期向測試位址測延遲,自動選最快節點;fallback 依清單順序取第一個可用節點,前面的掛了自動順延;load-balance 把連線分散到多個節點。一段可直接套用的組合:

proxy-groups:
  - name: PROXY
    type: select
    proxies: [AUTO, HK-01, JP-01, US-01]
  - name: AUTO
    type: url-test
    url: https://www.gstatic.com/generate_204
    interval: 300
    proxies: [HK-01, JP-01, US-01]

rules:
  - DOMAIN-SUFFIX,openai.com,PROXY
  - RULE-SET,streaming,PROXY
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

日常把 PROXY 群組停在 AUTO 上自動測速,需要固定地區(比如串流媒體解鎖)時手動切到對應節點。挑節點的四個維度——延遲、倍率、地區、協定——完整分析見部落格《Clash 節點怎麼選》

規則寫多了會遇到維護成本問題:上千行網域清單塞進設定檔既難讀也難更新。這時改用 rule-providers 引用遠端規則集,設定裡只留一行 RULE-SET,規則內容由核心按 interval 定期拉取,社群維護的分類清單(廣告、串流媒體、境內網域)可以直接複用。規則集分 domainipcidr 兩種 behavior,類型寫錯會導致整個規則集比對不到任何流量,是個靜默失敗,設好後務必在日誌裡確認載入條數不為零。

另一個常見需求是「某個應用程式單獨走某地區節點」。做法不是改代理群組,而是新增一個只服務它的策略群組,再用精確規則指向這個群組:這樣後續調整只影響這一條鏈路,不會牽動全域。反之,如果發現某類流量需要一直排除在代理之外(例如企業內網網域、支付閘道),寫 DOMAIN-SUFFIX,內網網域,DIRECT 並把它放在所有代理規則之前,比事後除錯要省事得多。

DNS 與 Fake-IP

分流正確的前提是網域資訊不遺失。mihomo 的 dns 區段支援兩種模式:redir-host 真實解析後依 IP 比對,fake-ip 用保留網段虛構回應、在建立連線時還原真實網域,後者顯著降低解析延遲並避免 DNS 污染干擾分流。部分依賴真實 IP 的應用程式(區域網路發現、某些遊戲平台)需要寫進 fake-ip-filter 排除,完整機制見部落格《Fake-IP 模式運作原理詳解》

07TUN 模式:接管系統全部流量

原理與適用情境

TUN 模式讓核心建立一塊虛擬網路卡,並把系統預設路由指向它——所有應用程式的流量在網路層被截取,不再依賴應用程式是否遵守系統代理設定。命令列工具、遊戲客戶端、UWP 應用程式這些「不認系統代理」的流量,在 TUN 下全部進入規則引擎。兩種方式的差異:

維度系統代理TUN 模式
覆蓋範圍遵守代理設定的應用程式全部應用程式與系統行程
權限要求一般使用者系統管理員 / 服務模式 / root 能力
UDP 支援取決於應用程式原生完整
實作層應用層投遞網路層虛擬網路卡

開啟步驟

  1. 先滿足權限前提:Windows 在客戶端設定裡安裝服務模式(或以系統管理員身分執行);macOS 同意輔助服務授權;Linux 啟用客戶端的服務模式或為核心賦予網路管理能力。
  2. 在客戶端設定中開啟 TUN 開關。Verge 系客戶端建議同時關閉系統代理開關,避免雙重接管。
  3. 確認 DNS 劫持已啟用,否則應用程式直連系統 DNS 會繞過分流。

對應的設定區段(客戶端 GUI 開關本質就是寫這些欄位):

tun:
  enable: true
  stack: system        # system / gvisor / mixed
  auto-route: true     # 自動接管預設路由
  auto-detect-interface: true
  dns-hijack:
    - any:53           # 劫持所有發往 53 連接埠的 DNS 查詢
衝突提醒:TUN 與其他 VPN 軟體、虛擬網路卡工具(部分遊戲加速器、企業內網客戶端)會爭奪路由。同時執行出現斷網時,先關掉一方再試;排查網路問題時也建議先退回系統代理模式,把變數減到最少。

08日常維護與故障排查

關於 stack 的三個取值:system 使用作業系統自帶的網路堆疊,效能最好、相容性取決於系統實作;gvisor 在使用者態實作一套完整 TCP/IP 堆疊,相容性最穩,代價是多一點 CPU 開銷;mixed 折衷,TCP 交給系統、UDP 走 gvisor。桌面端預設 system 即可,遇到 UDP 不通、遊戲連不上房間時改成 mixedgvisor 再試。關閉 TUN 後如果出現完全斷網,通常是虛擬網路卡異常結束導致路由表殘留,重啟客戶端或手動停用再啟用一次實體網路卡即可恢復。

三樣東西要保持更新

訂閱:開自動更新,間隔 24 小時內;服務商公告更換節點後手動更新一次立即生效。客戶端與核心:維護中的客戶端會隨版本更新核心,新協定與修復都依賴它,升級前留意更新說明裡是否有設定欄位變更。GEO 資料與規則集:GeoIP / GeoSite 資料庫和 RULE-SET 引用的外部檔案都有更新機制,客戶端設定裡通常提供「更新 GEO 資料」按鈕,規則比對結果與預期不符時先更新再排查。

兩個日常觀察視窗

日誌頁:把 log-level 暫時調到 debug 可以看到每條連線的比對過程,定位「這條流量到底命中了哪條規則」最直接;定位完調回 info,避免日誌刷屏耗資源。連線面板:即時列出活躍連線的目標、命中規則、出口節點與流量,發現某應用程式走錯出口時,從這裡取得它的目標網域,再回設定裡補一條精確規則。

故障對照表

症狀優先排查
所有節點全部逾時訂閱過期或節點整體更換 → 更新訂閱;本機時間偏差過大也會導致交握失敗
延遲正常但網頁打不開DNS 問題 → 啟用 fake-ip 或更換 nameserver;檢查是否命中 REJECT 規則
部分應用程式不走代理該應用程式不遵守系統代理 → 切 TUN 模式;Android 檢查分應用程式代理清單
啟動時回報連接埠被佔用7890 / 9090 被其他程式佔用 → 改 mixed-port 或退出衝突程式
訂閱更新失敗瀏覽器直接開啟訂閱連結驗證;客戶端內可暫時切直連模式再更新
Android 背景一段時間後斷線系統省電機制回收 → 加入省電白名單與自動啟動允許清單

09進階路線:從會用到精通

覆寫:讓客製化在訂閱更新後存活

訂閱每次更新都會整體覆蓋 Profile,直接改檔案的客製化活不過下一次更新。正確做法是覆寫(Merge / Override):在客戶端裡維護一份獨立的補丁,每次訂閱更新後自動疊加到設定上。典型用法是追加自己的規則、固定 DNS 段、強制開啟 TUN 欄位。Clash Verge Rev 還支援 JavaScript 腳本覆寫,可以按條件批量改寫節點與代理群組,適合規則量大的使用者。

外部控制 API 與 Web 面板

核心透過 external-controller 開放一套 RESTful API,客戶端介面本身就是它的使用者。你也可以直接呼叫:

# 查看目前設定
curl http://127.0.0.1:9090/configs
# 切換某個 select 群組的出口節點
curl -X PUT http://127.0.0.1:9090/proxies/PROXY \
  -d '{"name": "HK-01"}'

配合 external-ui 欄位可以掛載 Web 控制面板,在瀏覽器裡管理執行中的核心——這是路由器與伺服器情境的標準操作方式。

無介面環境直接執行核心

伺服器、軟路由、NAS 上不需要 GUI,從下載中心核心區取得對應架構的 mihomo 二進位檔(AMD64 / ARM64 / ARMv7 / MIPS 等),把設定放到指定目錄後啟動:

# -d 指定設定目錄,目錄內放 config.yaml 與 GEO 資料
./mihomo -d /etc/mihomo
# 配合 systemd 常駐執行,開機自動啟動
sudo systemctl enable --now mihomo

區域網路裝置把閘道或代理指向這台機器,即可全家共享同一套分流規則。

在多台裝置上跑同一套規則時,建議把設定檔放進版本管理:每次改動提交一次,出問題可以直接比對上一版差異,比憑記憶回滾可靠。憑證類欄位(訂閱連結、節點密碼、API secret)不要一起提交到公開儲存庫,用單獨的本地檔案儲存並在覆寫階段注入。

推薦的進階閱讀順序

  1. Profile 結構入門與多設定管理——把第四章的設定骨架吃透。
  2. 節點選擇四維度——建立自己的選節點流程。
  3. Fake-IP 運作原理——理解 DNS 層發生了什麼。
  4. mihomo 與原版核心差異——知道手裡的工具邊界在哪。
  5. 動手實踐:用覆寫維護一份自己的規則補丁,再在一台閒置裝置上部署純核心。走完這五步,本手冊的九章內容就真正變成了你自己的知識。
讀完之後:還沒安裝客戶端的,去下載中心依平台取得;想按最短路徑先跑起來的,回到入門指南照步驟操作;在客戶端之間猶豫的,客戶端比較有逐項參數表。