核心版本範圍:先分清原版、Premium 與 mihomo
mihomo 是原 Clash.Meta 專案的後續名稱,也常稱為 Clash Meta 核心。它沿用 Clash 的 YAML 設定格式,同時擴充協定、DNS、規則集與流量接管功能。改用搭載 mihomo 的用戶端,不只是換了介面:負責解析設定、建立連線與執行規則的程式也已不同。
「原版 Clash」要分成兩個比較對象:Dreamacro/clash 開源核心,以及原版生態中的 Clash Premium。兩者功能並不完全相同。尤其是 TUN 與規則提供者,不能一概說成「原版沒有,只有 mihomo 才有」。原版專案於 2023 年停止維護後,舊教學與訂閱範本仍持續流通;遷移時應以實際核心版本為準。
- 用戶端:負責匯入訂閱、系統匣操作、系統代理與產生設定,例如桌面版的設定管理介面。
- 核心:負責協定交握、DNS 查詢、規則比對與建立對外連線;介面版本號不能取代核心版本號。
- 訂閱:可能是完整設定,也可能只有一組節點;兩者不能任意填入同一種提供者欄位。
功能比較:支援更多協定,不代表設定完全通用
| 比較項目 | 原版 Clash 系列 | mihomo |
|---|---|---|
| 常見代理協定 | 支援 Shadowsocks、VMess、Trojan 等,實際能力視版本而定 | 保留常見協定,並新增 VLESS、Hysteria2、TUIC 等 |
| VLESS 與 REALITY | 原版核心無法直接使用相應的 mihomo 設定 | 支援相關組合,但傳輸方式、TLS 與伺服器參數都必須相符 |
| rule-providers | Premium 支援規則集功能,但不能推及所有原版開源版本 | 支援規則提供者,並提供更多格式與行為選項 |
| 網域嗅探 | 沒有與 mihomo 完全相同的 sniffer 設定機制 | 可嘗試從支援的流量協定中擷取網域資訊 |
| TUN 流量接管 | Premium 具備相關功能,但支援情況因平台與版本而異 | 支援 TUN;實際接管仍取決於權限、路由與系統環境 |
| 基本分流規則 | 常見的 DOMAIN、DOMAIN-SUFFIX、IP-CIDR 等 | 沿用基本語法,並擴充規則類型與組合方式 |
此表說明的是功能範圍,不代表所有版本都適用。伺服器端的新功能、特定傳輸組合及規則集格式,可能需要較新版 mihomo。若遇到「不支援的代理類型」,請先確認用戶端目前執行的核心,不要只看安裝檔名稱是否含有 Meta。
遷移 VLESS、Hysteria2 時的檢查重點
VLESS 節點的類型寫作 type: vless。若伺服器使用 REALITY,還必須正確設定 reality-opts、公鑰、短 ID、伺服器名稱,以及相符的用戶端指紋;flow 也必須符合伺服器設定。只把原 VMess 節點的類型改成 VLESS,並不能完成協定轉換。
Hysteria2 節點的類型寫作 type: hysteria2,與第一代 Hysteria 的設定並不相同。認證值、連接埠、SNI、混淆與頻寬參數都要依伺服器設定;所在網路也必須允許相應的 UDP 通訊。TCP 網頁能開啟,不代表 Hysteria2 的 UDP 交握一定可連通。
- 建議優先向訂閱服務提供者索取適用於 mihomo 的輸出格式,不要反覆手動修改整份訂閱。
- 不要用全域設定
skip-cert-verify: true來掩蓋憑證名稱或信任鏈錯誤。 - 節點資訊可能包含密碼、UUID 或認證權杖。提交記錄前請先遮蔽敏感資訊,也要移除訂閱 URL 中的權杖。
遷移規則集:分清 provider、behavior 與檔案內容
proxy-providers 提供節點,rule-providers 提供比對條件。前者透過策略群組的 use 引用,後者則透過 RULE-SET 規則引用。將節點訂閱網址填入規則提供者,即使網址能下載,也無法取得可用的分流規則。
以下是本機檔案範例。設定檔與 rules 資料夾放在同一個設定工作目錄;若用戶端使用獨立的核心工作目錄,請以實際工作目錄為準。範例僅示範如何載入規則檔,不包含代理節點,也無法建立代理連線。
主設定中的規則提供者
rule-providers:
local-domains:
type: file
behavior: domain
format: yaml
path: ./rules/local-domains.yaml
rules:
- RULE-SET,local-domains,DIRECT
- MATCH,DIRECT
rules/local-domains.yaml 的內容
payload:
- '+.example.com'
- 'example.org'
behavior: domain 的項目是網域模式,不能直接放入 DOMAIN-SUFFIX,example.com 這類完整規則。若使用 behavior: classical,則可在 payload 中填入支援的傳統規則項目,例如 DOMAIN-SUFFIX,example.com;執行策略則由外層的 RULE-SET 指定。
- domain:用於網域比對內容,適合純網域清單。
- ipcidr:用於 IP 網段內容,例如
192.168.0.0/16,請勿混入網域。 - classical:用於支援的傳統規則類型,內容格式與前兩者不同。
YAML、純文字與 MRS 是不同的儲存格式。MRS 是 mihomo 使用的二進位規則集格式,支援 domain 與 ipcidr 行為,不適合作為原版核心通用的交換格式。遷移時請一併核對 behavior、format 與遠端實際回傳的內容;只把副檔名改成 .yaml 並不會改變檔案格式。
規則仍會依序比對。若將 MATCH 提前,後續規則便不會生效;若把範圍很大的直連規則放在代理規則之前,也可能改變原有分流結果。載入成功只代表內容可解析,不代表比對順序符合預期。
sniffer 嗅探:補充網域線索,不是解密流量
部分連線進入核心時,只有目標 IP。mihomo 的 sniffer 可嘗試從支援的 HTTP、TLS、QUIC 流量中取得網域線索,輔助規則比對;相關選項也可能變更連線目標。它不是 HTTPS 解密代理,不會因此取得 TLS 加密後的內容,也無法保證從每條連線擷取到網域。
sniffer:
enable: true
override-destination: false
sniff:
HTTP:
ports: [80, 8080]
TLS:
ports: [443]
QUIC:
ports: [443]
這段設定將 HTTP 檢查範圍限制在 80、8080 連接埠,TLS 與 QUIC 則限於 443 連接埠,並明確停用目標位址覆寫。這樣便於先觀察嗅探與規則比對結果,避免同時引入目標改寫的變數。是否擴大連接埠範圍,應依實際需求決定,不宜為了「更完整」而直接檢查所有連接埠。
若特定網站在啟用嗅探後出現異常,請先關閉 sniffer.enable,逐一比較變更前後,再確認相關網域是否需要加入 skip-domain。使用 ECH 等 TLS 機制時,可觀察到的網域資訊可能減少。嗅探也不能取代 DNS 分流:若用戶端 DNS 繞過系統代理,仍須在 DNS 或流量接管路徑中處理。
DNS 與 TUN:基本欄位可沿用,執行條件要重新確認
舊設定中的 dns.enable、enhanced-mode: fake-ip、fake-ip-filter 等概念仍可用於 mihomo。Fake-IP 會以保留位址對應網域,再於後續連線中還原相關網域資訊;這不等於「所有 DNS 都經過代理」,也不會自動接管瀏覽器另外啟用的加密 DNS。
新增 DNS 欄位不可單獨複製套用
nameserver-policy 可指定特定網域使用的解析器;proxy-server-nameserver 用於解析代理節點的伺服器網域;respect-rules 則可讓 DNS 上游連線遵循路由規則。啟用後須留意代理節點網域的獨立解析路徑,避免陷入「先建立代理才能解析節點,先解析節點才能建立代理」的循環依賴。
遷移初期建議先保留已知可用的 DNS 上游,只確認網域能否解析、目標規則是否命中,再逐項加入這些欄位。不要直接拼接兩個用戶端的整段 DNS 設定:同名欄位可能遭後者覆蓋,用戶端也可能在啟動前注入自己的監聽位址或策略。
TUN 失敗,問題通常不只在 YAML 語法
- 權限:建立虛擬網卡、修改路由可能需要管理員權限、系統服務或相應的網路權限。
- 路由:自動路由必須與 VPN、虛擬機器網路及其他流量接管軟體協調,避免重複接管。
- DNS 劫持:
dns-hijack中針對 53 連接埠的規則,不代表能接管所有 DoH、DoT 要求。 - 系統代理:供遵循系統代理設定的應用程式使用;TUN 則在虛擬網卡層接管流量,兩者不是同一個開關。
排查時先關閉 TUN,透過明確指定的本機代理連接埠測試節點,再單獨啟用 TUN。如此可區分「節點無法使用」與「系統接管失敗」,避免因路由問題而反覆修改節點密碼。
遷移舊設定:依序驗證基本設定、規則與流量接管
遷移不應從一次複製所有進階欄位開始。先記下原用戶端的監聽連接埠、運作模式、策略群組選擇與核心版本,再建立可還原的副本。以下步驟適用於手動檢查核心,也適合用來找出用戶端產生設定時的問題。
- 確認實際核心。獨立執行環境可執行
mihomo -v。用戶端環境則查看核心資訊或啟動記錄,區分用戶端版本與核心版本。 - 檢查設定語法。在設定目錄執行
mihomo -t -f ./config.yaml。若檔案提供者使用相對路徑,也請確認核心的工作目錄設定;語法檢查通過不代表遠端節點連線成功。 - 固定本機入口。例如設定
mixed-port: 7890,並維持allow-lan: false。7890 是本例使用的連接埠,不是所有用戶端的固定預設值。 - 驗證單一節點。先選用一個已知可用的節點,透過本機代理發送要求,再啟用自動策略群組,避免健康檢查與節點切換掩蓋問題。
- 恢復規則與 DNS。逐一啟用規則提供者,查看連線記錄中的命中規則、策略群組與最終節點,不要只看網頁是否能開啟。
- 最後啟用 TUN 與嗅探。每次只變更一項功能,並保留變更前後的記錄與生效設定。
mihomo -v
mihomo -t -f ./config.yaml
curl --proxy http://127.0.0.1:7890 --head https://example.com
以上 curl 指令假設本機已安裝 curl,並明確透過 7890 連接埠送出要求。在 Windows PowerShell 中,若 curl 被對應為其他指令,可改用 curl.exe。收到 HTTP 回應代表這次要求的連線路徑可運作,但不代表所有網域、UDP 或 TUN 流量都正常。
優先檢查的舊式寫法
- 舊式鍵名:早期範本中的
Proxy、Proxy Group、Rule,應依目前的設定結構整理為proxies、proxy-groups、rules,不要依賴舊版相容處理。 - 策略群組引用:
rules引用的群組名稱必須存在,大小寫與空格都要一致;刪除舊群組後,也要一併修改最後的MATCH。 - 協定專用欄位:不要將其他核心的 JSON 欄位直接貼進 mihomo YAML。相同協定在不同設定格式中,欄位層級與命名可能不同。
- 控制介面:
external-controller與代理監聽連接埠用途不同。若僅供本機管理,請綁定回環位址;如需遠端存取,應設定驗證並限制網路存取範圍。
故障排除:分開確認載入、連線與分流結果
| 狀況 | 優先檢查項目 | 驗證方式 |
|---|---|---|
| 不支援的代理類型 | 實際執行的核心與訂閱輸出格式 | 確認核心版本,並檢查節點的 type 欄位 |
| 規則提供者載入失敗 | 檔案路徑、回傳內容、behavior 與 format | 開啟實際檔案,確認內容不是錯誤頁面或節點訂閱 |
| 設定通過,但節點逾時 | 位址、連接埠、認證、TLS 與 UDP 連通性 | 固定單一節點測試,不要同時啟用自動切換 |
| 手動代理正常,TUN 異常 | 權限、路由、DNS 接管與其他 VPN | 關閉衝突的流量接管功能,分別測試網域與 IP 連線 |
| 重新啟動後修改內容消失 | 訂閱更新與用戶端設定合併 | 將自訂內容移至用戶端可保留的覆寫機制 |
mihomo 的主要優勢在於擴大協定支援與設定能力,而不是讓舊設定在任何環境中都能自動以相同方式運作。遷移是否穩定,不能只看「介面沒有報錯」:應分別確認節點連線、DNS 解析、規則命中與系統流量接管,再恢復日常訂閱更新。用戶端選型可參考用戶端比較;首次安裝與系統權限設定請參閱各平台使用指南。