Linux 設定 · · 約 17 分鐘閱讀

在 Fedora 上安裝 Clash Meta:systemd 開機自啟與 mixed-port 首配步驟(2026)

若你習慣在 Ubuntudeb 與圖形安裝精靈,換到 Fedora(以及相近的 RHEL 系)時,第一個落差通常是套件格式與預設路徑dnfrpm 的生態裡,不一定有與 Ubuntu 對等的官方 deb;而 Clash Meta/mihomo 這類核心,多數人會以單一二進位+設定檔+systemd長期維運。本篇以「能開機自啟、能讓桌面與終端機一次對齊本機代理埠」為目標,整理mixed-port 首配、工作目錄、systemd 使用者或系統服務兩種掛載方式,以及與 firewalldallow-lan 的邊界;並在文末銜接站內 Docker 走宿主機 Clash 與下載頁,避免與「純圖形客戶端按鈕教學」重疊。

1. 為什麼 Fedora 路線與 Ubuntu 不同

Fedora 預設使用 RPM 套件樹與 dnf 安裝流程,路徑習慣(例如 /etc/usr/local、使用者家目錄下的組態目錄)也與 Debian 系不完全相同。對 Clash Meta 而言,重點不是「有沒有一鍵 deb」,而是你是否能穩定回答三個問題:二進位放在哪設定與快取目錄是否可寫、以及由誰在開機後負責拉起程序。在 Fedora 上,最通用的答案幾乎永遠是 systemd

另一個常見誤會是把 Linux 桌面代理等同於「只要核心在跑就好」。實際上,瀏覽器與桌面環境會讀系統代理設定,終端機裡的 curlgitnpm 則往往要看環境變數或各自工具設定。若你只在設定檔裡開了埠,卻沒有把應用程式的出口對到同一個 mixed-port,表現會像「核心正常但一半軟體仍直連」。

若你同時在玩容器,請把本篇與 Docker 容器走宿主機 Clash 對照閱讀:那篇談的是閘道與 HTTP_PROXY 視角,本篇則專注在 Fedora 本機如何把 mihomo 安裝成「像系統服務一樣可預期」。

2. 取得 mihomo/Clash Meta 核心與安裝位置

實務上常見兩條路:上游發行的壓縮包或單一二進位(維護簡單、版本可控),以及社群 COPR/第三方 spec(省手動更新,但要自行評估維護者與簽章習慣)。本篇以前者為主,因為它最不依賴發行版當下的套件庫狀態,也最容易在 Rocky、Alma、RHEL 這類環境複製同一套流程。

建議將可執行檔放到 /usr/local/bin,並以 mihomoclash-meta 這類穩定檔名建立連結,避免每次更新版本號都要改 systemd 單元。一般使用者若無法寫入 /usr/local/bin,可改放在 ~/bin 並確保 PATH 含該目錄,但 systemd 系統服務較常假設路徑在全域可見位置。

若你希望先取得圖形客戶端或整合安裝包,請優先從本站 下載頁 依平台挑選;本篇聚焦在「核心+systemd」這條可審計、可自動化的路線,與圖形客戶端的按鈕名稱可能不同步屬正常現象。

3. 工作目錄、設定檔與權限

mihomo 需要讀取設定檔,並可能在執行目錄或指定目錄寫入快取、GeoIP、規則集等資料。你可以選擇系統級路徑(例如 /etc/mihomo)或使用者級(例如 ~/.config/mihomo)。若啟用 SELinux 且將可執行檔或資料放在非典型路徑,遇到拒絕寫入時,請先用一般權限與路徑排查,不要急著關閉整機 SELinux。

下列片段僅示意鍵名與相對關係,實際必填欄位、預設值與版本差異請以上游文件為準;重點是讓你看見 mixed-port 與其他埠欄位並存時的意義。

Example only — keys vary by mihomo / Meta version
mixed-port: 7890
port: 0
socks-port: 0
allow-lan: false
external-controller: '127.0.0.1:9090'

mixed-port 非零而 portsocks-port 設為 0 或關閉時,代表你希望同一個 TCP 埠同時承載常見的 HTTP 與 SOCKS 客戶端連線型態,這對桌面系統代理與許多開發工具最省事。若你同時手動指定多個埠,請留意防火牆開洞範圍與監聽介面(本機環回 vs 區網)。

4. mixed-port:讓 HTTP 與 SOCKS 共用同一監聽埠

mixed-port 想成「對外只開一個數字,對內自動判斷連線語意」。這能顯著降低你在 GNOME 設定裡填寫「HTTP 代理埠」與終端機裡填 ALL_PROXY 時出現的不一致。實務上建議先選一個不與其他本機服務衝突的埠(例如 7890 僅為慣例,並非標準),再用 ss -lntp 確認沒被占用。

若你會在區網分享代理給其他裝置,才需要認真看待 allow-lan 與介面綁定;單機桌面使用則建議維持 僅監聽 127.0.0.1 的保守預設,並避免把 external-controller 暴露到區網。控制 API 一旦可被他人觸及,風險不只是「被改規則」,還包含資料外洩與惡意下發。

與模式、DNS、規則的關係

mixed-port 只解決「流量從哪進核心」;進入核心後仍由 模式(Rule/Global 等)DNS規則與策略組決定從哪個節點出去。第一次上線建議先用最小可用設定:能載入訂閱、能解析 DNS、規則末尾有合理預設,再逐步開啟進階功能,否則你會難以判斷問題出在「沒走到代理」還是「代理後規則不對」。

5. systemd 使用者服務:登入後自啟與 linger

