核心架構
Clash(Mihomo)是基於 Go 語言開發的高性能規則分流代理核心引擎,理解其架構有助於編寫出更精準高效的設定。
架構概覽
Mihomo(原 Clash.Meta)核心由以下幾個核心子系統協同工作:
mixed-port可同時提供 HTTP+SOCKS5 混合埠。rules列表,對每條連線決策走代理還是直連。支援 DOMAIN、IP-CIDR、GeoIP、PROCESS-NAME 等 20+ 種比對條件,命中即停止。external-controller暴露 RESTful API,可即時切換代理節點、查看流量統計、重新整理設定。相容 Clash Dashboard、Yacd、MetaCubeXD 等 Web 控制面板。流量處理流程
一條網路請求從應用程式發出,到最終由 Clash 轉發,經歷以下處理鏈路:
198.18.x.x),應用程式發起連線時攜帶此假 IP,Clash 入站識別後還原網域名稱,再走規則引擎比對,徹底防止真實 IP 暴露給本地應用程式,從根本上杜絕 DNS 洩漏。代理模式
Clash 支援四種工作模式,透過設定檔的mode欄位或用戶端介面切換:
根據rules列表逐條比對,決定每個連線使用代理還是直連。國內網站直連保速,境外網站自動走代理,兼顧速度與隱私,是絕大多數使用者的最佳選擇。
mode: rule所有流量(包括國內)均透過代理伺服器轉發。適合需要完整出口 IP 一致性的場景(如海外帳號操作),但會導致國內存取速度下降。
mode: global所有流量不經過任何代理,直接發出,相當於關閉代理功能。通常用於排查代理本身是否影響連線,或臨時關閉代理而不結束用戶端。
mode: direct用 JavaScript 編寫完全自定義的路由邏輯,可存取請求的網域、IP、連接埠、程序名稱等所有屬性,實現遠超規則列表的靈活控制。
mode: script| 特性 | 系統代理(System Proxy) | TUN 模式 |
|---|---|---|
| 運作層級 | 應用層(Layer 7) | 網路層(Layer 3) |
| 覆蓋範圍 | 僅支援代理的應用程式(瀏覽器等) | 全部流量(遊戲、命令列、所有 APP) |
| 所需權限 | 一般使用者權限 | 需要管理員 / root 權限 |
| 設定複雜度 | 簡單,用戶端一鍵開啟 | 需要安裝網路驅動程式(自動) |
| 推薦場景 | 日常瀏覽器上網 | 遊戲加速、Steam、全域代理 |
DNS 機制
Clash 內建 DNS 解析器,透過精細控制 DNS 查詢來防止洩漏並實現更精準的分流:
dns: enable: true enhanced-mode: fake-ip # fake-ip | redir-host fake-ip-range: 198.18.0.1/16 listen: 0.0.0.0:1053 nameserver: - https://doh.pub/dns-query # DoH 國內 - https://dns.alidns.com/dns-query fallback: - https://1.1.1.1/dns-query # DoH 境外備用 - tls://8.8.8.8:853 fallback-filter: geoip: true geoip-code: CN
規則語法
Clash 規則系統是其最強大的功能之一,透過 YAML 格式精確控制每一條流量的走向。
規則格式
每條規則由三個部分組成,中間用英文逗號,分隔:
規則按由上而下的順序逐一比對,命中第一條即停止,未命中任何規則則使用最後一條MATCH保底。
規則類型詳解
DOMAIN,www.google.com,PROXYDOMAIN-SUFFIX,google.com,PROXYDOMAIN-KEYWORD,googleapis,PROXYDOMAIN-REGEX,^(www\.)?google\.com$,PROXYno-resolve參數可跳過 DNS 解析。IP-CIDR,192.168.0.0/16,DIRECT,no-resolveIP-CIDR6,2400:3200::/32,DIRECTGEOIP,CN,DIRECTGEOSITE,cn,DIRECTPROCESS-NAME,steam.exe,DIRECTPROCESS-PATH,/usr/bin/curl,PROXYtcp或udp。NETWORK,udp,REJECTDST-PORT,443,PROXYRULE-SET,gfw,PROXYMATCH,🚀 節點選擇🚀 節點選擇)外,還有三個內建關鍵字:DIRECT— 直接連線,不經由任何代理PROXY— 使用預設代理(等效於使用proxies中第一個節點)REJECT— 拒絕連線(廣告過濾常用)
策略組(proxy-groups)
策略組是 Clash 規則體系的核心,將多個節點組合成具有不同選路行為的邏輯組:
type: selectinterval設定測速間隔(秒),tolerance設定切換容差(ms)。type: url-testtype: fallbackconsistent-hashing(同網域固定節點)和round-robin(輪詢)兩種策略。type: load-balancetype: relay完整設定範例
以下是一個包含核心設定、代理節點、策略組和規則列表的完整config.yaml範例:
# ── 基礎設定 ────────────────────────────────────── mixed-port: 7890 # HTTP + SOCKS5 混合連接埠 allow-lan: false mode: rule log-level: info external-controller: 127.0.0.1:9090 # ── DNS ────────────────────────────────────────── dns: enable: true enhanced-mode: fake-ip nameserver: - https://doh.pub/dns-query # ── 代理節點 ──────────────────────────────────── proxies: - name: 香港 01 type: vmess server: hk1.example.com port: 443 uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx alterId: 0 cipher: auto tls: true network: ws ws-opts: path: /ws headers: Host: hk1.example.com # ── 策略組 ────────────────────────────────────── proxy-groups: - name: 🚀 節點選擇 type: select proxies: - ♻️ 自動選擇 - 香港 01 - DIRECT - name: ♻️ 自動選擇 type: url-test url: https://www.gstatic.com/generate_204 interval: 300 tolerance: 50 proxies: - 香港 01 # ── 規則列表 ──────────────────────────────────── rules: - GEOSITE,cn,DIRECT # 國內網域直連 - GEOIP,CN,DIRECT # 國內 IP 直連 - DOMAIN-SUFFIX,local,DIRECT # 區域網路直連 - IP-CIDR,127.0.0.0/8,DIRECT,no-resolve - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve - MATCH,🚀 節點選擇 # 其餘流量使用代理
協定支援列表
Clash(Mihomo)原生支援 20+ 種主流代理協定,相容絕大多數機場訂閱與自建節點方案。
支援協定一覽
傳輸層選項(Transport)
VMess、VLESS、Trojan 等協定支援在底層協定之上疊加多種傳輸方式,進一步增強流量偽裝能力:
主流協定對比
根據速度、抗封鎖能力和設定複雜度綜合對比,幫助您選擇最適合的協定:
| 協定 | 速度 | 抗封鎖 | 設定難度 | 適合場景 | 推薦度 |
|---|---|---|---|---|---|
| VLESS + Reality | 中等 | 自建節點首選 | 強力推薦 | ||
| Hysteria2 | 簡單 | 弱網 / 高延遲環境 | 強力推薦 | ||
| Trojan | 簡單 | 日常翻牆主力 | 推薦 | ||
| VMess + WS + TLS | 中等 | CDN 中轉場景 | 推薦 | ||
| TUIC v5 | 中等 | 低延遲小包場景 | 推薦 | ||
| Shadowsocks | 極簡 | 機場訂閱 / 入門 | 常用 | ||
| WireGuard | 較難 | 企業 VPN / Warp | 場景適用 |