系統查閱手冊

Clash 全平台安裝設定大全

涵蓋 Windows、macOS、Android、iOS 與 Linux 的下載、安裝、訂閱匯入、系統代理、TUN 模式與平台故障排除。本頁依章節整理完整細節;若只想盡快完成首次連線,可先依照快速上手教學完成主要操作,再回到本頁處理平台差異與設定限制。

一、安裝前的通用準備工作

先區分客戶端、核心與設定檔

Clash 的實際使用流程由三個部分組成。圖形客戶端負責顯示設定、切換策略、控制系統代理與管理更新;核心負責解析規則、建立連線、處理 DNS 與 TUN 流量;設定檔則保存代理入口、策略組、分流規則、連接埠與 DNS 參數。多數桌面與行動客戶端已經內建相容核心,一般使用者不需要另外下載 Mihomo。只有在伺服器、路由器、容器環境,或需要自行維護服務程序時,才應直接部署核心。

訂閱連結也不是客戶端自動產生的內容。它通常由網路服務提供者提供,客戶端只負責讀取連結並轉換成本機設定。公開程式碼儲存庫、客戶端官方網站與本站下載頁都不提供可直接使用的代理訂閱。收到訂閱網址後,應將其視為敏感資訊,不要放入截圖、公開工單、命令歷史共用檔案或可公開存取的程式碼儲存庫。若只取得一份 YAML 檔案,也可以匯入本機設定,不必先轉換成訂閱連結。

選擇與裝置相符的客戶端

首次安裝建議優先選擇圖形客戶端。Windows、macOS、Android 與 iOS 可先查看 Clash Plus;Windows 和 macOS 也可依介面偏好選擇 Clash Verge Rev、FlClash 或 Clash Nyanpasu;Android 可選 Clash Meta for Android、FlClash 或 Surfboard;Linux 桌面可選 Clash Verge Rev 與 FlClash。Clash for Windows 與 ClashX Meta 已停止維護,僅適合處理舊有環境,不建議作為新安裝的起點。所有可用入口集中在客戶端下載頁,不要依照舊教學中的檔名判斷目前套件是否適用。

下載前先確認處理器架構。Windows 常見裝置使用 x64;Windows on ARM 裝置需要確認客戶端是否提供相應版本。Apple Silicon Mac 使用 arm64 架構,舊款 Intel Mac 使用 x64。Android 安裝包常見 arm64、arm 與通用版本,近年的主流手機通常是 arm64,但不應只憑品牌判斷。Linux 還要同時區分 CPU 架構與套件格式:Debian、Ubuntu 常用 deb,Fedora 系列發行版常用 rpm;壓縮包則需要自行設定可執行權限與服務管理。

平台 優先選擇 安裝前確認 流量接管方式
Windows Clash Plus x64 架構、系統管理員權限需求 系統代理或 TUN
macOS Clash Plus Apple Silicon 或 Intel 系統代理或 TUN
Android Clash Plus CPU 架構、系統 VPN 權限 本機 VPN 服務
iOS Clash Plus App Store 帳號與系統權限 Network Extension
Linux Clash Verge Rev 發行版、桌面環境、架構 桌面代理、TUN 或服務程序

整理安裝所需資訊

開始前準備訂閱連結或 YAML 檔案、裝置管理員權限、可正常連線的基礎網路,以及一個用來驗證結果的瀏覽器。公司或校園裝置可能受到管理政策限制,無法修改代理、VPN、網路擴充功能與憑證設定;此時即使客戶端安裝成功,也未必能變更系統網路狀態。不要連續反覆開啟多個同類客戶端。兩個程式同時監聽相同連接埠、寫入系統代理或建立 TUN 介面時,常會出現啟動失敗、網路迴圈,以及退出後無法恢復連線等問題。

預設設定經常使用 mixed-port 作為 HTTP 與 SOCKS 的統一入口。連接埠值由設定決定,常見範例是 7890,但應以客戶端介面顯示的數值為準。手動填寫瀏覽器或終端機代理時,主機通常是本機迴圈位址 127.0.0.1,連接埠則必須與正在執行的設定一致。不要把訂閱服務的遠端連接埠誤填到系統代理中,也不要把區域網路位址作為預設監聽位址,除非確實需要讓其他裝置連入。

理解規則、全域與直連模式

規則模式會依照設定中的 rules,由上到下比對網域、IP、程序或規則集,並將連線交給指定策略組,是日常使用的預設選擇。全域模式會忽略分流規則,把可代理流量統一交給全域策略,適合短時間判斷規則是否誤判,但不適合長期使用。直連模式會繞過代理,主要用於恢復基礎網路或確認故障是否來自客戶端。切換模式不會修復無效訂閱,也不會自動替換策略組中不可用的選項。

匯入後應先查看策略組。常見組名包括 Proxy、Auto、Streaming、Final 與 REJECT。手動選擇策略組時,必須明確選取一個可用策略;自動測試組會依照設定中的測試方式更新選擇;Final 通常承接前面規則都未命中的連線;REJECT 用於拒絕符合條件的流量。不同訂閱產生的名稱可能不同,操作時應依照組別類型與用途判斷,不能機械式尋找固定的中文按鈕。

二、Windows 下載、安裝與系統代理設定

下載與安裝圖形客戶端

