為什麼 Linux 桌面需要「客戶端+常駐」分工?

許多使用者在筆電或工作站安裝 Clash Meta(社群常稱 mihomo 核心)時,第一個痛點不是規則寫不好,而是「圖形介面關掉後核心也跟著停」或「重開機後要手動再點一次」。在 Windows 與 macOS 上,這類問題多半靠應用程式內建的開機啟動與服務模式處理;在 Linux 上則更常見兩層結構:一層是你看得見的桌面客戶端(負責訂閱、節點切換、日誌),另一層是應該由系統或使用者工作階段託管的背景行程,讓代理監聽埠與規則引擎不因關閉視窗而消失。

systemd 是現代 Debian、Ubuntu、Fedora、Arch 等發行版預設的初始化系統,能用一致的方式描述「何時啟動、崩潰後是否重啟、依賴網路是否就緒」。把 mihomo 放進 systemd 單元(unit),等於把「常駐」這件事交給作業系統的標準機制,而不是依賴桌面環境各自不同的自動啟動資料夾行為。對需要穩定分流的研究、開發或遠端工作情境,這種組合通常比單純依賴圖形程式內的「開機執行」更可靠。

先選堆疊:純核心、還是圖形 Mihomo 客戶端?

實務上有三種常見組合。第一種是只安裝 mihomo(或發行版套件名稱略有不同)二進位,搭配一份 config.yaml,由 systemd 直接執行;優點是依賴少、行為透明,適合已熟悉 YAML 與終端機的使用者。第二種是安裝帶圖形介面的客戶端(多數基於 Tauri/Electron,內嵌或外掛 mihomo 核心),優點是訂閱匯入、節點測試與模式切換都視覺化,與你在其他平台使用 Clash Verge 系列的體驗接近;可參考站上的Clash Verge Rev 安裝與使用教學對照概念,再把相同思路搬到 Linux 目錄結構即可。

第三種是「圖形客戶端負責編輯設定+手動啟停,另開一條 systemd 服務專門跑核心」,較少見但適合想分離「維護介面」與「上線服務」的進階使用者。無論哪一種,都建議你先確認核心與設定檔語法對齊 mihomo,而非停留在已停止演進的舊版 Clash Premium 慣例;遷移要點可一併閱讀Clash Meta 升級完全指南

在 Debian/Ubuntu 桌面取得軟體與權限

安裝來源大致分為:上游專案釋出的 AppImage/deb、社群打包的倉庫,或自行下載壓縮檔解包。以桌面使用來說,AppImage 與 deb 最省事:前者不需 root 即可試用,後者則較容易與系統選單整合。請優先從本站用戶端下載頁取得對應 Linux 套件或指引連結,避免使用來路不明的重新封裝檔。若你需要核對授權條款、原始碼或提交 Issue,可另外前往上游 GitHub 儲存庫;日常安裝與更新仍以可信分發頁為主。

首次啟用若涉及 TUN(虛擬網卡)或透明代理能力,Linux 通常會要求 CAP_NET_ADMIN 等能力,或由圖形客戶端提示你以 PolicyKit 授權。若你堅持完全無圖形除錯,請至少準備 journalctl --userjournalctl -u 查看 systemd 日誌的習慣,否則核心啟動失敗時很難從「沒畫面」推回原因。Wayland 與 X11 在權限提示路徑上略有差異,但與「核心是否真的在聽埠」無直接關係,排查時請分開看待。

設定檔放哪裡?與桌面客戶端共用目錄的注意事項

mihomo 預設會在工作目錄或 -d 參數指定的資料夾尋找 config.yaml。圖形客戶端通常會把設定放在使用者家目錄下的隱藏資料夾(名稱隨專案而異,可能在 ~/.config 樹狀結構中)。若你同時用手動 YAML 與圖形介面編輯,請確認兩邊指向同一份檔案,否則會出現「介面顯示已更新,但 systemd 啟動的仍是舊檔」的錯覺。

撰寫或調整規則時,建議搭配Clash YAML 配置深度解析理解 proxy-groupsrules 與 DNS 區塊的優先順序;在 Linux 上 Fake-IP 與本機 DNS 快取互動有時更敏感,若你發現只有瀏覽器正常、終端機或容器異常,多半要回到 DNS 與規則命中路徑檢查,而不是先怪 systemd。

推薦起手式:systemd 使用者服務(登入後常駐)

對桌面使用者而言,使用者層級的 systemd(加在 ~/.config/systemd/user/)通常最合適:它在圖形登入後啟動,不需要把金鑰與訂閱路徑放進全系統可讀位置,也不一定要動到 root。建立一個名為 mihomo.service 的單元,核心思路是:在網路大致就緒後執行二進位,指定設定目錄,並在失敗時自動重啟。

