背景: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-ip 或 normal |
redir-host 已不建議使用 |
proxy-groups 裡 type: 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.1、1.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 預設會用 GeoIP2 與 GeoSite 資料庫;若很久沒更新,規則命中可能變得不準。可在設定裡指定自動更新來源,例如:
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 型別對不上,或還留著已廢止的欄位。可以這樣排:
- 先看錯誤裡
line X, column Y指到哪一行 - 對照本篇前面的「廢止欄位」表,刪掉或改成新寫法
- 再用線上 YAML 檢查工具確認沒有語法問題
DNS 繞圈/整台斷網
開 TUN 之後,若 dns-hijack 或 fake-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 要從遠端拉規則;若網路不穩,可能卡在逾時。可以試:
- 在
rule-providers同時指定path,先手動把規則檔放到對應路徑 - 把規則網址換成 jsDelivr 等 CDN 鏡像(依你所在網路,有時連線會順很多)
- 把
timeout調大(預設 5 秒,可試 30 秒)
遷移後怎麼確認沒問題
改完設定、重開 mihomo 之後,建議照下面檢查一輪:
- 開瀏覽器進 Web UI(預設
http://127.0.0.1:9090/ui),確認顯示的核心名稱是mihomo - 在代理/節點列表頁確認節點都有載入
- 做延遲測試(Latency),確認節點連得到
- 開啟 TUN,造訪需要走代理的網站,確認流量有進代理
- 再開一個平常應該直連的網站(例如你常用的本地新聞或搜尋首頁),確認走 DIRECT、分流符合預期
若以上都 OK,代表遷移告一段落;你現在跑的是目前 Clash 生態系裡維護最積極、功能也最完整的一條核心線。
換完核心,用戶端也別忽略
不少人升級核心後,介面還停留在好幾年前的舊 GUI,結果 mihomo 新功能根本用不到。舊用戶端常見問題包括:
- 沒有
rule-providers的視覺化管理,只能一直手改 YAML - TUN 開關很繞,有時還要重開系統服務
- 核心版本鎖死,跟不上 mihomo 的修正版
- 介面過舊,沒有延遲圖表、流量統計等現在用戶習慣的功能
- 訂閱管理陽春,無法依節點群組自動測速挑快的
若你也有上述困擾,可以考慮換成和 mihomo 整合較深的現代用戶端。我們提供的 Clash 用戶端以 mihomo 為核心設計,支援一鍵更新核心、視覺化規則與 TUN 設定,不一定要手動改 YAML 才能完成本篇提到的調整。
免費下載 Clash 官方用戶端 →,全平台都有,多數人十分鐘內就能從下載到連線跑起來。