Windows 新安裝可從Windows 客戶端區選擇 Clash Plus。也可以使用 Clash Verge Rev、FlClash 或 Clash Nyanpasu。Clash for Windows 已停止維護,僅應在必須相容舊設定或移轉歷史資料時使用。下載完成後執行安裝包;若系統跳出使用者帳戶控制提示,應確認檔案來源與目前操作,再決定是否授權。安裝目錄盡量使用一般本機磁碟路徑,避免放在暫存目錄、同步磁碟或受企業政策限制的資料夾中。

部分客戶端提供目前使用者安裝與所有使用者安裝。前者通常不需要持續使用管理員權限,後者方便多個帳戶共用程式檔案,但設定資料仍可能分別儲存在使用者目錄。若準備啟用 TUN、安裝服務或設定開機啟動,客戶端可能在首次操作時要求管理員權限。僅開啟傳統系統代理時,通常不需要一直以管理員身分執行。長期強制以管理員身分執行,會讓拖放、瀏覽器呼叫與一般使用者目錄存取出現額外限制,不應把它當成通用修復手段。

匯入訂閱並確認設定已啟用

進入設定檔或 Profiles 頁面,選擇從 URL 匯入,將完整訂閱網址貼到輸入框後執行下載。匯入成功不代表設定已啟用,還要在設定清單中選取剛匯入的項目,讓它成為目前設定。若使用本機 YAML,請選擇匯入本機檔案,或將檔案放入客戶端允許的設定目錄。直接編輯客戶端內部快取檔案,可能在訂閱更新時被覆寫;需要長期保留的自訂規則,應使用客戶端提供的覆寫、合併或指令碼功能。

設定啟用後,依序檢查代理模式、策略組與連接埠。規則模式適合日常使用。開啟 Proxy 等手動策略組,選擇訂閱中實際存在的策略;若設定包含 Auto 或 url-test 組,可先觸發一次更新。不要只以介面是否顯示綠色狀態作為唯一判斷,仍需在後續驗證實際連線。若設定下載後清單為空,通常是訂閱回傳格式、授權狀態或網路存取問題,而不是系統代理開關造成的。

系統代理與 TUN 的適用範圍

Windows 系統代理會將本機代理位址寫入系統設定。遵循 WinINET 或系統代理設定的瀏覽器與桌面應用程式會自動使用它,但部分遊戲、命令列工具、商店應用程式及自行實作網路堆疊的軟體可能忽略該設定。啟用後可在 Windows 的代理設定中看到本機位址與連接埠。正常退出客戶端時通常會恢復設定;若程式被強制結束或系統異常關機,可能留下指向已停止連接埠的代理項目,結果是所有網頁都無法開啟。

TUN 模式透過虛擬網路介面接管更廣泛的 IP 流量,適合不讀取系統代理的應用程式。首次啟用可能會安裝驅動程式或系統服務,並要求管理員授權。開啟後應觀察路由表、DNS 與防火牆是否正常,不要同時執行其他會建立 TUN 或全域 VPN 介面的軟體。系統代理與 TUN 能否同時開啟取決於客戶端實作;初次排查時,建議只保留一種接管方式,確認穩定後再決定是否組合使用。

命令列、終端機與開發工具

PowerShell、命令提示字元、Git、套件管理器與開發語言執行環境不一定會讀取 Windows 系統代理。需要時可在目前終端機工作階段設定環境變數,連接埠應替換為客戶端目前的 mixed-port。暫時變數只會影響該終端機及其子程序,關閉視窗後即失效,適合測試;在寫入使用者層級環境變數前,應確認不會讓離線開發、區域網路服務或容器工具走錯路徑。

$env:HTTP_PROXY="http://127.0.0.1:7890"
$env:HTTPS_PROXY="http://127.0.0.1:7890"
$env:ALL_PROXY="socks5://127.0.0.1:7890"

git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890

之後停用客戶端時,也應刪除持久化的 Git 代理設定,否則 Git 會繼續連線到本機已關閉的連接埠。可使用 git config --global --unset http.proxy 與對應的 HTTPS 命令清理。終端機能存取而瀏覽器無法存取,優先檢查系統代理、瀏覽器擴充功能與安全軟體;瀏覽器能存取而終端機無法存取,則重點檢查環境變數、Git 設定與工具本身的代理欄位。

Windows 特有的故障範圍

連接埠被占用是 Windows 上常見的啟動失敗原因。若客戶端日誌顯示位址已被使用,應先確認是否有另一個 Clash 執行個體或殘留程序,再決定結束程序或修改 mixed-port。完整定位方法可參考連接埠占用排查步驟。修改連接埠後,系統代理、瀏覽器手動代理、終端機環境變數與區域網路裝置都必須同步調整。

退出後網路中斷時,先關閉 Windows 手動代理,再檢查是否遺留虛擬網卡、代理環境變數或其他 VPN。不要立即重設所有網路元件,因為這會同時清除虛擬交換器、靜態 DNS 與開發環境設定。應先確認客戶端程序已結束,再逐層恢復:系統代理、DNS、預設路由、TUN 服務。若只在休眠喚醒後失效,可先重新啟動客戶端核心,再重建 TUN;頻繁重裝通常無法解決由路由競爭或安全政策引起的問題。

三、macOS 安裝、網路擴充功能與代理切換

依處理器架構選擇安裝包