對桌面使用者而言,systemd --user 往往比全系統服務更合適:你的設定檔與訂閱檔案通常在家目錄下,使用者服務能以正確身份讀寫,不必把敏感資料複製到 /etc。建立單元檔時,請顯式指定 WorkingDirectoryExecStart,避免相對路徑在更新後找不到檔案。

Example user unit — adjust paths and binary name
# ~/.config/systemd/user/mihomo.service
[Unit]
Description=mihomo (Clash Meta) for current user
After=network-online.target

[Service]
Type=simple
WorkingDirectory=%h/.config/mihomo
ExecStart=/usr/local/bin/mihomo -d %h/.config/mihomo
Restart=on-failure

[Install]
WantedBy=default.target

啟用指令會是 systemctl --user daemon-reload,接著 systemctl --user enable --now mihomo.service。若你希望「圖形介面未登入時也要在背景跑」,需要了解 Fedora 上 loginctl enable-linger 的語意:它讓使用者背景服務在開機後仍被保留,但這也代表核心會在你未互動登入時持續監聽埠,請同步檢視安全邊界。

6. systemd 系統服務:開機即起(多用於單使用者伺服器)

若這台 Fedora 機器主要當作閘道或家用伺服器,且你希望無論是否有人登入圖形環境都維持代理可用,可改用 /etc/systemd/system/mihomo.service。此時請特別注意執行身份(UserGroup)、設定檔與快取目錄的擁有者,以及是否要把工作目錄放在 /var/lib 這類 FHS 建議位置。

系統服務的優點是啟動時機清楚、與網路目標相依關係好寫;缺點則是每次調整訂閱或規則,要嘛改系統可讀位置,要嘛處理跨使用者權限。對多使用者桌面主機,通常仍建議回到上一節的 使用者服務,把「誰的代理」與「誰的檔案」綁在一起。

7. GNOME/KDE 桌面代理與終端機環境變數

GNOME 內建網路代理設定中,通常會分別詢問 HTTP 與 HTTPS 代理位址。當你使用 mixed-port 時,兩者可以填同一組 127.0.0.1:埠號。若某些應用程式仍不吃系統代理,請改查該程式是否支援手動指定 SOCKS/HTTP,或是否需要 TUN 模式(該主題超出本篇最小首配範圍,建議另讀站內分流與模式專文)。

終端機方面,常見做法是匯出 http_proxyhttps_proxyall_proxy,並用 no_proxy 略過內網與公司私有網段。請注意大小寫變體(HTTP_PROXYhttp_proxy)在不同工具鏈的相容性;若你發現只有瀏覽器可走代理,第一個懷疑點往往是「殼層沒匯出變數」而非核心故障。

想從「工具鏈」角度補齊 Windows 上的對照,可讀站內其他平台教學作為方法論遷移;Linux 上則建議搭配 使用教學總覽 把訂閱、規則與模式一次串起來。

8. firewalld 與 allow-lan:什麼時候才要開埠

Fedora 預設啟用 firewalld 很常見。若你的 mihomo 只監聽 127.0.0.1,原則上不需要對外公開埠。當你把監聽改到區網介面、或開啟 allow-lan 讓其他裝置連入時,才需要評估是否要放行對應 tcp 埠,並搭配基本來源限制與認證機制。

這與「容器內經宿主機出口」不同:容器場景常見是走宿主機的區網 IP 或特殊 DNS,防火牆規則要處理的是 FORWARD/NAT 邊界;本篇單機首配則只要記住一句話:沒有監聽在對外介面,就不要開洞

9. 驗證與日誌:確認真的在聽 mixed-port

服務啟動後,先用 systemctl --user status mihomo.service(或你的單元名稱)確認狀態為 active,再用 ss -lntp 看監聽是否落在預期埠與介面。接著用 curl -x http://127.0.0.1:7890 https://www.example.com 這類最小連線測試驗證 HTTP 代理路徑;若你主要使用 SOCKS,請改用對應的 curl --socks5-hostname 參數組合。

日誌方面,journalctl --user -u mihomo.service -b 可檢視本次開機以來的使用者服務訊息;若你將日誌寫入檔案,請注意輪替與權限,避免長期運轉把家目錄塞滿。當你懷疑「規則沒命中」時,請先確認客戶端是否真的把流量送進 mixed-port,再進入 mihomo 的規則與 DNS 排查節奏。

10. 上游與授權(與下載入口分開說明)

mihomo 上游開發、Issue 與版本變更說明可參考 MetaCubeX/mihomo 儲存庫。這與「在哪裡下載安裝包」應分開理解:研究原始碼與回報問題走 GitHub;若要取得本站整理的客戶端與安裝入口,請優先使用 下載頁,避免把 Release 頁誤認成唯一官方分發渠道。

寫在最後

Fedora 這類滾動較快、預設安全機制完整的發行版上,把 Clash Meta/mihomo 收斂成「systemd 管生命週期、mixed-port 管進站口、設定檔管決策」三件事,長期維護成本通常低於到處找第三方套件卻說不清版本與路徑來源。相較於把代理功能塞在黑盒工具裡,這種結構至少讓你能用 systemctl statusjournalctl 與監聽埠檢查,快速判斷問題落在網路、權限還是規則。

若你接下來要處理的是容器或區網多裝置共享,請延續同一個 mixed-port 觀念去對齊環境變數與閘道路由;若你仍停留在「第一次把訂閱匯入、把模式調對」階段,建議回到 教學總覽 把基礎動線補齊。想先取得合適的客戶端再回頭做 systemd 微調,歡迎前往:→ 立即免費下載 Clash,開啟流暢上網新體驗

依主題相關度匹配的延伸閱讀,涵蓋同分類下的實戰配置文章。