以下為示意內容,請將執行檔路徑與設定目錄改成你機器上的實際位置:

[Unit]
Description=Mihomo (Clash Meta) user daemon
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/bin/mihomo -d /home/yourname/.config/mihomo
Restart=on-failure
RestartSec=5

[Install]
WantedBy=default.target

接著在終端機執行(指令說明文字為中文,實際命令維持英文):重新載入使用者 systemd、啟用開機自動啟動、並立即啟動服務。若你使用圖形客戶端內建的「開機啟動核心」選項,請二選一,避免兩套機制同時拉同一個監聽埠造成衝突。

何時改用系統層級服務?權衡與安全邊界

若你希望在顯示管理員載入桌面之前就有本機代理埠可用(例如多使用者伺服器、或需要給系統服務走固定出口),可以改寫成 /etc/systemd/system/mihomo.service 並以 root 啟用。缺點是設定檔與訂閱更新流程必須更謹慎:任何能寫入該目錄的權限外洩,影響範圍會比單一使用者大。實務上,純桌面單使用者情境優先維持 user unit 即可。

系統層級單元也常與 CapabilityBoundingSet、專用系統帳號搭配,縮小被攻破後的橫向移動面;這屬於硬化(hardening)範疇,已超出入門教學,但若你長期對外暴露管理埠,值得另外研究。對一般桌面使用者,先把「能穩定啟動、日誌看得懂、重開機會自動回來」做好,再考慮進階安全細節。

TUN、iptables 與桌面整合:Linux 特有的檢查清單

在 Linux 上開 TUN,常見失敗原因包括:核心模組未載入、與其他 VPN 客戶端爭奪路由表、或 NetworkManager 覆寫了自訂路由。若 systemd 顯示服務已 active,但應用程式仍走直連,請先用 ip route 與客戶端日誌確認是否真的建立 TUN 介面,而不是只看「開關顯示已開」。部分圖形客戶端會在啟動 TUN 時另外呼叫 helper,這條路徑若沒被自動啟動工作階段繼承,也可能出現「手動按可以、重開機不行」的差異。

相較於僅依賴系統代理環境變數,TUN 能涵蓋更多不讀代理設定的程式,但對權限與發行版預設安全機制更敏感。若你暫時不需要全局接管,可先在純 HTTP/HTTPS 場景用系統代理或手動指定 HTTP(S)_PROXY,把地基打穩後再開 TUN,排查會單純許多。

重啟後斷代理:依序排除的八個位置

第一,確認 user systemd 是否已 enable,而不只是某次手動 start。第二,檢查圖形客戶端是否另外實作了開機啟動卻與 user service 命令列參數不一致。第三,查看 network-online.target 是否在你的網路環境下過早判定完成,必要時可微調單元依賴或加入短延遲(權衡是開機速度)。第四,確認設定目錄權限在重開機後仍可由該使用者讀取,沒有被加密家目錄或掛載失敗影響。

第五,檢查監聽埠是否被其他服務佔用。第六,若使用多份設定檔,確認沒有指向已刪除的路徑。第七,對照日誌中是否出現 GEO 資料、規則集或訂閱下載失敗導致核心退出。第八,若你最近升級發行版或核心,確認第三方模組與防火牆前端(如 ufw、firewalld)是否改寫了本機規則。把這八項當成固定清單,通常比重裝客戶端更能對症下藥。

延伸資源與文件入口

當常駐與監聽埠都穩定後,下一步是把規則與 DNS 調到符合你的隱私與效能目標。本站文件與說明頁整理了常見術語與觀念,可作為查詢索引;若你同時在多台裝置使用 Clash,也建議在每台機器各自檢查 systemd 與客戶端是否只有一條權威啟動路徑,避免設定打架。

結語:把「可見的介面」與「該在背景待命的核心」分開思考

Linux 桌面的優勢在於透明與可組合:你可以選擇圖形 Mihomo 客戶端降低上手門檻,也可以把 mihomo 當成純粹的網路服務由 systemd 管理。把常駐責任交給 user 或 system unit,能顯著降低「關掉視窗就斷線」「重開機忘記開」這類反覆發生的摩擦。相比功能發散或更新停滯的工具,持續演進的 mihomo 核心加上標準化的 systemd 生命週期,在長期維護成本上通常更划算。

若你希望先取得經過整理的安裝包與平台指引,可前往用戶端下載頁取得最新版本,再依本文步驟完成常駐設定。→ 立即免費下載 Clash,開啟流暢上網新體驗