下載 macOS 版本前先開啟「關於這台 Mac」確認晶片類型。Apple Silicon 對應 arm64 版本,Intel 處理器對應 x64 版本。新安裝可從macOS 客戶端區選擇 Clash Plus,也可使用 Clash Verge Rev 或 FlClash。ClashX Meta 已停止維護,主要用於舊有環境移轉。選錯架構可能導致程式無法啟動、依賴轉譯層執行或輔助服務安裝失敗,不應只憑檔名中是否出現 macOS 判斷相容性。

常見安裝方式是開啟磁碟映像檔,將應用程式拖曳到「應用程式」資料夾,然後從該資料夾首次啟動。不要長期直接從下載資料夾或掛載的磁碟映像檔執行,否則自動更新、登入時啟動與輔助服務路徑可能不穩定。若系統阻止開啟,應先核對下載來源,再到「隱私權與安全性」查看相關提示。不要為了解決單一應用程式的授權問題而全面降低系統安全設定。

匯入設定與選單列操作

進入 Profiles 或設定頁面,透過 URL 匯入訂閱,或匯入本機 YAML。下載完成後明確選取設定,再進入策略頁面選擇 Proxy、Auto 或設定中定義的其他組別。macOS 客戶端通常常駐於選單列,關閉主視窗不等於核心停止;排查連接埠占用或代理殘留時,需要從選單列執行退出,或在活動監視器中確認相關程序是否仍在執行。

訂閱更新會重新取得遠端內容。若客戶端支援自動更新間隔,應依照服務提供者的更新方式設定,不宜設定過於頻繁的輪詢。遠端設定與本機修改同時存在時,下一次更新可能覆蓋直接編輯的內容。需要補充分流規則、DNS 或指令碼時,優先使用覆寫設定。匯出包含完整代理資訊的設定檔前,應確認接收位置與存取權限。

系統代理的運作方式

開啟系統代理後,客戶端會修改目前網路服務的 Web 代理與安全 Web 代理設定。Safari 和遵循系統設定的應用程式通常會直接生效,但某些命令列工具、沙盒應用程式及自行管理連線的軟體不會讀取這些設定。切換 Wi-Fi、乙太網路、個人熱點或新增網路服務後,應重新確認代理狀態,因為 macOS 的代理設定與特定網路服務相關。

可以使用 scutil --proxy 查看系統目前讀取到的代理資訊。該命令只能說明設定是否寫入,不代表本機連接埠能接受連線,也不代表策略組已有可用選項。若代理位址仍在但客戶端已退出,可先從客戶端重新開啟再正常關閉,讓它執行恢復流程;也可以在系統網路設定中手動關閉對應代理項目。不要同時讓瀏覽器擴充功能、自動代理設定檔與客戶端系統代理互相覆蓋。

scutil --proxy
networksetup -listallnetworkservices
lsof -nP -iTCP:7890 -sTCP:LISTEN

TUN、系統擴充功能與權限

macOS 的 TUN 模式通常需要安裝輔助服務、建立虛擬介面或取得網路擴充功能權限。首次啟用時,系統可能要求輸入管理員憑證,並在隱私權與安全性設定中確認。授權完成後仍應回到客戶端檢查核心是否真正啟動。若按鈕短暫開啟後自動關閉,應查看日誌中的權限、路由、DNS 或介面建立錯誤,而不是反覆點擊。

TUN 可以涵蓋不遵循系統代理的應用程式,但也更容易與其他 VPN、企業安全客戶端、虛擬機器網路及容器網路發生路由衝突。排查時先退出其他會建立預設路由或 DNS 代理的程式,只保留一個流量接管工具。若區域網路印表機、NAS 或開發伺服器無法存取,應檢查設定中的私有位址直連規則與繞過路由,而不是直接將所有流量改成直連。

終端機代理與憑證範圍

Terminal、Homebrew、Git、curl 與語言套件管理器可能需要個別設定代理。可在目前 shell 中匯出 HTTP、HTTPS 與 ALL_PROXY。若使用 zsh 並將變數寫入設定檔,也應準備取消設定的方法。長期保留代理變數會讓終端機在客戶端未啟動時顯示連線被拒絕,也可能影響存取本機開發伺服器。

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

curl -I https://example.com

unset http_proxy https_proxy all_proxy

一般 Clash 代理不需要為了基本連線安裝自訂根憑證。只有明確使用 HTTPS 解密、指令碼除錯或特定工具鏈時,才會涉及憑證信任。遇到 TLS 錯誤時,先核對系統時間、網域解析、代理策略與應用程式自己的憑證儲存區,不要將關閉憑證驗證作為長期方案。公司裝置上的憑證與網路擴充功能可能受管理設定控制,這類限制應由裝置管理員處理。

四、Android 安裝、VPN 權限與背景執行

選擇安裝包並完成安裝

Android 可從Android 客戶端區選擇 Clash Plus,也可使用 Clash Meta for Android、FlClash 或 Surfboard。安裝包可能依 arm64、arm 與通用架構提供。近年的主流裝置通常採用 arm64,但舊裝置、電視盒與模擬器可能不同。無法確定時可使用客戶端提供的通用版本;若系統提示解析套件失敗,應同時檢查架構、系統版本、檔案是否完整下載,以及裝置是否允許安裝此來源的應用程式。

