跳至正文

mihomo 核心與原版 Clash 有何不同?協定支援、規則集與設定欄位比較

mihomo(原 Clash Meta)以原版核心為基礎,新增 VLESS、Hysteria2、TUIC 等協定,以及 rule-providers 擴充語法和 sniffer 等欄位。本文整理兩者差異與設定檔遷移注意事項。

先確認核心:用戶端名稱不等於功能範圍

匯入訂閱後出現 unsupport proxy type,或設定檔中寫了 sniffer 卻沒有預期效果,先別急著更改節點密碼。第一步應確認用戶端實際啟動的是哪個核心。介面負責管理訂閱、系統代理與開關,核心則負責解析設定、比對規則及建立連線;介面名稱相似,不代表支援相同的欄位。

本文將「原版 Clash」分為兩種:原版開源核心,以及曾獨立發行的 Clash Premium。Premium 的 TUN、規則集等功能不能直接視為原版開源核心的能力。mihomo 則由 Clash Meta 演進而來,沿用了許多 Clash 設定習慣,但不只是更改程式名稱。

協定支援:VLESS、Hysteria2、TUIC 是主要差異

如果現有訂閱只有傳統的 Shadowsocks、VMess、Trojan 節點,遷移後可能看不出明顯差異。較容易引發相容性錯誤的,通常是新協定、新加密方式,以及協定附帶的傳輸參數。節點名稱標示「Hysteria2」並不代表核心支援;核心讀取的是 YAML 中的 type 與相關欄位。

協定或功能 原版 Clash mihomo
Shadowsocks、VMess、Trojan 可使用常見基礎協定,實際參數依版本而異 支援,且持續擴充
VLESS 原版開源核心與 Premium 均不支援此協定 支援,節點類型為 vless
Hysteria2 不支援 支援,節點類型為 hysteria2
TUIC 不支援 支援,節點類型為 tuic
VLESS 搭配 REALITY 不支援 支援相應設定,但伺服器端參數必須相符

錯誤發生在哪個階段,決定了優先檢查項目

如果設定檔測試直接回報「不支援的代理類型」,問題出在本機解析階段,尚未進入節點連線測試。反之,設定載入成功但連線逾時,也不能據此判定協定不受支援。接著應檢查伺服器位址、連接埠、驗證資訊與傳輸網路。

訂閱轉換也有其限制。轉換器可以重新排列欄位,卻無法替舊核心補上協定實作。轉換後若節點消失,請先確認輸出格式是否選用 mihomo,以及轉換服務是否支援該協定;不要反覆更新同一份不相容的訂閱。

規則集比較:rule-providers 並非 mihomo 獨有

rule-providers 用來宣告規則集來源,RULE-SET 則用來在規則清單中引用規則集。原版開源 Clash 與 Premium 在這方面的功能有明顯差異:Premium 已支援規則集,不能將所有規則集功能都說成是 mihomo 新增。mihomo 則在此基礎上支援更多格式與用法。

設定項目 遷移時的判斷方式
rules 基礎規則清單仍依序由上而下比對,符合的第一條規則會採用其對應策略。
rule-providers Premium 已支援;不能假設原版開源核心也具備 Premium 的功能。
behavior 區分 domain、ipcidr 與 classical,內容必須符合宣告的類型。
format: mrs 這是 mihomo 支援的規則集格式,可用於 domain、ipcidr,不適用於 classical。
type: inline mihomo 可將規則內容直接寫入 provider 的 payload;舊核心不一定相容。

先用本機 YAML 驗證規則集流程

以下範例可合併至 mihomo 設定檔,不需從遠端下載,方便區分「規則寫錯」與「規則檔下載失敗」。設定只使用內建策略 DIRECT 與 REJECT,不依賴尚未定義的節點群組。

rule-providers:
  local-block:
    type: file
    behavior: domain
    format: yaml
    path: ./rules/local-block.yaml

rules:
  - RULE-SET,local-block,REJECT
  - MATCH,DIRECT

在設定檔的工作目錄中建立 rules/local-block.yaml,並填入以下內容。此處的 example.org 是用來示範規則行為的保留網域;測試時應預期該網域及其子網域會遭到拒絕。

payload:
  - '+.example.org'

behavior: domain 的內容應為網域比對項目,請勿填入 DOMAIN-SUFFIX,example.org。若使用 classical,才依對應的規則類型撰寫,例如 DOMAIN-SUFFIX,example.org;規則集內不需附加最終出口策略。

sniffer 與 DNS:識別網域不等於解密流量

遷移後,部分連線從比對 IP 規則改為比對網域規則,通常與 DNS 映射或嗅探有關。mihomo 的 sniffer 可從部分協定交握中擷取主機名稱,例如 HTTP 的 Host、TLS 的 SNI,以及受支援的 QUIC 交握資訊。它不是透過安裝憑證進行 HTTPS 中間人解密,也無法保證識別每一條連線的網域。

先觀察,再決定是否覆寫目標

