通用準備:分清用戶端、核心與訂閱
先確認要安裝的程式與設定來源
圖形化用戶端負責匯入訂閱、選擇策略組及修改系統設定;核心則負責監聽連接埠、處理協定與比對規則,兩者屬於不同層次。mihomo 是核心專案,Clash Verge Rev、FlClash 等則提供圖形介面;名稱同樣含有 Clash 的應用,也可能採用不同的設定方式。本指南優先推薦本站支援平台上的 Clash Plus,再依功能需求參考其他用戶端。不要只看軟體名稱,就認定某個 YAML 欄位一定可用;欄位是否生效,還取決於實際使用的核心及用戶端如何產生設定。
準備一個服務供應商提供的訂閱網址,或一份已知可用的設定檔。用戶端本身通常不會附帶可連線的服務。訂閱可能回傳完整的 Clash 設定,也可能只提供其他格式的伺服器清單;後者不能直接當成完整 YAML 使用。請先查看供應商標示的相容格式;需要轉換成 Clash 訂閱時,優先使用可信任的本機方案。訂閱連結中的查詢參數可能含有存取權限,不應貼到公開討論區,也不要為了排查問題上傳整份原始設定。
建立可還原的初始狀態
安裝前記下既有 VPN、系統代理及手動 DNS 設定,並暫時退出其他會接管流量的軟體。多個工具同時變更預設路由或代理連接埠時,記錄檔中的錯誤往往只是結果,不是原因。初次連線時,先用單一用戶端、單一設定及單一接管方式進行驗證;成功後再啟用開機啟動、自動更新、區域網路共享等附加功能。既有設定應先匯出備份,保留原始檔名與用途,避免把測試時的覆寫當成長期設定。
確認系統時間、磁碟空間與裝置架構。系統時間明顯錯誤會影響 HTTPS 憑證驗證;安裝檔架構不符,則可能無法執行或需要額外相容層。訂閱更新失敗也不一定是代理問題:網路登入入口尚未完成驗證、網址失效或帳戶到期,都需要分別處理。先透過目前可用的網路登入系統並完成必要授權,再開啟用戶端。排除問題時,記下操作順序與錯誤訊息,比反覆點擊連線按鈕更有幫助。
| 方式 | 適用範圍 | 驗證重點 |
|---|---|---|
| 系統代理 | 遵循系統代理設定的應用程式 | 系統位址、連接埠與用戶端監聽設定一致 |
| 應用程式明確設定代理 | 個別手動設定代理的程式 | HTTP 或 SOCKS 類型是否相符 |
| TUN/VPN 接管 | 經由虛擬網路介面的流量 | 授權、路由、DNS 與排除項目 |
了解最小設定的適用範圍
以下僅示範 mihomo 的本機監聽設定片段,不包含節點、策略組或規則,不能取代訂閱。mixed-port 可同時接收 HTTP 與 SOCKS 代理連線;綁定迴路位址並關閉區域網路存取,適合單機驗證。連接埠不一定要使用 7890,但用戶端、系統代理與測試指令必須一致。初次執行時,請勿任意開放外部控制介面,也不要為了解決本機連線問題就將監聽範圍改成所有網卡;這會增加暴露風險,卻未必能排除故障。
mixed-port: 7890
allow-lan: false
bind-address: 127.0.0.1
mode: rule
log-level: info
完整設定中的規則通常依序由上而下比對,命中後便停止。策略名稱必須對應現有的策略組或節點,不要直接照抄範例中的名稱。匯入後,先確認已將設定選為目前使用的設定,再檢查核心是否啟動;「下載成功」只表示檔案已取得,不代表設定語法正確,更不代表流量已經經過代理。請分別驗證這幾個狀態,後續排查才不會繞遠路。
Windows:安裝、系統代理與服務模式
下載正確架構的安裝檔並完成首次啟動
從Windows 安裝檔清單選擇用戶端,首選 Clash Plus;其他選項依序包括 Clash Verge Rev、FlClash、Clash Nyanpasu,以及已停止維護的 Clash for Windows。封存的用戶端只適合確有相容需求的舊環境;新設定建議使用仍在維護的用戶端。前往「設定 → 系統 → 系統資訊」查看系統類型,再依下載頁提供的架構選擇安裝檔。ARM 裝置不要只看系統名稱就選一般桌面版安裝檔,請先確認用戶端實際支援的範圍。
安裝時請使用穩定的本機資料夾,不要將需要長時間執行的程式放在下載暫存資料夾、壓縮檔內,或會自動清除的位置。首次啟動時可能會出現防火牆或安裝服務的授權提示,請先確認程式來源與用途。只在本機使用時,不需要主動開放區域網路的連入連線。若系統阻止程式執行,請先檢查檔案來源、系統需求及安全軟體的提示;關閉所有防護並不是通用的安裝步驟。
匯入訂閱後確認設定與監聽狀態
在用戶端的訂閱或設定頁面新增遠端設定,貼上完整網址並執行更新。若有多份設定,請明確選取剛匯入的項目,確認更新時間與節點清單。若頁面只有設定名稱、節點卻是空的,請開啟更新記錄,確認是請求失敗、回傳登入頁面,還是設定解析失敗。先不要修改 DNS;伺服器回傳的內容不正確時,解析器再努力也只能讀到一頁 HTML。敏感連結只應輸入用戶端,排查用的螢幕截圖也不要包含完整網址。
選擇規則模式,並在實際使用的策略組中選取可用節點。接著查看用戶端設定中的本機代理連接埠,再開啟系統代理。在 Windows 的代理設定中,確認手動代理指向迴路位址,且連接埠相同。有些應用程式使用獨立的網路堆疊,不會讀取系統代理,因此瀏覽器可用、終端機卻不通並不矛盾。先在 PowerShell 執行明確指定代理的測試,分開確認「用戶端是否連得通」與「系統是否已接管流量」。
Test-NetConnection 127.0.0.1 -Port 7890
curl.exe -I --proxy http://127.0.0.1:7890 https://example.com/
Get-NetTCPConnection -State Listen -LocalPort 7890
第一個指令只確認能否建立 TCP 連線,第二個才會經由代理向目標網站發出請求。使用 curl.exe 可避免部分 PowerShell 環境中同名別名造成的參數差異。第三個指令用來確認監聽狀態;若出現權限不足,請在可控情況下提高終端機權限後再查詢。若連接埠已被其他程式占用,請關閉重複執行的用戶端,或修改目前用戶端的連接埠,並同步更新系統設定;只改其中一處會造成新的故障。
TUN 啟用順序與 Windows 特有問題
確認系統代理驗證成功後,再嘗試啟用 TUN。部分用戶端需要安裝服務元件並取得系統管理員權限,才能建立虛擬介面及寫入路由;服務模式不代表每次都要以系統管理員身分執行整個介面。請先依用戶端說明安裝或啟動服務,確認記錄檔顯示虛擬裝置初始化完成後,再啟用 TUN。若網路立刻中斷,先關閉 TUN 以恢復原本網路,接著檢查安全軟體、其他 VPN 與虛擬網卡是否衝突;不要同時切換網路堆疊、DNS 與 MTU。
WSL、Docker 與虛擬機器屬於額外的網路環境;Windows 上的 127.0.0.1 不應視為通用的主機位址,實際連線方式取決於網路模式與系統設定。若確實需要讓其他環境連上本機代理,請再設定可連線的位址、存取控制及防火牆範圍。不要只為了讓某個容器連網,就將代理開放給整個區域網路。遊戲與語音應用涉及 UDP 時,也要確認上游協定是否支援;啟用 TUN 不會自動補足節點能力。
結束用戶端前,先關閉系統代理與 TUN。若程式異常結束後瀏覽器都出現代理錯誤,請回到 Windows 代理設定清除殘留的手動代理,再確認基本網路已恢復。整條連線流程驗證完成後,才啟用開機自動啟動與自動連線,並實際重新啟動一次,確認服務是否在介面就緒前啟動。睡眠喚醒或切換 Wi-Fi 後發生異常時,先重新連線目前的設定;若仍無效,再檢查路由與 DNS,避免直接重新安裝軟體,導致排查線索全部消失。
macOS:晶片架構、網路授權與代理還原
選擇安裝檔並處理系統授權
開啟「關於這台 Mac」查看晶片或處理器資訊,再前往macOS 下載區。Clash Plus 為首選,也可依需求選擇 Clash Verge Rev 或 FlClash;ClashX Meta 已停止維護,應視為相容性封存版本。Apple Silicon 與 Intel 機型必須選擇相符的安裝檔,不要因為應用程式能透過相容層啟動,就忽略原生架構。安裝前也要確認用戶端支援的系統需求;能下載安裝檔,不代表舊版系統一定能執行。
若應用程式以磁碟映像檔發佈,請先將它拖移至「應用程式」資料夾,再退出磁碟映像並從正式資料夾啟動,避免後續更新、權限關聯與登入項目指向暫時掛載路徑。首次開啟時,依系統提示確認開發者與來源。若遭系統安全機制阻擋,請閱讀「隱私權與安全性」中的具體原因,並依專案說明處理;不要執行來源不明的指令大量移除檔案屬性,更不要關閉整個系統的應用程式安全檢查。
匯入設定並確認目前的網路服務
在用戶端新增遠端訂閱,更新後選為目前使用的設定,再確認策略組是否包含預期節點。若使用本機 YAML,請確認檔案的讀取位置與更新方式:部分用戶端匯入後會另存副本,繼續編輯原檔不會影響目前執行的設定。需要長期自訂規則時,優先使用用戶端支援的覆寫或合併功能,並確認最終產生的設定。直接修改訂閱快取檔通常會在下次更新時消失;儲存成功不代表設定已永久保存。
開啟系統代理後,前往系統設定的網路詳細資訊,確認 HTTP、HTTPS 或 SOCKS 代理項目。macOS 的代理設定通常與特定網路服務關聯;切換 Wi-Fi 與有線網卡後,應重新確認設定,不能只看選單列圖示。可用下列終端機指令查看目前狀態,再明確指定代理送出一次請求。指令僅供診斷,不會直接修改系統代理;若實際連接埠不是 7890,請一併修改測試用的連接埠。
scutil --proxy
lsof -nP -iTCP:7890 -sTCP:LISTEN
curl -I --proxy http://127.0.0.1:7890 https://example.com/
scutil --proxy 會顯示系統代理相關狀態,但無法證明每個應用程式都遵循這些設定。若瀏覽器可用、命令列工具卻無法連線,請檢查工具是否需要明確指定代理參數或環境變數;若只有某個瀏覽器行為不同,請檢查其擴充功能、獨立代理與安全 DNS 設定。多層設定同時存在時,請求可能繞過用戶端,或重複經過代理。先將測試簡化為一個瀏覽器視窗與一條終端機指令,再逐步恢復擴充功能。
TUN、輔助服務與網路切換
啟用 TUN 可能需要輔助服務、系統管理員授權或網路延伸功能,實際機制依使用的用戶端而異。系統出現提示時,請確認應用程式名稱;完成授權後回到用戶端查看記錄檔,不要把曾經按下允許當成服務已成功運作的證據。若服務安裝路徑指向已刪除的舊版應用程式,更新後可能需要依用戶端提供的步驟重新安裝輔助元件。權限錯誤與節點連線錯誤屬於不同階段,請先排除裝置建立失敗,再檢查規則與 DNS。
macOS 的依網域解析與網路服務順序會影響 DNS 行為。公司內部網域可能依賴指定介面的解析器;啟用全域接管後,若內部網站無法使用,請先確認該網域原本使用的 DNS,再設定指定解析或排除項目。不要將公用解析器套用到所有情境。從睡眠喚醒、切換熱點或連接擴充基座後,介面與路由可能改變;重新連線前先查看目前的網路服務,確認基本網路驗證已完成。
確認基本連線恢復後,再決定是否啟用登入時自動啟動。選單列常駐、登入項目與背景服務是三種不同狀態:看到介面不代表核心已載入設定,存在背景服務也不代表訂閱更新成功。可靠的驗收應包括重新啟動後確認設定選擇、代理監聽與目標連線。長期不再使用某個用戶端時,先退出並停用其網路接管,再依該應用程式的解除安裝說明移除輔助服務,避免多個舊服務搶用同一個連接埠。
Android:VPN 授權、背景執行與個別應用程式
安裝檔架構與匯入訂閱
在Android 安裝檔清單中優先選擇 Clash Plus,也可選用 Clash Meta for Android、FlClash 或 Surfboard。不同應用程式支援的匯入格式與功能範圍並不完全相同,尤其不要假設 Surfboard 能直接使用所有 mihomo YAML 欄位。請先確認服務供應商支援的用戶端與格式,再決定安裝哪一款。新款裝置通常採用 ARM64,但仍應依裝置實際架構選擇;無法確認時,只有下載頁確實提供通用版的用戶端才能選擇通用版。
透過瀏覽器或檔案管理員安裝時,Android 可能會要求允許從該來源安裝應用程式。只對實際使用的來源按需授權,完成後可回到系統設定撤銷權限。若安裝時提示簽章不一致,請先確認裝置上是否已有來自不同來源的同名應用程式,不要直接解除安裝唯一存有訂閱的舊版本。先備份可匯出的設定與應用程式設定,再決定是否遷移;不同用戶端的備份格式通常無法互相還原,訂閱網址與自訂規則也應分開保存。
在應用程式內新增訂閱、執行更新,並設為目前使用的設定。若訂閱一直轉圈,先暫停連線,改用可連上該訂閱的基本網路更新,查看應用程式顯示的是 HTTP 錯誤還是解析錯誤。有些訂閱需要透過現有代理存取,此時應依供應商說明選擇更新通道,但不能形成「必須先載入這份設定才能取得這份設定」的循環。可透過已獲授權的其他網路完成首次匯入,再驗證後續更新方式。
系統 VPN 接管與背景持續執行
多數 Android 代理用戶端會透過系統 VPN 介面接管應用程式流量,首次啟動時會出現系統授權提示。這裡的 VPN 是作業系統提供的流量接入方式,不代表使用的協定一定是某種傳統 VPN。通常同一個使用者空間只能執行一個這類 VPN 服務,因此廣告過濾器、企業 VPN 與其他代理工具可能互相衝突。先停用其他流量接管程式,再啟動目前的應用程式,並確認系統狀態列與用戶端記錄檔都顯示服務已建立。
連線幾分鐘後正常、鎖定螢幕後失效,請優先檢查電池最佳化、背景活動權限及廠商的自動啟動限制。允許用戶端持續在背景執行,並確認系統是否顯示前景服務通知;不要為了隱藏通知而關閉維持服務所需的權限。部分系統也會在清除最近使用的應用程式時終止程式,是否需要鎖定背景取決於裝置的實作方式。判斷依據不應是設定名稱,而是鎖定螢幕一段時間後重新開啟網頁,確認用戶端程序、VPN 介面與設定仍然運作。
「永遠啟用 VPN」與「封鎖未使用 VPN 的連線」是系統層級的策略,不適合初次設定時同時啟用。後者會在用戶端未啟動、更新失敗或服務遭系統回收時阻斷網路,容易讓人誤以為手機網路故障。請先測試重新啟動、鎖定螢幕及切換 Wi-Fi/行動網路,再依實際安全需求啟用。若啟用後無法連線,先到系統 VPN 設定檢查封鎖策略,必要時暫時關閉,以恢復訂閱更新並排查問題。
個別應用程式、私人 DNS 與行動網路差異
個別應用程式設定通常分為「只代理選取的應用程式」或「略過選取的應用程式」兩種相反模式,儲存前務必確認目前選用哪一種。排除在接管範圍外的應用程式,不會再遵循用戶端內部的網域分流規則;若瀏覽器被排除,修改瀏覽器的網域規則自然不會生效。先使用一個已納入接管的瀏覽器測試,再逐步加入其他應用程式。系統元件、工作資料夾中的應用程式與雙開應用程式可能處於不同環境,需分別確認所選用戶端是否能接管。
Android 的私人 DNS、瀏覽器安全 DNS 與用戶端內建 DNS 可能同時參與解析。若解析失敗,先記錄原本設定,以系統自動 DNS 和用戶端預設設定作為對照,再逐項還原。不要認定關閉某項功能永遠是正確做法。行動網路也可能採用 IPv6 或不同的 NAT 路徑;若 Wi-Fi 正常、行動網路異常,應分別檢查連線記錄、目標位址類型及節點可連線性,不要把 Wi-Fi 下的結果直接套用到行動網路。
最後進行一次實際的網路切換測試:先在 Wi-Fi 下連線,再切換到行動網路並造訪同一網站,接著鎖定螢幕後再恢復。每個步驟只檢查連線狀態與記錄檔,不要把連線測試顯示的單一數值當成服務可用的保證。若只有一個應用程式失敗,優先檢查個別應用程式規則、應用程式本身的網路限制與協定需求;若所有應用程式同時失敗,再從 VPN 服務、訂閱狀態與 DNS 開始排查。
iOS:App Store 安裝、設定授權與隨選連線
安裝 Clash Plus 並儲存訂閱
iOS 平台首選 Clash Plus,可從App Store 的 Clash Plus 頁面安裝,產品資訊請參閱官方網站 clashplus.io。本站的iOS 下載區也保留相同連結,方便與其他裝置對照。安裝前請查看 App Store 中的相容性說明;在匯入設定前,也應確認系統是否符合需求,以及裝置是否受到管理政策限制,避免將安裝限制誤判為訂閱問題。
準備好適用於所選用戶端的訂閱網址,在應用程式的設定或訂閱管理入口新增遠端內容,並確認更新結果。介面名稱可能隨用戶端更新而變動,可依「新增遠端設定、更新、設為目前設定」這三個步驟辨認流程。匯入後不要立刻啟用所有自動功能,先查看伺服器清單與策略組,確認內容已正確解析。若服務供應商只提供特定用戶端格式,請先向供應商確認相容方式;單純修改副檔名無法完成格式轉換。
從其他裝置複製網址時,請留意通訊應用程式可能插入空格、截斷查詢參數,或將符號轉成格式化連結。貼上後確認網址開頭的協定與完整長度,但不要在螢幕截圖中顯示帶有存取權限的內容。使用相機掃描 QR Code 只會減少輸入錯誤,不代表內容可信。更換訂閱前,請保留原設定名稱並備份自訂規則;同時使用多份遠端設定時,務必確認目前選用哪一份,否則即使更新了新訂閱,實際執行的仍可能是舊設定。
分清系統 VPN 狀態與實際代理路徑
首次連線時,需要允許應用程式新增 VPN 設定,並可能透過裝置密碼或生物辨識完成系統確認。授權後回到應用程式查看連線結果,再到系統 VPN 設定確認目前由哪個應用程式提供連線。系統顯示 VPN 標示,只代表通道介面已建立,不代表上游節點可連線,也不代表每個目標都會走代理。接著應用瀏覽器造訪一個預期直連的目標與一個預期經代理的目標,同時查看應用程式提供的連線或規則記錄。
iOS 上不要照搬桌面版「設定本機連接埠後再開啟系統代理」的操作。應用程式通常透過系統網路延伸功能處理流量;介面中的規則模式、代理模式與連線開關也分屬不同層次。規則模式會依網域、位址或其他條件選擇策略;全域模式則會將更多流量交給所選的代理策略,但兩者都仍仰賴節點正常運作。切換至全域模式後若恢復連線,只能將問題範圍縮小到規則或策略選擇,不能證明 DNS、權限與網路環境都正確。
同一裝置若有其他 VPN、內容過濾器或由組織部署的網路設定,請先確認其啟用狀態。受管理裝置可能禁止新增或修改設定,這類限制應由裝置管理人員處理。不要反覆刪除系統描述檔來試錯,因為其中可能包含工作網路、憑證與存取需求。個人裝置需要清除舊用戶端時,也應先中斷舊連線,再依照說明移除對應設定,避免誤刪仍在使用的網路設定。
隨選連線、無線網路與背景執行限制
確認手動連線穩定後,再啟用隨選連線。這項功能會在符合條件時觸發或恢復連線,不會修復失效的訂閱,也無法保證自動完成網路登入入口的驗證。連上飯店或公共 Wi-Fi 時,若登入頁面無法開啟,請先暫時中斷代理,完成網路驗證後再恢復連線。切換 Wi-Fi 與行動數據後,分別測試同一個目標,確認問題是否只出現在某種網路;兩種網路的 DNS、IPv6 與電信業者路徑可能不同,不能只靠應用程式的連線標示判斷。
iOS 的背景執行方式與桌面系統常駐程序不同,不能要求使用者一直保持應用程式畫面開啟。應透過系統 VPN 狀態及實際請求確認網路延伸功能是否正常。若切回前景後才恢復,請查看用戶端記錄檔、系統省電狀態與自動連線條件,並記下發生問題時使用的網路類型。設定過於複雜、規則資源過大或外部資源下載失敗,也可能影響網路延伸功能啟動;請先以服務供應商支援的精簡設定驗證,再逐步加入本機規則及額外資源。
排查 DNS 時,也要留意瀏覽器或系統中的其他隱私網路功能;它們可能改變解析方式與流量出口。請逐項進行可還原的對照:記錄原始狀態,暫時調整一項,重新連線後請求相同目標,再還原設定。檢測頁面顯示的解析服務名稱,不代表流量一定外洩;還需搭配用戶端的接管方式、查詢路徑與目標連線記錄判斷。詳細方法請參閱DNS 洩漏檢測與 fake-ip 排查筆記。
Linux:桌面用戶端與 mihomo 服務部署
先分清桌面安裝與無介面部署
桌面使用者可從Linux 下載區選擇 Clash Verge Rev 或 FlClash,並先確認發行版、CPU 架構及下載頁實際提供的套件格式。桌面用戶端適合需要管理訂閱與互動切換策略的環境;伺服器或路由器則可優先考慮獨立 mihomo 核心。不要因為同樣是 Linux,就把一般桌面、精簡容器與路由系統視為相同環境;圖形相依套件、權限模型、服務管理工具與可用記憶體都可能不同。
使用發行版的套件管理員安裝相符格式的圖形化用戶端。若提示缺少共享函式庫或圖形元件,請查看明確的相依性錯誤,不要從陌生網站逐一下載動態函式庫。透過圖形介面匯入訂閱並啟用設定後,先測試本機代理監聽。Linux 桌面環境沒有統一強制使用的系統代理入口:GNOME、KDE、終端機工具與獨立應用程式可能各自採用不同設定。因此,啟用系統代理不代表所有程式都已接管。
分別驗證終端機代理與桌面代理
以下指令只會影響目前的終端機及其後啟動的子程序,不會修改整台電腦的路由。此處的 HTTP 與 HTTPS 環境變數都指向本機 HTTP 代理入口;其中 https_proxy 描述的是目標請求類型,不表示代理網址本身必須使用 HTTPS。ALL_PROXY 使用 SOCKS,並透過 socks5h 讓支援此語意的工具將目標網域交由代理解析。不同工具對環境變數的支援程度不一,仍應查閱各自文件。
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export ALL_PROXY=socks5h://127.0.0.1:7890
export no_proxy=localhost,127.0.0.1,::1
curl -I https://example.com/
unset http_proxy https_proxy ALL_PROXY no_proxy
先暫時設定並完成驗證,再決定是否寫入 shell 啟動檔。系統服務不會自動繼承互動式終端機的環境變數;使用 sudo 後,變數也可能遭到清除,因此同一個指令換種執行方式後失敗並不罕見。套件管理員、容器建置與版本控制工具可能各自有獨立的代理設定,請勿重複疊加而忘了設定來源。需要明確驗證時,請使用 curl --proxy,並檢查大小寫形式的舊變數是否仍留在環境中。
獨立核心先測試設定,再啟動服務
以下範例適用於使用 systemd 的主機,並假設已將符合本機架構的 mihomo 執行檔放入 /usr/local/bin/mihomo。先建立專用帳戶與私人設定目錄,將已有的完整設定儲存為 /etc/mihomo/config.yaml,並允許該帳戶讀取所需檔案。範例設定不啟用 TUN,只提供本機代理,避免首次部署就擴大程序權限。設定中使用的資料庫與規則資源,也必須有明確來源及適當的目錄寫入權限。
sudo useradd --system --home-dir /etc/mihomo --shell /usr/sbin/nologin mihomo
sudo install -d -m 750 -o mihomo -g mihomo /etc/mihomo
sudo chown mihomo:mihomo /etc/mihomo/config.yaml
sudo chmod 600 /etc/mihomo/config.yaml
sudo -u mihomo /usr/local/bin/mihomo -t -d /etc/mihomo
先儲存設定,再執行檔案權限指令;若帳戶已存在,就不必重複建立。部分發行版的禁止登入 shell 路徑有所不同,請依本機實際路徑調整。設定測試通過後,將下列單元檔儲存為 /etc/systemd/system/mihomo.service。不要把訂閱存取網址直接寫入服務啟動參數,因為參數可能出現在程序清單與診斷輸出中。先保留一般詳細程度的記錄檔;遇到明確問題時,再短暫提高詳細程度。
[Unit]
Description=Mihomo local proxy
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=mihomo
Group=mihomo
WorkingDirectory=/etc/mihomo
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
Restart=on-failure
RestartSec=5
UMask=0077
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now mihomo
sudo systemctl status mihomo --no-pager
sudo journalctl -u mihomo -n 80 --no-pager
ss -lntp
curl -I --proxy http://127.0.0.1:7890 https://example.com/
此單元不會自動更新訂閱,也不會設定透明代理轉送。修改設定後,先重新執行語法測試,確認通過再重新啟動服務。若啟動記錄顯示連接埠已被占用,請優先檢查圖形化用戶端或舊服務,不要只是不斷更換連接埠來掩蓋重複程序。伺服器僅供本機使用時,請維持迴路位址監聽;遠端存取應透過受控的安全通道並設定存取限制,不要將開放代理暴露於公用網際網路。
設定常見問題:沿著請求流程逐層排查
訂閱更新、設定覆寫與 YAML 解析
排查前先保存最近一次有效設定,再記錄目前錯誤發生在哪個步驟。訂閱更新失敗時查看 HTTP 狀態與回應類型;設定載入失敗時查看行號與欄位;核心啟動失敗時檢查連接埠與檔案權限;目標連線失敗時再檢查節點、規則與 DNS。若將這些錯誤一概歸為「無法上網」,就容易在訂閱伺服器回傳錯誤時反覆修改本機路由。可參考已連線卻無法瀏覽的逐項檢查清單逐層排查,每次只變更一個條件。
YAML 使用空格縮排,不應混用定位字元。請留意清單項目的連字號、冒號後的空格,以及字串中的特殊符號;同一層級也應避免重複定義 dns 或 rules,不要指望解析器替你決定保留哪一段。用戶端的本機覆寫可能取代訂閱原值,最終生效內容應以執行中的設定為準。更新後若自訂規則消失,請檢查是否直接編輯了遠端快取,並將長期調整移至用戶端支援的覆寫入口。
DNS、fake-ip 與規則之間的關係
以下片段示範 mihomo 的 DNS 與 TUN 關聯方式,需合併至既有完整設定,並確認連接埠、權限及所用核心皆支援。為縮小測試範圍,範例暫不啟用 IPv6;這不代表所有網路都應永久停用 IPv6。dns-hijack 用於接管進入相應 TUN 路徑的傳統 DNS 請求,不能因此推論瀏覽器自行送出的加密 DNS 也會被接管。啟用前先完成系統代理驗證;若出現回歸問題,可單獨關閉 TUN 進行比對。
dns:
enable: true
listen: 127.0.0.1:1053
ipv6: false
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
nameserver:
- https://1.1.1.1/dns-query
tun:
enable: true
stack: mixed
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53
- tcp://any:53
fake-ip 會回傳映射位址,讓核心在後續連線時保留網域關聯;這不代表偽造節點,也不代表系統 DNS 已經接管。測試結果出現保留位址時,不必立即判定設定錯誤;重點是後續流量是否進入同一個核心。若應用程式快取了舊解析結果,可重新啟動應用程式後再測試;只有確實遇到相容性問題的網域,才加入適當的過濾規則。不要一開始就排除所有網域,導致功能失效。
respect-rules 會讓相關 DNS 連線遵循分流規則,因此也要考慮代理伺服器網域本身如何解析,以免形成解析相依循環。這不是只要勾選,就能涵蓋所有外洩路徑的總開關。nameserver、fallback 與過濾條件也不能只看欄位名稱,就推斷它們是簡單的主要與備援順序。需要組合這些參數時,請繼續閱讀mihomo DNS 參數說明,先釐清請求路徑,再決定設定方式。
規則命中、協定能力與還原順序
規則模式下,具體網域通常應放在範圍較廣的地理位置規則之前,最後保留兜底規則。DOMAIN-SUFFIX 需要可用的網域資訊;GEOIP 則依賴目標位址與資料庫。請求若以 IP 位址呈現,未必會如預期命中網域規則。策略組存在不代表目前選用的項目有效,還要確認所選節點能否連線。若資料庫載入失敗,應先處理資源路徑或下載問題;相關說明請見GeoIP 與 GeoSite 資料庫更新說明。
| 觀察到的結果 | 優先檢查項目 | 下一步 |
|---|---|---|
| 本機連接埠沒有監聽 | 設定解析、程序與連接埠占用 | 查看啟動記錄,先不要修改系統 DNS |
| 明確指定代理可用,一般請求卻失敗 | 系統代理、應用程式代理與排除設定 | 比較兩次請求是否出現在連線記錄中 |
| 網域連不上,指定位址卻可連線 | DNS 路徑與解析結果 | 檢查解析記錄與位址類型 |
| 網頁正常,語音或遊戲卻無法使用 | UDP 支援、規則與接管範圍 | 確認節點協定能力與應用程式的流量路徑 |
| 關閉用戶端後仍無法連線 | 殘留系統代理、封鎖策略與路由 | 先還原基本網路,再重新連線 |
最後依相反順序還原:先關閉新增的 TUN 或自動連線,再清除殘留系統代理,還原先前記錄的 DNS 設定,確認基本網路正常後,再重新啟用最精簡的設定。能穩定重現問題後,再加入個別應用程式設定、覆寫規則與背景自動啟動。回報問題時,提供系統類型、用戶端名稱、錯誤發生時間與已去除敏感資訊的記錄檔即可;不要提供完整訂閱或帳戶憑證。只想重新操作一次連線流程,請回到快速入門教學;想依問題症狀查找解答,請前往常見問題頁。