透過瀏覽器或檔案管理器安裝時,Android 會要求為目前來源授予安裝權限。安裝完成後可以撤銷該來源權限,不影響客戶端後續執行。若系統已安裝相同套件名稱但簽章不同的版本,可能會拒絕覆蓋安裝。此時先匯出需要保留的設定,再解除安裝舊應用程式並重新安裝。不要假設解除安裝前的應用程式資料一定會自動恢復,尤其是本機覆寫、指令碼與手動匯入的 YAML。

匯入訂閱並建立本機 VPN

開啟客戶端後,在設定頁面新增訂閱 URL,填寫方便識別的名稱並執行更新。更新完成後選擇該設定作為目前設定,再進入代理組選擇策略。首次建立連線時,Android 會顯示 VPN 連線要求;這是系統授予應用程式建立本機 VPN 介面的權限。確認後,狀態列通常會出現 VPN 圖示。該圖示只代表介面已建立,仍需透過瀏覽器或客戶端日誌驗證流量是否成功轉送。

Android 通常一次只允許一個一般 VPN 服務處於啟用狀態。若系統已連線至其他 VPN、企業工作資料網路或廣告封鎖工具,新連線可能取代舊連線,或遭系統拒絕。私有 DNS 與 Clash 內部 DNS 也可能形成不同的解析路徑。出現網域無法開啟但直接存取 IP 正常時,應暫時檢查私有 DNS 設定,並確認設定中的 nameserver、fallback 或 fake-ip 行為。

應用程式分流與繞過設定

行動客戶端通常提供依應用程式選擇代理、繞過,或僅代理指定應用程式的功能。此功能適合讓銀行、區域網路控制、投放螢幕或對 VPN 敏感的應用程式保持直連,也適合只接管瀏覽器與通訊工具。修改應用程式清單後,需要重新建立 VPN 介面才能確保規則生效。系統應用程式可能由多個套件組成,不能只憑桌面圖示名稱涵蓋所有相關程序。

規則模式仍由設定規則決定目標連線的去向,應用程式分流則在更前一層決定某個應用程式是否進入 Clash。兩者不要混淆。某個應用程式設定為繞過後,其流量不會再進入網域規則,即使規則明確寫了代理也不會生效。排查單一應用程式時,應先檢查應用程式分流清單,再檢查規則命中與策略組,最後檢查該應用程式是否使用 QUIC、自訂 DNS 或憑證固定。

背景限制與連線被系統回收

Android 裝置製造商經常會對背景活動、電池使用與自動啟動施加額外限制。常見表現包括鎖定螢幕一段時間後連線失效、清除最近使用的工作後 VPN 消失,以及切換行動網路後無法恢復。應在系統設定中允許客戶端於背景執行,依裝置提供的選項關閉過度的電池最佳化,並允許必要的自動啟動。不同製造商的選單名稱差異很大,但核心目標是避免系統凍結客戶端程序或限制其 VPN 服務。

永遠開啟的 VPN 可以由 Android 系統在網路變更後嘗試恢復,但在確認設定穩定前,不宜同時啟用「封鎖未使用 VPN 的連線」。如果訂閱失效、客戶端崩潰或核心啟動失敗,該選項可能導致裝置完全無法連線。先驗證 Wi-Fi、行動網路、休眠喚醒與重新啟動後的行為,再決定是否啟用嚴格模式。需要暫時恢復網路時,應先從系統 VPN 頁面中斷連線,而不是只關閉客戶端介面。

熱點、區域網路與 IPv6

手機開啟熱點後,連線至熱點的裝置是否經過 Clash,取決於系統版本、客戶端能力與轉送實作。一般 Android VPN 通常只保證本機應用程式流量,不應預設認為熱點下游裝置也會被接管。需要分享時,應確認客戶端是否明確提供熱點轉送或允許區域網路連線,並在下游裝置手動設定手機區域網路位址與代理連接埠。此時還要允許應用程式監聽區域網路,並注意公共網路中的存取風險。

部分行動網路優先使用 IPv6。若設定只提供 IPv4 DNS,或規則只涵蓋 IPv4,可能出現不同應用程式表現不一致的情況。不要直接關閉系統 IPv6 作為長期處理方式。應先確認核心 IPv6 開關、DNS 回應、規則匹配與代理入口是否支援對應連線。若日誌顯示連線嘗試停留在無法到達的 IPv6 位址,可暫時調整設定以便定位,再依網路環境決定是否啟用雙協定堆疊。

Android 端日誌是判斷故障層級的重要依據。設定解析錯誤通常會在核心啟動前出現;DNS 錯誤會顯示解析失敗或逾時;策略問題會顯示規則命中後連線失敗;應用程式被排除時,可能完全沒有對應請求。依照這四個層級排查,比反覆更換客戶端更容易定位原因。

五、iOS 安裝、設定匯入與隨選連線

透過 App Store 安裝 Clash Plus

iPhone 與 iPad 可在iOS 下載區進入 Clash Plus 的 App Store 頁面,客戶端官方網站為 clashplus.io。安裝完成後首次啟動時,系統可能要求新增 VPN 設定。該授權用於建立 Network Extension,不代表所有連線都已成功代理。授權後仍需匯入設定、選擇策略並啟動連線。

