背景:Clash Meta 為什麼改成叫 mihomo?

若你長期使用 Clash Meta 核心,多半已注意到 2023 年底到 2024 年初的一連串變化——原版 Clash 專案宣告封存、不再維護;由社群接手的 Clash Meta 在密集更新後,於 2024 年正式以 mihomo 作為對外專案名稱。這不只是換個名字,而是底層架構也一起翻新:

  • 核心程式碼改放到獨立儲存庫,和舊版 Clash 程式徹底分家
  • YAML 設定在維持相容的前提下,多了許多新欄位可用
  • DNS 模組重寫,支援 DoH3、QUIC 等新協定
  • 規則引擎導入 rule-set 這類外部規則集,整體效能更好
  • TUN 模式(含 Mixed Port)更穩,並支援 IPv6

若你手上還是舊版 Clash.Meta(v1.x 時期)留下來的設定檔,換成 mihomo 並不是「執行檔換掉就好」——有些欄位已廢止或行為不同,硬換可能導致代理失效或根本開不起來。以下依序整理遷移時該檢查、該改的地方。

開始遷移前:先做好這幾件事

備份現有設定

動手改任何東西之前,請先備份 config.yaml 以及你自訂的規則檔。mihomo 預設會把設定放在:

  • Windows:%USERPROFILE%\.config\mihomo\config.yaml
  • macOS/Linux:~/.config/mihomo/config.yaml
升級前務必複製一份到安全位置。若遷移不如預期,你可以還原舊設定,必要時再退回原本的核心版本。

確認目前核心版本

在終端機執行下列指令,查看目前 Clash/Clash.Meta 的版本:

# For old Clash / Clash.Meta binary
./clash -v

# For mihomo binary
./mihomo -v

若輸出裡已經出現 mihomo 字樣,代表你早就在用新核心,本篇「遷移」段落可以略過,直接看後面「新功能怎麼開」即可。

設定檔相容性:哪裡要對一下

多數情況下,mihomo 能讀舊版 Clash.Meta 的 YAML,但下面幾類欄位建議你逐項確認:

已廢止或行為有變的欄位

舊欄位/舊寫法 mihomo 建議寫法 說明
clash-for-android 區塊 已移除 僅舊版 CFA 會用到,mihomo 會直接忽略
external-controller: 0.0.0.0:9090 仍相容,建議改 127.0.0.1:9090 綁在所有介面上有安全疑慮
dns.enhanced-mode: redir-host dns.enhanced-mode: fake-ipnormal redir-host 已不建議使用
proxy-groupstype: fallback 仍支援,可考慮改 type: url-test 並加 lazy: true 行為細節略有不同,建議實測
rules 裡硬塞大量網域規則 改放到 rule-providers 外部規則集 內聯太多會拖慢啟動

TUN 區塊的差異

若你本來就有開 TUN,舊寫法和 mihomo 現在推薦的寫法會差一截。舊版範例:

# Old Clash.Meta TUN config
tun:
  enable: true
  stack: system
  dns-hijack:
    - 198.18.0.2:53
  auto-route: true
  auto-detect-interface: true

mihomo 這邊較建議的寫法(順便開齊常用選項):

# mihomo recommended TUN config
tun:
  enable: true
  stack: mixed         # mixed mode offers best compatibility
  dns-hijack:
    - any:53           # intercept all DNS queries
  auto-route: true
  auto-detect-interface: true
  strict-route: true   # prevent traffic bypassing TUN
優先試試 stack: mixed——它同時顧到 system 的穩定度與 gvisor 的相容性,也是 mihomo 目前預設推薦的堆疊模式。

DNS 區塊的差異

