先選路線:圖形客戶端,還是 mihomo 內核
Linux 上的 Clash 生態分兩層。底層是內核,負責解析設定、分流流量,目前活躍維護的內核是 mihomo(原 Clash Meta);上層是圖形客戶端,把內核包進視窗,提供訂閱管理、節點切換與系統代理開關。兩條路線對應兩類環境:
- 桌面發行版(Ubuntu、Debian、Fedora 等,有圖形介面):安裝圖形客戶端。Clash Verge Rev 提供 deb 與 rpm 包,FlClash 提供 deb 包,裝完即用。
- 伺服器、WSL、最小化容器(無圖形介面):直接部署 mihomo 內核,用設定檔加 systemd 託管,配合 Web 面板查看狀態。
兩條路線共用同一份 YAML 設定語法,訂閱連結也通用,日後換路線不必重新整理設定。下文分別給出完整步驟。
桌面發行版:安裝圖形客戶端
Debian / Ubuntu 系(deb 包)
從下載頁取得對應架構的 deb 包後,在終端機執行:
sudo dpkg -i clash-verge_*_amd64.deb
sudo apt-get -f install # 僅當 dpkg 報依賴錯誤時執行
裝完從應用程式選單啟動,在訂閱頁貼上訂閱連結,更新後選擇節點,打開「系統代理」開關即可。GNOME 與 KDE 的系統代理由客戶端自動寫入,瀏覽器與大部分桌面應用隨即走代理。
Fedora / RHEL 系(rpm 包)
sudo dnf install ./clash-verge-*.x86_64.rpm
dnf 會自動補齊依賴,裝完後的訂閱匯入與開關流程與 deb 一致。
下載前先確認架構:絕大多數桌上型電腦與筆電是 x86_64(amd64),ARM 裝置選 arm64。終端機執行 uname -m 即可查看目前機器架構。
個別應用不讀系統代理設定(部分命令列工具、自帶網路堆疊的桌面應用),這時可開啟客戶端的 TUN 模式,由內核在系統層接管全部 TCP/UDP 流量。TUN 需要建立虛擬網卡,客戶端會請求管理員授權。
命令列環境:部署 mihomo 內核
伺服器與 WSL 沒有視窗,直接跑內核。整個過程四步:
-
取得二進位檔
從下載頁的內核區取得 mihomo 的 Linux 建置,按架構選 linux-amd64 或 linux-arm64,解壓後是單個可執行檔,無其他依賴。
-
安裝到系統路徑
執行
sudo install -m 0755 mihomo /usr/local/bin/mihomo,把檔案放到標準路徑並賦予執行權限。 -
準備設定目錄
約定目錄
/etc/mihomo,在其中放 config.yaml。訂閱連結的原始內容不能直接當設定用,需寫成 proxies、proxy-groups、rules 三段;更省事的寫法是用 proxy-providers 直接引用訂閱地址,內核會自動拉取並定時更新。 -
前台試執行
先執行
mihomo -d /etc/mihomo前台跑一次,確認設定無錯誤、埠正常監聽,再交給 systemd 託管。
一份最小可用設定如下:
mixed-port: 7890
allow-lan: false
external-controller: 127.0.0.1:9090
proxy-providers:
airport:
type: http
url: "https://example.com/subscribe"
interval: 86400
path: ./providers/airport.yaml
mixed-port 同時接受 HTTP 與 SOCKS5 請求;external-controller 是內核的 REST 介面,Web 面板靠它讀寫執行狀態,只監聽本機回環位址即可。
systemd 託管與開機自啟
新建單元檔案 /etc/systemd/system/mihomo.service:
[Unit]
Description=mihomo kernel
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
Restart=on-failure
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
隨後註冊並啟動:
sudo systemctl daemon-reload
sudo systemctl enable --now mihomo
journalctl -u mihomo -f # 追蹤執行日誌
enable --now 一條命令同時完成開機自啟註冊與立即啟動。此後每次修改設定,執行 sudo systemctl restart mihomo 使其生效。
TUN 模式的權限
TUN 需要建立虛擬網卡,一般使用者預設無此權限。兩種做法:一是按上面的單元檔案直接以 root 執行;二是給二進位檔授予網路管理能力,再以一般使用者身分執行:
sudo setcap 'cap_net_admin,cap_net_bind_service=+ep' /usr/local/bin/mihomo
部分容器環境(OpenVZ、未放權的 LXC)沒有 /dev/net/tun 裝置,TUN 不可用,只能退回 mixed-port 加應用層代理。若 systemd 以非 root 使用者執行,單元檔案裡需補 AmbientCapabilities=CAP_NET_ADMIN。
驗證代理是否生效
最直接的辦法是帶代理參數發一次請求:
curl -x http://127.0.0.1:7890 https://api.ip.sb
返回的出口 IP 與所選節點地區一致,說明鏈路已通。也可以把代理寫進 shell 環境,讓後續命令統一走代理:
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7890
想要圖形介面,可掛 Web 面板:把 metacubexd、zashboard 或 yacd 這類靜態面板檔案放進設定目錄的 ui 子目錄,瀏覽器訪問 http://127.0.0.1:9090/ui,即可查看活動連線、切換節點、測試延遲。面板只是內核介面的前端,關掉頁面不影響代理運行。
若 curl 回傳逾時,先確認內核行程在跑、連接埠在監聽,再檢查設定裡的 mixed-port 是否與請求連接埠一致;出口 IP 不變則多為分流規則把目標網域走了直連,把規則模式暫時切到全域再測一次即可定位。
WSL 與伺服器的兩點差異
WSL2
預設 NAT 網路下,WSL 與 Windows 各有獨立的回環位址。代理跑在 WSL 裡時,Windows 端要連它,需在設定裡設 allow-lan: true 並用 WSL 的 IP 訪問。更順手的做法是把客戶端裝在 Windows 端,WSL 裡 export 代理指向 Windows 主機 IP——/etc/resolv.conf 中的 nameserver 即主機位址。啟用 WSL 的 mirrored 網路模式後,兩側共享 localhost,上述繞路全部消失。
伺服器
伺服器沒有本機瀏覽器,面板透過 SSH 連接埠轉發訪問:
ssh -L 9090:127.0.0.1:9090 user@your-server
保持該會話,本機瀏覽器再訪問 9090 埠的 ui 路徑即可。
external-controller 不要監聽 0.0.0.0 暴露到公網。確有遠端管理需要時,在設定裡設 secret 欄位加訪問口令,並用防火牆限制來源 IP。
常見問題速查
- 連接埠被占用:
ss -ltnp | grep 7890查出占用行程,或在設定裡把 mixed-port 換成其他連接埠。 - 設定報錯:YAML 只認空格縮排,不能用 Tab;journalctl 日誌會給出出錯行號,按行號修正即可。
- 訂閱不更新:proxy-providers 的 interval 欄位控制自動更新間隔,單位秒;重啟服務可強制立即拉取。
- DNS 異常:在 config.yaml 的 dns 段啟用內核 DNS 並開 fake-ip,配合 TUN 模式,或把系統 DNS 指向內核監聽位址。
- 規則不命中:確認執行模式是 rule 而非 direct 或 global;Web 面板裡可查每條連線實際命中的規則鏈。
設定欄位的完整寫法可查閱站內 YAML 手冊;圖形客戶端的訂閱匯入細節與 Windows、macOS 基本一致,使用文件裡有對應章節。