iOS 上的網路接管由系統擴充功能管理,不使用桌面系統代理開關。狀態列或控制中心出現 VPN 圖示,表示擴充功能處於連線狀態。即使關閉應用程式主介面,擴充功能仍可能繼續執行;若從系統設定中斷連線,應用程式內的狀態也應同步更新。排查時需要同時查看應用程式頁面與「設定」中的 VPN 狀態,避免只根據其中一個介面判斷。

匯入訂閱與本機設定

在設定頁面新增訂閱 URL,執行更新後選取該設定。若訂閱連結是從其他應用程式複製而來,應檢查首尾是否多出空格、換行,或遭聊天軟體截斷。透過檔案 App 匯入 YAML 時,可使用系統分享選單傳送至 Clash Plus,接著在設定清單中確認匯入結果。若設定檔引用外部規則集,首次載入時還需要下載相關資源;主 YAML 成功匯入,不代表所有規則資源都已準備完成。

策略組的選擇邏輯與其他平台相同。規則模式依規則分流,手動組需要選定實際策略,自動組則依設定中的測試方式更新。行動網路環境變化較頻繁,某個策略在 Wi-Fi 下可用,不代表在行動網路下也能建立連線。遇到單一網路失效時,應先保持設定不變,對比 Wi-Fi 與行動網路日誌,避免同時修改 DNS、模式與策略而無法判斷變數。

隨選連線與系統網路切換

隨選連線可依系統網路狀態自動啟動擴充功能,適合已驗證穩定的設定。啟用前先手動完成一次完整連線,並分別測試 Wi-Fi、行動網路與鎖定螢幕後恢復。若隨選規則設定不當,可能在可信任的區域網路中也自動接管,影響印表機、投放螢幕與家庭裝置存取。對區域網路有明確需求時,應保留私有位址直連規則,並檢查是否已授予本機網路權限。

iOS 在網路切換、低電量與系統資源緊張時,可能會重新建立網路擴充功能。短暫斷線後應先等待擴充功能重新協商,再查看應用程式日誌。若反覆卡在連線中,可以從系統設定中斷 VPN,返回客戶端重新啟動。不要同時保留多個處於隨選啟用狀態的 VPN 設定,否則系統的選擇行為會難以判斷。

DNS、QUIC 與應用程式差異

Safari、原生應用程式與第三方瀏覽器可能採用不同的連線策略。部分應用程式會優先嘗試 HTTP/3 或自訂解析,表現為瀏覽器可用但特定應用程式逾時。設定中的 DNS 模式、規則與 UDP 支援會共同影響結果。若關閉 UDP 後某個應用程式恢復,表示問題可能位於 UDP 轉送或 QUIC 路徑;這只是定位線索,不應長期以停用所有 UDP 取代修復。

fake-ip 模式會為網域回傳保留位址,再由核心還原網域並匹配規則。它通常能提高分流一致性,但區域網路探索、少數裝置控制應用程式與特殊網域可能需要加入過濾清單。redir-host 更接近真實 DNS 回傳,相容性思路不同。兩種模式沒有適用於所有網路的固定結論,應依設定規則、區域網路需求與日誌選擇。關於洩漏與 nameserver 的完整檢查,可參考DNS 檢測與設定說明

耗電、背景與設定維護

網路擴充功能持續處理連線會消耗一定電量,規則數量、DNS 查詢、日誌層級與網路品質都會影響實際表現。日常使用不應長期保持 debug 日誌;詳細日誌適合短時間重現問題,完成排查後應恢復一般層級。若耗電量突然增加,先檢查是否出現連線重試、DNS 迴圈或多個自動測試組高頻執行,而不是只看 VPN 圖示存在的時間。

訂閱更新前可記錄目前策略組的選擇。部分設定更新會重建策略組,舊選擇可能因名稱變更而回到預設項目。更新後若突然無法存取,應依序確認設定是否啟用、策略組是否仍有選項、規則資源是否下載完成,以及擴充功能是否重新建立。刪除並重新安裝應用程式會同時清除本機覆寫與歷史日誌,應放在備份設定與基礎排查之後。

iOS 端不像桌面系統那樣能直接查看完整路由表與監聽程序,因此更依賴客戶端日誌與對照測試。建議一次只改變一個條件:先更換策略,再更換模式,最後檢查 DNS。若在同一步驟同時重建設定與切換網路,即使最後恢復,也無法確認真正的故障來源。

六、Linux 桌面客戶端與核心服務部署

桌面環境的安裝選擇

Linux 桌面可從Linux 下載區選擇 Clash Verge Rev 或 FlClash。安裝前確認發行版、CPU 架構與套件格式。Debian、Ubuntu 及其衍生系統通常使用 deb,Fedora、RHEL 系列發行版常見 rpm。使用套件管理器安裝本機套件時,可以讓系統一併檢查相依性;直接解壓縮可執行檔則需要自行處理桌面入口、權限、自動啟動與更新。

不同桌面環境對系統代理的支援並不一致。GNOME、KDE 與輕量桌面寫入代理設定的位置不同,部分應用程式讀取環境變數,部分應用程式讀取桌面設定,還有些應用程式完全忽略兩者。因此圖形客戶端顯示「系統代理已開啟」後,仍要分別驗證瀏覽器、終端機與目標應用程式。Wayland 或 X11 通常不會直接決定代理能力,但會影響托盤圖示、授權視窗與桌面整合表現。

