Linux 安裝 Clash:桌面發行版與命令列環境部署 mihomo 全流程

涵蓋桌面發行版的圖形客戶端安裝,以及伺服器與 WSL 等純命令列環境下 mihomo 內核的部署、開機自啟與代理驗證步驟。

先選路線:圖形客戶端,還是 mihomo 內核

Linux 上的 Clash 生態分兩層。底層是內核,負責解析設定、分流流量,目前活躍維護的內核是 mihomo(原 Clash Meta);上層是圖形客戶端,把內核包進視窗,提供訂閱管理、節點切換與系統代理開關。兩條路線對應兩類環境:

兩條路線共用同一份 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 沒有視窗,直接跑內核。整個過程四步:

  1. 取得二進位檔

    從下載頁的內核區取得 mihomo 的 Linux 建置,按架構選 linux-amd64 或 linux-arm64,解壓後是單個可執行檔,無其他依賴。

  2. 安裝到系統路徑

    執行 sudo install -m 0755 mihomo /usr/local/bin/mihomo,把檔案放到標準路徑並賦予執行權限。

  3. 準備設定目錄

    約定目錄 /etc/mihomo,在其中放 config.yaml。訂閱連結的原始內容不能直接當設定用,需寫成 proxies、proxy-groups、rules 三段;更省事的寫法是用 proxy-providers 直接引用訂閱地址,內核會自動拉取並定時更新。

  4. 前台試執行

    先執行 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。

常見問題速查

設定欄位的完整寫法可查閱站內 YAML 手冊;圖形客戶端的訂閱匯入細節與 Windows、macOS 基本一致,使用文件裡有對應章節。

下載Clash