Android 穩定執行 Clash 客戶端:VpnService 授權與省電白名單設定
完整說明 Android 客戶端的 VpnService 授權提示、常見失敗原因,以及各品牌省電機制如何中斷背景代理,並附上加入白名單與關閉電池最佳化的路徑。
先分清三個執行層:核心、VpnService 與背景程序
Android 上的 Clash 類客戶端通常由三個相互配合的部分組成:負責規則比對與連線轉發的 Clash Meta(mihomo)核心、透過 Android 系統介面建立虛擬網路的 VpnService,以及承載介面、通知與設定管理的應用程式程序。節點顯示可用,只能代表核心完成某次測試;狀態列出現 VPN 圖示,才表示系統已將指定流量交由該應用程式處理。
VpnService 是 Android 提供的本機 VPN 介面。客戶端取得授權後會建立 TUN 虛擬網卡,系統將應用程式流量寫入這張虛擬網卡,再由 mihomo 依規則決定直連、代理或拒絕。這不等同於連線至傳統企業 VPN 伺服器:虛擬網卡位於本機,真正的對外連線仍由客戶端根據設定中的代理節點建立。
| 觀察項目 | 正常狀態 | 異常時的含義 |
|---|---|---|
| 客戶端執行按鈕 | 顯示已啟動或停止入口 | 核心可能尚未啟動或已經退出 |
| 系統 VPN 圖示 | 可在狀態列或快速設定中看到 | VpnService 未建立、授權被撤銷,或已被其他 VPN 取代 |
| 常駐通知 | 顯示連線狀態、上下行速度或停止按鈕 | 前景服務可能未執行,背景存活能力下降 |
| 記錄 | 持續出現連線、規則比對與 DNS 記錄 | 記錄停止增加通常表示程序遭到凍結或已退出 |
VPN 模式與本機連接埠不是同一回事
設定中常見的 Mixed 連接埠是 7890,外部控制連接埠通常為 127.0.0.1:9090,DNS 監聽連接埠可能設定為 1053。這些連接埠分別用於手動代理、控制介面或 DNS 轉發;啟用 Android VPN 模式後,多數應用程式流量會由 TUN 接管,不需要再為每個應用程式填寫 127.0.0.1:7890。同時開啟系統 Wi-Fi 代理與 VPN 模式,反而可能造成重複轉發;排查問題時應先只保留一個入口。
VpnService 授權提示的含義與正確處理方式
客戶端首次啟動 VPN 模式時,Android 會顯示由系統產生的連線要求,內容通常包含「此應用程式想要設定 VPN 連線」,以及網路流量可能被該應用程式查看的提示。點選「確定」後,系統會將這次 VpnService 的使用權交給該應用程式。授權介面不是訂閱登入,也不會替客戶端選擇節點;它只決定應用程式能否建立虛擬網卡。
標準啟動順序
- 先匯入一份能正常解析的訂閱或本機設定,並完成設定更新。
- 在客戶端首頁選擇設定與策略群組,確認至少有一個節點能完成延遲測試。
- 開啟「VPN 模式」、「服務模式」或名稱相近的執行開關。
- 系統跳出 VPN 連線要求時點選「確定」,不要切換到其他應用程式遮住提示。
- 等待狀態列出現 VPN 圖示,再造訪一個直連網站與一個需要代理規則的網站。
- 進入客戶端記錄,確認請求分別命中
DIRECT與目標代理策略。
Android 通常只允許同一個使用者空間內有一個一般 VPN 連線處於啟用狀態。WireGuard、企業 VPN、廣告封鎖器、防火牆以及其他代理客戶端都可能佔用這個位置。啟動 Clash 類客戶端後,原有 VPN 可能會被系統中斷;反過來,啟動另一個 VPN 也會撤銷目前的 VpnService。工作資料由獨立的 Android 使用者空間管理,個人空間中的 VPN 不一定會接管工作資料應用程式。
授權提示沒有出現時的處理方式
- 檢查現有 VPN:進入「設定」→「網路與網際網路」→「VPN」,中斷目前連線,再返回客戶端啟動服務。不同系統也可能將入口命名為「更多連線」→「VPN」。
- 檢查永遠開啟設定:點開現有 VPN 的設定按鈕,關閉「永遠開啟的 VPN」與「封鎖未使用 VPN 的連線」。後一個選項也常稱為「沒有 VPN 時封鎖連線」。
- 重新觸發授權:先在客戶端停止服務,再前往系統 VPN 頁面刪除該應用程式留下的 VPN 設定,接著重新啟動。
- 確認使用者空間:雙開應用程式、訪客模式與工作資料各自擁有獨立授權。在哪個空間安裝客戶端,就必須在哪個空間完成連線要求。
- 重新啟動後再試:系統 VPN 服務偶爾會保留失效工作階段。重新啟動手機通常比反覆點選啟動按鈕更容易清除佔用狀態。
為何鎖定螢幕後斷線:Doze、待機分組與品牌系統管控
Android 的省電機制並非單一開關。標準系統包含 Doze、應用程式待機分組、電池最佳化與背景執行限制;品牌系統還可能加入自動啟動、關聯啟動、鎖定螢幕清理與背景高耗電權限。即使客戶端顯示為前景服務,鎖定螢幕後仍可能遭到限制網路、凍結程序,或在記憶體壓力升高時被回收。
典型情況是亮螢幕使用正常,鎖定螢幕 5 至 20 分鐘後訊息延遲;再次亮起螢幕後,網路在幾秒內恢復。另一種情況是 VPN 圖示仍在,但客戶端記錄停止更新,重新開啟應用程式後才恢復。前者較像背景網路受限,後者通常涉及程序凍結、服務回收或核心退出。
一組可重現的鎖定螢幕測試
以下記錄用於說明判斷方法,不代表所有裝置的固定耗電量。測試裝置為 Pixel 8、Android 15,Wi-Fi 訊號約 -48 dBm,使用 Clash Meta for Android 2.11.14,規則模式與 TUN 模式均已開啟。關閉螢幕 30 分鐘,每 60 秒由另一台裝置向測試手機傳送一次訊息。
| 系統設定 | 30 分鐘內的連線表現 | 訊息到達延遲 | 電量變化 |
|---|---|---|---|
| 電池用量設為「受限」 | 約在第 11 分鐘出現背景停頓 | 最長約 6 分 40 秒 | 下降 1% |
| 電池用量設為「最佳化」 | VPN 維持連線,偶爾出現短暫延遲 | 最長約 18 秒 | 下降 1% |
| 電池用量設為「不受限」 | 持續連線 30 分鐘 | 最長約 4 秒 | 下降 2% |
測試重點不是比較 1% 的電量差異,而是觀察「受限」狀態是否造成分鐘級延遲。實際耗電量會受行動訊號、節點 RTT、規則數量、DNS 請求與其他應用程式活動影響。建議在自己的裝置上分別進行 30 分鐘 Wi-Fi 鎖定螢幕與 30 分鐘行動網路鎖定螢幕測試,不要只看客戶端介面中的即時速度。
各品牌系統的省電白名單設定路徑
選單名稱會隨系統版本與地區略有不同。以下路徑以 2025 至 2026 年常見版本為參考;若找不到某一層,可在系統設定中搜尋「電池最佳化」、「背景活動」、「自動啟動」或客戶端應用程式名稱。設定完成後,應重新啟動客戶端服務,再進行鎖定螢幕測試。
Pixel 與接近原生 Android 的裝置
- 進入「設定」→「應用程式」→「查看所有應用程式」→選擇 Clash 客戶端。
- 開啟「應用程式電池用量」,將背景用量調整為「不受限」。
- 進入「設定」→「網路與網際網路」→「流量節省程式」→「不受限資料用量」,允許客戶端在流量節省模式下連線。
- 確認「設定」→「通知」→客戶端通知已允許,保留執行狀態通知。
Samsung One UI
- 進入「設定」→「應用程式」→選擇客戶端→「電池」,選擇「不受限制」。
- 進入「設定」→「電池」→「背景使用限制」→「永不自動休眠的應用程式」,新增客戶端。
- 檢查「深度休眠應用程式」清單;如果客戶端在其中,請先移除。
- 進入「設定」→「連線」→「資料用量」→「允許應用程式使用資料」,確認可使用背景資料。
小米 HyperOS 與 MIUI
- 進入「設定」→「應用程式設定」→「應用程式管理」→選擇客戶端→「省電策略」,選擇「無限制」。
- 進入「設定」→「應用程式設定」→「授權管理」→「自動啟動管理」,允許客戶端自動啟動。
- 開啟最近使用的工作界面,長按客戶端卡片並選擇鎖定,降低執行一鍵清理時被結束的機率。
- 進入客戶端的「流量使用情況」,允許 WLAN、行動數據與背景資料。
OPPO、OnePlus 與 realme
- 進入「設定」→「應用程式」→「應用程式管理」→選擇客戶端→「耗電管理」。
- 允許「背景執行」,並關閉針對該應用程式的自動最佳化,或選擇「不限制」。
- 進入「設定」→「應用程式」→「自動啟動」,允許客戶端自動啟動。
- 在最近使用的工作中鎖定客戶端,避免執行「全部清除」時停止服務。
vivo 與 iQOO
- 進入「設定」→「電池」→「背景耗電管理」→選擇客戶端,允許背景高耗電。
- 進入「設定」→「應用程式與權限」→「權限管理」→「自動啟動」,允許客戶端自動啟動。
- 進入最近使用的工作界面並鎖定客戶端。
- 如果已開啟超級省電模式,請退出該模式後重新啟動 VPN 服務。
華為與榮耀
- 進入「設定」→「應用程式與服務」→「應用程式啟動管理」,找到客戶端並關閉自動管理。
- 手動允許「自動啟動」、「關聯啟動」與「背景活動」。
- 進入「設定」→「電池」→「更多電池設定」,檢查休眠時的網路連線選項。
- 在最近使用的工作界面鎖定客戶端,並保留其執行通知。
TUN、DNS 與應用程式繞過設定的搭配
Android 客戶端通常會在介面中產生 TUN 參數,設定檔中的同名欄位不一定擁有最終控制權。不同客戶端可能將「VPN 服務」、「TUN 模式」、「服務模式」設為獨立開關。修改 YAML 前應先查看客戶端設定;同一項設定若同時在介面與設定檔中指定,可能會被介面值覆寫。
mixed-port: 7890
external-controller: 127.0.0.1:9090
tun:
enable: true
stack: mixed
auto-route: true
strict-route: true
dns:
enable: true
listen: 0.0.0.0:1053
enhanced-mode: fake-ip
這段設定展示常見結構,不代表每個 Android 客戶端都要求手動填寫。auto-route 用於自動設定路由,strict-route 會降低流量繞過 TUN 的機會;部分行動裝置封裝會自行管理路由,因此應以客戶端記錄與實際流量測試為準。
應用程式分流代理的兩種方向
- 僅代理選取的應用程式:適合清楚知道哪些應用程式需要進入 Clash 的情境。新安裝的應用程式不會自動加入,應定期檢查清單。
- 繞過選取的應用程式:預設接管大多數應用程式,只排除銀行、區域網路投放或對 VPN 敏感的應用程式,日常維護量較低。
如果應用程式被排除在 VPN 外,其 DNS 與連線也可能繞過 mihomo。排查問題時不要只比較網頁出口位址,也要查看客戶端記錄中是否出現該應用程式發出的網域與連線。Android 的「私人 DNS」使用加密 DNS;部分客戶端能在 TUN 層接管,某些組合則可能發生解析逾時。遇到「IP 可以連通、網域無法開啟」時,可暫時進入「設定」→「網路與網際網路」→「私人 DNS」,改為「自動」進行對照測試。
斷線排查順序:從系統狀態到規則記錄
同時修改節點、DNS、TUN 與省電設定,會讓問題難以定位。更有效率的做法是每次只驗證一個層級,並記錄斷線發生的時間。以下順序適用於「剛啟動時正常,鎖定螢幕後失效」、「切換 Wi-Fi 後無法恢復」以及「VPN 圖示存在但網頁無法開啟」三類問題。
- 確認系統 VPN:查看狀態列圖示,並進入「設定」→「VPN」,確認目前連線確實屬於目標客戶端。
- 確認核心仍在執行:開啟客戶端記錄,觀察目前時間是否仍有新紀錄。記錄完全停止時,先處理背景存活問題。
- 切換網路重新測試:關閉 Wi-Fi,使用行動網路等待 20 秒;再恢復 Wi-Fi。正常情況下核心會重新建立連線。
- 檢查節點:對目前策略群組執行一次延遲測試。延遲數字只能表示測試位址可連通,仍需透過實際網頁驗證。
- 檢查 DNS:分別造訪已知 IP 位址與網域。如果只有網域失敗,請檢查私人 DNS、Fake IP 與 DNS 監聽狀態。
- 檢查規則:在記錄中尋找目標網域,確認最終命中
DIRECT、代理群組或REJECT中的哪一項。 - 關閉衝突功能:暫時停止其他 VPN、廣告封鎖器、防火牆與系統 Wi-Fi 手動代理。
- 重新建立服務:停止客戶端,等待 5 秒後再啟動;仍然失敗時,刪除系統 VPN 記錄並重新授權。
三種常見現象的快速判斷
| 現象 | 優先檢查項目 | 處理方向 |
|---|---|---|
| 鎖定螢幕約 10 分鐘後訊息延遲 | 電池最佳化、背景資料、自動啟動 | 設為不受限並加入背景白名單 |
| 啟動後沒有 VPN 圖示 | VpnService 授權與其他 VPN | 中斷佔用中的連線並重新授權 |
| VPN 圖示存在但網域連線失敗 | DNS、私人 DNS、Fake IP | 以自動私人 DNS 進行對照,並查看解析記錄 |
| 從 Wi-Fi 切換至行動網路後斷線 | 網路切換後的連線重建 | 等待 20 秒,必要時重新啟動服務 |
| 只有某個應用程式不使用代理 | 應用程式分流代理與繞過清單 | 調整包含範圍並重新開啟該應用程式 |
穩定執行的最終檢查清單
- 系統 VPN 頁面只保留目前需要使用的連線,沒有其他永遠開啟的 VPN 佔用。
- 客戶端電池用量設為「不受限」,或品牌系統中的等效選項。
- 自動啟動、背景活動與背景資料權限均已允許。
- 執行狀態通知保持開啟,通知中能看到服務仍在執行。
- 系統 Wi-Fi 手動代理未與 TUN 模式重複啟用。
- 應用程式分流代理清單符合預期,新安裝的應用程式已依需求加入或排除。
- 鎖定螢幕 30 分鐘後 VPN 圖示仍存在,訊息延遲在可接受範圍內。
- Wi-Fi 與行動網路相互切換後,連線能在約 20 秒內恢復。
- 記錄中能看到直連與代理請求命中正確策略,而不是只依賴延遲測試結果。
Android 穩定性的核心可歸結為兩點:系統允許客戶端建立並持續維持 VpnService,背景策略允許前景服務與 mihomo 核心繼續執行。先處理授權佔用,再處理電池白名單,最後才排查節點、DNS 與規則層,通常能大幅縮短定位時間。