匯入設定並驗證監聽連接埠

圖形客戶端的訂閱匯入流程與其他桌面平台相同:新增 URL、更新、選取設定、選擇策略組,再開啟系統代理或 TUN。若使用核心,應將設定儲存在權限受控的目錄,並以命令列指定路徑啟動。啟動前可先執行設定測試,避免服務反覆重新啟動。不同 Mihomo 版本的參數應以目前程式的說明資訊為準,常見啟動形式如下。

mihomo -t -f /etc/mihomo/config.yaml
mihomo -d /etc/mihomo

ss -lntp | grep 7890
journalctl -u mihomo --no-pager -n 100

-t 用於檢查設定是否能夠解析,-f 指定單一設定檔,-d 指定工作目錄。工作目錄內可能包含快取、規則集與資料庫,執行使用者必須擁有所需的讀寫權限。不要為了消除權限錯誤,直接將整個目錄改成所有使用者皆可寫入。服務程序應使用專用低權限帳戶,只有在建立 TUN、修改路由或繫結受限資源時,才授予必要能力。

systemd 服務與自動啟動

伺服器或長期執行的桌面主機可使用 systemd 管理核心。服務應在基礎網路可用後啟動,並在異常退出時以合理間隔重試。更新設定前先執行語法檢查,再重新載入或重新啟動服務。以下範例假設二進位檔與設定目錄已依對應路徑準備完成,實際使用者名稱與路徑需要依本機環境調整。

[Unit]
Description=Mihomo proxy core
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=mihomo
Group=mihomo
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
Restart=on-failure
RestartSec=5
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target

儲存為服務單元後,先執行 systemctl daemon-reload,再啟動並檢查日誌。自動啟動應在手動執行穩定一次後再開啟。若服務一啟動就反覆失敗,先停止自動重試,直接執行設定測試;持續重新啟動會快速塞滿日誌,也可能反覆修改路由。升級服務時應保留舊二進位檔與設定備份,以便發生相容性問題時回復。

環境變數、桌面代理與 TUN

終端機工具可使用 http_proxyhttps_proxyall_proxy。變數名稱同時存在大小寫形式時,不同工具的讀取規則可能不同。伺服器上的 systemd 服務不會自動繼承使用者 shell 設定,需要在服務單元或專用環境檔案中明確設定。對於只需代理單一命令的情況,建議將變數限定在命令前,避免影響整套系統。

http_proxy=http://127.0.0.1:7890 \
https_proxy=http://127.0.0.1:7890 \
curl -I https://example.com

all_proxy=socks5://127.0.0.1:7890 git fetch

Linux TUN 部署涉及虛擬介面、策略路由、DNS 與防火牆規則。核心需要存取 /dev/net/tun,並取得建立介面與修改網路設定所需的權限。在容器內執行時,還要明確傳入 TUN 裝置與網路能力。不要在不理解目前 nftables、iptables 或策略路由的情況下,複製整套清空規則的命令,這可能中斷遠端連線。路由器與旁路由情境可繼續閱讀OpenWrt 部署概覽

權限、DNS 與容器邊界

長期直接以 root 執行可以繞過部分權限問題,但會擴大設定指令碼、外部規則與管理介面帶來的風險。更合適的做法是使用專用帳戶,透過 capabilities 或服務管理授予最小權限。管理控制連接埠若只供本機使用,應繫結迴圈位址;確實需要區域網路存取時,應同時設定存取控制與主機防火牆,不要直接暴露到公網。

systemd-resolved、NetworkManager、dnsmasq 與 Clash DNS 可能爭用本機 DNS 連接埠,或彼此轉送請求。先釐清查詢路徑:應用程式將請求傳給誰、系統 stub 轉送給誰、Clash 監聽哪個位址、上游 nameserver 位於何處。發生連接埠衝突時,不要盲目停用系統解析服務,應調整監聽位址或轉送關係。容器內的 127.0.0.1 指向容器自身,不是主機;容器應用程式若要使用主機代理,需要明確的閘道位址與監聽範圍。

七、通用設定檔、DNS、規則與 TUN 參數

設定檔的基本結構

Clash 設定使用 YAML。縮排只能表示層級,不能任意混用定位字元。鍵名後的冒號需要保留正確空格,清單項目使用短橫線。設定通常包含監聽連接埠、執行模式、日誌層級、代理定義、策略組、規則提供者、DNS 與最終規則。訂閱產生的完整設定可能很長,但排查時應先確認頂層結構是否正確,再查看具體代理入口。

mixed-port: 7890
allow-lan: false
bind-address: 127.0.0.1
mode: rule
log-level: info
ipv6: true

dns:
  enable: true
  listen: 127.0.0.1:1053
  enhanced-mode: fake-ip
  nameserver:
    - 1.1.1.1
    - 8.8.8.8

rules:
  - DOMAIN-SUFFIX,example.com,DIRECT
  - GEOIP,LAN,DIRECT
  - MATCH,Proxy

上例用於說明語法,不包含可用的代理定義。mixed-port 同時接受 HTTP 與 SOCKS 連線;allow-lan 決定是否允許其他裝置連線;bind-address 限制監聽位址;mode 決定規則、全域或直連行為;log-level 控制日誌詳細程度。只要連接埠未被占用即可,不必固定使用範例值。修改監聽連接埠後,所有外部代理設定都必須同步調整。

