大多數 GUI 用戶端已經內建了圖形介面,但如果你想更直觀地看到即時連線清單、每條連線的流量、節點延遲曲線,接入一個 Web 面板會比翻日誌方便得多。這一切的入口,就是 external-controller

開啟 external-controller

它會在本機開啟一個 RESTful API 服務,Web 面板透過這個介面讀取核心的即時狀態,本身不涉及流量轉發。

external-controller: 127.0.0.1:9090 secret: "設定一個存取金鑰"
如果把 external-controller 監聽位址改成 0.0.0.0 以便區域網路內其他裝置存取,一定要同時設定 secret,否則任何能存取到這個埠的人都能讀取甚至修改你的代理設定。

external-ui:內建一個靜態面板

部分核心支援 external-ui 欄位,指向一份打包好的面板靜態資源目錄,這樣存取 http://127.0.0.1:9090/ui 就能直接開啟面板,不需要額外部署。

external-ui: ./ui

面板能看到什麼

模組內容
Proxies所有節點及策略組,可查看/手動切換、發起測速
Connections目前所有活躍連線:目標位址、使用的節點、已用流量、連線時長
Logs即時日誌串流,規則命中、連線建立/中斷等事件
Rules目前載入的全部規則及規則集,方便核對比對順序
Traffic即時上下行速率圖表,直觀看到目前頻寬占用

常見的面板專案怎麼選

開源社群裡有多款成熟的 Web 面板專案可以直接接入使用,普遍都是純前端靜態頁面,部署方式也很簡單——下載打包好的靜態資源,設定 external-ui 指向對應目錄,或者直接用瀏覽器開啟對應的線上版本頁面,填入你的 external-controller 位址和 secret 即可連線。選擇時主要看兩點:介面是否清晰直觀,以及是否支援你正在用的核心版本的 API 欄位(不同核心分支偶爾會有 API 差異,面板版本太舊可能顯示不全)。

面板的安全強化建議

  • 務必設定 secret:哪怕只在本機 127.0.0.1 使用,養成設定金鑰的習慣也能避免以後誤改監聽位址時留下風險。
  • 不要把控制埠暴露到公網:如果確實需要遠端存取,優先透過 SSH 隧道或 VPN 轉發到本機埠,而不是直接把 external-controller 監聽在公網 IP 上。
  • 定期檢查面板來源:只使用來自官方儲存庫或知名開源專案的面板資源,避免使用來源不明的第三方打包版本。

手機上能不能用面板

可以,原理完全一樣——只要手機和執行 Clash 的裝置處於同一區域網路,用手機瀏覽器存取 http://核心所在裝置的區網IP:9090/ui(需要把 external-controller 監聽位址改成 0.0.0.0 並配合 secret)即可開啟同一個面板。不少人會把這個當作「遠端遙控」核心的方式:在電腦上跑核心,手機上開面板查看連線和流量,不用來回切換裝置。

用面板排查問題的思路

  1. 某個網站慢/連不上:在 Connections 裡找到對應連線,看它落在哪個節點,再單獨測這個節點的延遲。
  2. 懷疑規則比對錯了:在 Logs 裡開啟規則比對日誌等級,即時觀察某個網域具體命中了哪一條規則。
  3. 流量異常偏高:在 Connections 按流量排序,快速定位是哪個連線/程序在大量消耗頻寬。
如果用戶端本身沒有內建面板入口,也可以用瀏覽器直接開啟常見的開源 Web 面板專案,填入你的 external-controller 位址和 secret 即可連線使用。

面板和用戶端自帶介面有什麼區別

很多人會疑惑:用戶端本身就有圖形介面,為什麼還要額外接入 Web 面板?兩者的定位其實不太一樣。用戶端內建介面通常做了大量簡化,突出「一鍵連線」「快速切換節點」等日常最常用的操作,隱藏了大部分底層細節;而 External Controller + Web 面板暴露的是核心最原始的執行狀態,欄位更全、更新更即時,也支援透過介面做二次開發(比如寫個腳本定時抓取流量資料做統計)。日常使用用戶端自帶介面完全夠用,只有在需要深入排查問題或做自動化監控時,才有必要額外接入面板。

用介面做簡單的自動化監控

External Controller 提供的是標準 RESTful 介面,意味著你不僅可以用現成的 Web 面板查看,也可以自己寫腳本定期請求介面,把流量資料記錄下來做長期統計,或者在偵測到某個節點連續異常時觸發通知。這部分屬於進階玩法,不是必需操作,但如果你對自己的網路使用情況有更精細的監控需求,這是一個值得探索的方向,比反覆手動開啟面板查看要省心得多。

多裝置共用同一個面板

如果家裡有多台裝置(電腦、路由器、NAS)都跑著獨立的 Clash 執行個體,理論上也可以給每一個執行個體都單獨分配一個 external-controller 埠,再用同一個面板專案、切換不同的連線位址來分別查看,不需要為每個執行個體單獨部署一份面板。這種「一個面板管多個執行個體」的用法在有路由器旁路由或多節點部署場景下會比較常見。

小結

External Controller 本質是核心對外暴露的一層「可觀測性」介面,不需要額外的效能負擔就能拿到連線層級的詳細資料。配合面板使用之後,很多「感覺網速變慢了」「是不是走錯節點了」這類模糊的問題,都能變成可以直接觀察驗證的具體現象。