mihomo 的 DNS 支援更多上游類型,nameserver-policy 的優先順序邏輯也和舊版略有不同。建議檢查:

  • 把所有 enhanced-mode: redir-host 相關設定拿掉,改用 fake-ip
  • 若有 fake-ip-filter,確認 NTP、遊戲、P2P 等不適合走 fake-ip 的網域有列入
  • nameserver 建議至少保留一組你環境裡穩定的公共 DNS,再搭配一組 DoH(例如 https://1.1.1.1/dns-query)。下方範例中的數值常見於中國大陸節點;若你在台灣,可改成 168.95.1.11.1.1.1 等當地常用解析,依實際連線品質調整即可
# Recommended DNS section for mihomo
dns:
  enable: true
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - "+.lan"
    - "+.local"
    - "time.*.com"
    - "ntp.*.com"
  nameserver:
    - 223.5.5.5
    - 119.29.29.29
  fallback:
    - https://1.1.1.1/dns-query
    - https://8.8.8.8/dns-query
  fallback-filter:
    geoip: true
    geoip-code: CN

mihomo 新功能:建議怎麼開

外部規則集 rule-providers

rule-providers 很值得花時間設定。它讓你從網址或本機檔載入規則,不必把幾百、幾千條全塞在 rules 裡——啟動從「好幾秒」變成「幾乎秒開」,記憶體佔用也會好看很多。

# Define external rule providers
rule-providers:
  reject:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
    path: ./ruleset/reject.yaml
    interval: 86400
  cn-direct:
    type: http
    behavior: ipcidr
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cncidr.txt"
    path: ./ruleset/cncidr.yaml
    interval: 86400

# Reference rule providers in rules section
rules:
  - RULE-SET,reject,REJECT
  - RULE-SET,cn-direct,DIRECT
  - MATCH,Proxy

Sub-Rules 子規則

mihomo 有 sub-rules 欄位,可以把規則分組、巢狀組合,避免主規則列拉到看不完,分流邏輯也比較好維護——例如先依地區切,再依 App 類型細分。

GeoSite 與 GeoIP 資料更新

mihomo 預設會用 GeoIP2GeoSite 資料庫;若很久沒更新,規則命中可能變得不準。可在設定裡指定自動更新來源,例如:

geodata-mode: true
geox-url:
  geoip: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.dat"
  geosite: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite.dat"
  mmdb: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/country.mmdb"

常見錯誤與處理方式

啟動時出現 cannot unmarshal

多半是 YAML 型別對不上,或還留著已廢止的欄位。可以這樣排:

  1. 先看錯誤裡 line X, column Y 指到哪一行
  2. 對照本篇前面的「廢止欄位」表,刪掉或改成新寫法
  3. 再用線上 YAML 檢查工具確認沒有語法問題

DNS 繞圈/整台斷網

開 TUN 之後,若 dns-hijackfake-ip-filter 沒設好,可能出現 DNS 查詢被代理程式自己攔下來、形成迴圈的狀況。請檢查:

  • dns.enable: true 有開
  • mihomo 的 External Controller 位址(例如 127.0.0.1)有放進 DIRECT/直連規則
  • fake-ip-filter 裡有 +.local+.lan
若仍異常,可暫時把 enhanced-mode 改成 normal 重開一次,確認是否與 fake-ip 有關,再慢慢收斂設定。

TUN 顯示權限不足

在 Linux/macOS 上建立 TUN 需要足夠權限,建議做法:

  • macOS:改用內建 mihomo、且會幫你跑授權流程的用戶端,通常不必自己 sudo
  • Linux:幫 mihomo 執行檔加上 cap_net_admin,例如: sudo setcap cap_net_admin=ep /usr/local/bin/mihomo
  • Windows:以系統管理員身分執行,或改用會自動處理提權的 GUI 用戶端

Rule Provider 下載逾時

第一次啟動 mihomo 時,rule-providers 要從遠端拉規則;若網路不穩,可能卡在逾時。可以試:

  1. rule-providers 同時指定 path,先手動把規則檔放到對應路徑
  2. 把規則網址換成 jsDelivr 等 CDN 鏡像(依你所在網路,有時連線會順很多)
  3. timeout 調大(預設 5 秒,可試 30 秒)

遷移後怎麼確認沒問題

改完設定、重開 mihomo 之後,建議照下面檢查一輪:

  1. 開瀏覽器進 Web UI(預設 http://127.0.0.1:9090/ui),確認顯示的核心名稱是 mihomo
  2. 在代理/節點列表頁確認節點都有載入
  3. 做延遲測試(Latency),確認節點連得到
  4. 開啟 TUN,造訪需要走代理的網站,確認流量有進代理
  5. 再開一個平常應該直連的網站(例如你常用的本地新聞或搜尋首頁),確認走 DIRECT、分流符合預期

若以上都 OK,代表遷移告一段落;你現在跑的是目前 Clash 生態系裡維護最積極、功能也最完整的一條核心線。

換完核心,用戶端也別忽略

不少人升級核心後,介面還停留在好幾年前的舊 GUI,結果 mihomo 新功能根本用不到。舊用戶端常見問題包括:

  • 沒有 rule-providers 的視覺化管理,只能一直手改 YAML
  • TUN 開關很繞,有時還要重開系統服務
  • 核心版本鎖死,跟不上 mihomo 的修正版
  • 介面過舊,沒有延遲圖表、流量統計等現在用戶習慣的功能
  • 訂閱管理陽春,無法依節點群組自動測速挑快的

若你也有上述困擾,可以考慮換成和 mihomo 整合較深的現代用戶端。我們提供的 Clash 用戶端以 mihomo 為核心設計,支援一鍵更新核心、視覺化規則與 TUN 設定,不一定要手動改 YAML 才能完成本篇提到的調整。

免費下載 Clash 官方用戶端 →,全平台都有,多數人十分鐘內就能從下載到連線跑起來。