allow-lan 與監聽位址

僅在本機使用時,保持 allow-lan: false 並繫結迴圈位址會更清楚。需要讓同一區域網路內的其他裝置使用代理時,可以開啟區域網路存取,並確認客戶端實際監聽在區域網路介面。接著在其他裝置中填寫執行 Clash 裝置的區域網路 IP 與 mixed-port。主機防火牆需要放行對應連接埠,但不應對所有網路設定檔無條件開放。

允許區域網路連線不會自動將流量分享給其他裝置,也不會設定閘道。下游裝置必須手動設定 HTTP/SOCKS 代理,或由閘道完成透明轉送。行動裝置離開目前 Wi-Fi 後,原本的區域網路位址將無法到達,應清除手動代理。公共 Wi-Fi 中不建議開放監聽;若確實需要,至少限制來源網段,並確保控制介面沒有一併暴露。

規則匹配順序與策略組

規則依照由上到下的順序匹配,第一條命中後通常不會繼續。因此更具體的網域、程序與私有網路規則應放在寬泛規則之前,MATCH 通常位於末尾。DOMAIN 匹配完整網域,DOMAIN-SUFFIX 匹配網域後綴,DOMAIN-KEYWORD 依關鍵字匹配,IP-CIDR 匹配位址範圍。IP 規則可能觸發 DNS 解析,是否跳過解析取決於語法與核心支援。

策略組並不是代理入口本身,而是用於選擇、測試或回退多個策略的邏輯層。select 組由使用者手動選擇;url-test 依測試位址與間隔更新選擇;fallback 通常按可用性順序切換;load-balance 用於依設定策略分配連線。測試結果只反映測試目標與當時網路,不等同於所有網站都能存取。過短的測試間隔會增加連線與耗電,不應為了介面頻繁重新整理而持續探測。

proxy-groups:
  - name: Proxy
    type: select
    proxies:
      - Auto
      - DIRECT

  - name: Auto
    type: url-test
    proxies:
      - provider-a
      - provider-b
    url: https://www.gstatic.com/generate_204
    interval: 600

DNS 模式與查詢路徑

DNS 設定的目標不只是解析網域,還要讓解析結果與規則匹配、代理連線保持一致。fake-ip 模式會回傳保留位址,由核心記錄網域對應關係,並在連線階段還原網域,通常適合需要穩定網域分流的環境。redir-host 回傳真實解析結果,對部分區域網路與特殊應用程式更直觀,但分流路徑不同。選擇前應理解客戶端是否接管系統 DNS,以及未進入 Clash 的應用程式會向哪裡查詢。

nameserver 是一般上游,fallback 可提供另一組解析路徑,default-nameserver 通常用於解析 DoH 或 DoT 上游本身的網域。若上游填寫網域,而基礎解析又依賴同一個上游,可能形成啟動依賴迴圈。瀏覽器的安全 DNS 也可能繞過系統路徑。檢測 DNS 洩漏時,應同時檢查瀏覽器設定、系統解析器與 Clash 日誌,不能只看單一網頁結果。

TUN 參數與嚴格路由

TUN 模式的常見參數包括是否啟用、協定堆疊實作、自動路由、自動偵測介面與嚴格路由。不同平台與核心版本的支援範圍可能不同,客戶端介面也可能代為產生這些欄位。開啟自動路由後,核心會負責加入必要路由;自動偵測介面用於在 Wi-Fi、乙太網路或行動網路變更時識別出口;嚴格路由可減少流量繞過,但更容易暴露與虛擬機器、容器或區域網路路由的衝突。

tun:
  enable: true
  stack: mixed
  auto-route: true
  auto-detect-interface: true
  strict-route: false
  dns-hijack:
    - any:53

首次啟用時應從保守設定開始,只開啟必要欄位,確認瀏覽器、終端機、區域網路與休眠恢復都正常後,再調整嚴格路由或 DNS 劫持。若系統已有企業 VPN、虛擬交換器、容器網橋或多條預設路由,應記錄啟用前後的路由差異。TUN 不是系統代理失效時的萬用替代方案,它解決的是流量接管範圍問題,不能修復無效訂閱、錯誤策略與遠端連線失敗。

八、設定更新、連線異常與恢復流程

按層級定位,不要同時修改多個變數

故障排除應依序確認基礎網路、客戶端程序、設定載入、監聽連接埠、流量接管、規則匹配、策略連線與 DNS。先切換至直連或完全退出客戶端,確認裝置本身能夠連線;再啟動客戶端但暫不接管系統流量,檢查核心是否正常執行;接著透過本機代理連接埠執行一次明確測試;最後才開啟系統代理或 TUN。這樣可以區分問題是在核心之前,還是在系統接管之後。

一次只改變一個條件。不要同時更新訂閱、切換客戶端、修改 DNS、開啟 TUN 與更換策略。多項操作同時進行後,即使恢復也無法確定原因。客戶端日誌應先使用 info 層級觀察,確實需要更多細節時再短暫切換至 debug。分享日誌前,清理訂閱 URL、驗證欄位、代理位址與裝置資訊。

訂閱更新失敗