sniffer:
  enable: true
  sniff:
    HTTP:
      ports: [80, 8080-8880]
      override-destination: false
    TLS:
      ports: [443, 8443]
      override-destination: false

此範例只列出 HTTP 與 TLS,不代表所有連接埠都需要嗅探。override-destination: false 表示不依據嗅探結果覆寫連線目標;嗅探資訊仍可能用於網域識別與規則判斷。是否覆寫目標,應配合 DNS 與應用程式行為進行測試,不應將它視為必開的最佳化選項。

dns.enhanced-mode: fake-ip 與 redir-host 是不同的處理方式,fake-ip 也不是 mihomo 獨有。遷移時先保留原有 DNS 模式;如需調整,再分開修改並清除相關 DNS 快取。核心的 DNS 監聽位址也必須與系統或流量接管路徑連接;只設定 dns.listen 不代表系統請求已送達該位址。

TUN 與連接埠:設定相容不代表流量接管方式相同

瀏覽器可以上網,但遊戲、命令列或其他應用程式沒有走代理時,通常應檢查流量入口,而非立刻更換協定。系統代理主要影響遵循該設定的應用程式;TUN 則透過虛擬網路介面接收流量,可涵蓋更多應用程式,但也涉及權限、路由與 DNS 接管。

原版 Premium 已提供 TUN,不能將原版開源核心與它混為一談。mihomo 也支援 TUN,但無法保證舊設定中的堆疊選擇、介面參數與路由設定在所有系統上都能原樣運作。Windows、macOS、Linux 的權限與服務管理方式各不相同。

遷移時分兩階段驗證

  1. 先關閉 TUN,使用明確指定的代理確認節點與規則運作正常。例如設定 mixed-port: 7897 後,代理入口為 127.0.0.1:7897;7897 是此處的範例值,並非所有用戶端的固定連接埠。
  2. 在終端機執行下方指令,確認請求確實經過該入口。測試網址僅用於檢查基本 HTTPS 連線,不代表所有目標網站都能正常存取。
  3. 確認明確指定的代理運作正常後,再於用戶端啟用 TUN。檢查提權或服務狀態,以及虛擬介面與路由是否已建立,最後測試不會讀取系統代理設定的應用程式。
curl --proxy http://127.0.0.1:7897 --connect-timeout 10 -I https://example.com

遇到 address already in use 時,先確認是否同時執行了兩個核心。遷移期間舊用戶端未關閉,是本機監聽連接埠衝突的常見原因。若整台裝置無法上網,先關閉新用戶端的 TUN 與系統代理,恢復基本網路後再逐項排查;不要同時疊加多個 VPN 或路由接管工具。

設定檔遷移步驟:分開驗收測試、載入、規則與連線

設定檔「可以載入」,只代表它通過目前階段的解析與初始化,不代表所有欄位都已生效,更不代表節點與 DNS 已可使用。部分未知欄位可能不會產生明顯錯誤,因此也應檢查執行記錄與實際行為。

  1. 備份目前狀態。保存原始訂閱、合併後的執行設定檔,以及本機覆寫檔。請勿將訂閱連結或節點驗證資訊張貼至公開討論區。
  2. 選擇相符的訂閱格式。若訂閱服務提供 Clash 與 Clash Meta/mihomo 兩種輸出格式,請依實際使用的核心選擇;並檢查產生的設定內容,不要只看按鈕名稱。
  3. 先執行設定檔測試。使用實際部署的二進位檔,並指定設定檔與工作目錄,避免相對路徑指向錯誤位置。
  4. 確認入口與節點。先透過明確指定的代理進行測試,再查看連線記錄中選用的節點或策略群組;若連線失敗,請保留完整錯誤資訊。
  5. 確認規則集。檢查 provider 是否載入成功、規則項目是否存在,以及測試網域實際符合哪一條規則。
  6. 最後再啟用進階功能。每次只修改 DNS、sniffer、TUN 其中一項。若出現異常,才能明確還原至上一份可用設定。
mihomo -v
mihomo -t -d /srv/mihomo -f /srv/mihomo/config.yaml

上述 /srv/mihomo 是 Linux 部署範例目錄,執行前請確認檔案確實位於該目錄。Windows 可在目前設定目錄執行 mihomo.exe -t -d . -f .\config.yaml 進行測試。若由用戶端管理核心,實際生效的檔案可能是訂閱與覆寫內容合併後產生;不要只測試未被使用的原始檔案。

如何選擇:依節點協定與維護需求判斷

若需要 VLESS、Hysteria2、TUIC、MRS 規則集或 sniffer 等功能,mihomo 的支援範圍較符合需求。若只維護傳統協定的設定,遷移重點應放在設定可否驗證、用戶端是否持續維護,以及發生問題時能否定位原因,而非期待更換核心就能自動降低延遲。

兩者的差異可分三個層面理解:協定決定節點能否被識別;規則與 DNS 決定連線如何分流;系統代理或 TUN 則決定流量能否進入核心。依這三個層面逐一檢查,比一次切換多個設定更容易找出問題。

Clash 安裝檔