訂閱更新失敗時,首先檢查 URL 是否完整、是否過期、複製時是否帶入空格,以及基礎網路能否存取對應位址。HTTP 狀態錯誤通常來自授權、頻率限制或服務端狀態;連線逾時可能是 DNS、目前代理鏈路或網路封鎖;下載成功但解析失敗,則更可能是回傳內容不是預期的 YAML 或轉換格式。不要把反覆切換系統代理開關當作唯一處理方式。

若舊設定仍可使用而新設定無法更新,可以先保留舊設定,使用瀏覽器或 curl 單獨請求訂閱位址並觀察回應類型。更新是經由目前代理還是直連,取決於客戶端實作;必要時可暫時切換接管方式進行對照。設定包含遠端規則集時,主訂閱成功後仍可能在規則資源下載階段失敗,應從日誌區分具體 URL 與資源類型。

啟動失敗與連接埠衝突

日誌出現 address already in use 時,表示監聽位址或連接埠已被占用。常見原因包括同一客戶端啟動兩個執行個體、舊核心未退出、其他代理軟體使用相同連接埠,或系統服務自動啟動了另一個執行個體。Windows 可使用 netstat 與工作管理員定位,macOS 與 Linux 可使用 lsof 或 ss。確認程序用途後再結束,不要只憑連接埠號直接終止未知的系統程序。

# Windows
netstat -ano | findstr :7890

# macOS
lsof -nP -iTCP:7890 -sTCP:LISTEN

# Linux
ss -lntp | grep 7890

若決定修改 mixed-port,客戶端介面、系統代理、環境變數、瀏覽器手動代理與區域網路裝置都要改成新值。只修改 YAML 而客戶端實際使用覆寫設定時,連接埠可能在啟動後再次被替換。詳細分支請見連接埠 7890 被占用的定位方法

已連線但網頁無法開啟

先檢查策略組是否選擇了實際策略,而不是空組或不可用的上層組。再觀察請求日誌是否出現以下情況:完全沒有日誌,表示流量未進入客戶端;有規則命中但連線失敗,表示問題位於策略或遠端;只有網域解析失敗,表示應優先檢查 DNS;瀏覽器回報憑證或協定錯誤,則應檢查系統時間、QUIC、憑證儲存區與中間網路。切換至全域模式只能協助判斷規則影響,不代表適合長期使用。

若只有部分網站異常,查看該網域命中了哪條規則以及最終策略。規則由上到下執行,前面的寬泛規則可能攔截後面的精確規則。若只有某個應用程式異常,檢查它是否忽略系統代理、是否被應用程式分流排除,以及是否使用 UDP 或自訂 DNS。此時 TUN 可用於驗證接管範圍,但仍需透過日誌確認請求是否真正進入。

DNS 異常與洩漏檢查

網域解析失敗而 IP 可存取,通常表示 DNS 路徑有問題。檢查系統 DNS 指向、Clash DNS 監聽連接埠、nameserver 可達性、瀏覽器安全 DNS 與 TUN 的 DNS 劫持設定。在 fake-ip 模式下看到保留位址不代表一定異常,關鍵是連線是否由核心接管並還原至原始網域。若應用程式繞過 Clash 直接存取 fake-ip 位址,便會失敗,需要調整接管範圍或過濾規則。

檢測 DNS 洩漏不能只依賴一次網頁測試。應比較啟用前後的解析伺服器,查看客戶端日誌中是否出現目標查詢,並使用命令列工具指定系統預設解析器進行測試。企業網路、行動網路與瀏覽器本身的加密 DNS 都可能產生額外路徑。完整操作可參考DNS 洩漏檢測與 fake-ip 設定實作

TUN 開啟後區域網路或虛擬機器失效

TUN 會改變路由優先順序,嚴格路由與 DNS 劫持還會擴大影響範圍。區域網路失效時,先確認私有位址直連規則,再查看路由表中目標網段由哪個介面承載。虛擬機器、Docker、WSL 與容器平台通常會建立自己的私有網段,若與實體區域網路或代理保留位址重疊,就可能發生衝突。不要只新增單一裝置 IP 作為長期補丁,應辨識完整網段與實際出口。

關閉 strict-route 或暫停 DNS 劫持可以作為定位手段,但應記錄是哪項變更讓連線恢復。若只在休眠、網路切換或 VPN 重新連線後出現,可能是自動偵測介面未重新整理。重新啟動核心或重新建立 TUN,通常比重新啟動整台裝置更有針對性。Linux 伺服器還應檢查 nftables、策略路由與反向路徑過濾;Windows 與 macOS 則檢查其他 VPN 與安全客戶端。

建立可回復的維護習慣

更新客戶端或大幅修改設定前,保留目前可用的設定、覆寫檔案與重要設定記錄。不要將包含敏感訂閱的檔案備份到公開位置。修改後分別驗證設定解析、核心啟動、單一連接埠代理、系統代理或 TUN、DNS、區域網路與休眠恢復。任何一步失敗,都應回到最近一個明確可用的狀態,而不是繼續疊加修改。

若要快速完成初次設定,可回到Clash 快速上手教學;需要重新選擇客戶端,可查看客戶端橫向評測;策略組、設定檔、fake-ip、mixed-port 等術語可在術語表中單獨查閱。建立「下載來源明確、分層保存設定、一次只改一項、依層級判斷日誌」的流程,比記住某個客戶端介面的固定位置更可靠。