先釐清:服務停止,還是連線失敗

Android 版 Clash 螢幕關閉一陣子後就斷網,不一定是「背景程序被關閉」。系統結束程序、其他 VPN 取得連線、節點失效,或 Wi-Fi 切換到行動網路,都可能讓網頁無法開啟。先查看用戶端的執行狀態,再決定要調整電池設定或檢查設定檔,才不會白費工夫。

本文討論使用 Android VpnService 接管流量的用戶端,包括原版 Clash for Android,以及採用 mihomo 核心、透過 Android VPN 介面運作的用戶端。核心決定協定與規則功能,背景能否持續執行則主要取決於用戶端的 Android 實作與系統策略;更換核心不代表自動取得背景執行豁免。

觀察到的現象優先檢查項目
用戶端顯示已停止,系統 VPN 狀態也消失背景執行限制、手動停止,或其他 VPN 接管連線
VPN 仍連線,但只有代理網站無法開啟節點連線狀態、訂閱有效期限、規則與 DNS
切換 Wi-Fi 後短暫無法連線網路重新連線與舊連線恢復,不要先歸因於電池最佳化
重新啟動後,用戶端沒有執行開機啟動功能、自動啟動權限與首次解鎖

測試前記下手機型號、Android 版本、系統版本與用戶端版本。前兩項可在系統「設定」→「關於手機」查看;應用程式版本則可在用戶端的「關於」頁面查看。原版 Clash for Android 已停止維護;若新版 Android 持續出現相容性問題,可參考用戶端比較評估仍在維護的選擇,而不是一再放寬所有系統權限。

VpnService 授權提示允許了什麼

首次啟動代理功能時,Android 通常會顯示「連線要求」或「設定 VPN 連線」的系統提示。確認後,用戶端才能建立虛擬網路介面,將納入接管範圍的流量送進本機核心,再依規則選擇直連或代理。這裡的 VPN 是系統提供的流量接管介面,不代表用戶端一定會連線到傳統企業 VPN 伺服器。

  1. 先匯入有效的設定檔,選擇可用節點,再點選用戶端的啟動按鈕。
  2. 確認系統提示中的應用程式名稱與目前安裝的用戶端相符,再允許連線。
  3. 在系統「設定」中搜尋「VPN」,查看目前連線的應用程式;部分系統也會顯示鑰匙圖示。
  4. 分別開啟預期直連與預期透過代理的網站,並查看用戶端連線記錄,確認分流結果。

為什麼不能同時啟用兩個 VPN 應用程式

同一個 Android 使用者或設定檔通常只能有一個啟用中的 VPN 服務。啟動另一個代理工具、使用本機 VPN 的廣告攔截器或封包擷取工具時,可能會取代目前的連線。工作設定檔與個人設定檔有各自的管理範圍,不能只憑通知列圖示推斷所有狀態。排查時,先關閉同一設定檔中的其他 VPN 應用程式,再單獨測試 Clash。

桌面版教學中的 TUN 服務授權設定不能直接套用到手機。Android 常見的流量接管方式由 VpnService 提供,通常不需要 root;是否有獨立的「TUN」開關、應用程式分流或略過區域網路選項,則視用戶端實作而定。不要為了讓背景持續執行,就照抄桌面版的 tun 設定。

通用設定:電池、通知與背景執行

先將電池使用方式設為不受限制

長按桌面上的用戶端圖示,進入「應用程式資訊」→「電池」或「應用程式電池用量」,尋找「不受限制」、「允許背景活動」等選項。Pixel 等接近原生 Android 的裝置,常見路徑為「設定」→「應用程式」→「查看所有應用程式」→用戶端→「應用程式電池用量」。選項名稱會隨 Android 版本變動,重點是允許背景執行,並避免將用戶端設為「受限制」。

部分系統仍保留「特殊應用程式存取權」→「電池最佳化」清單。進入後,先將清單從「未最佳化」切換為「所有應用程式」,再找到用戶端並選擇「不要最佳化」。「不受限制」和「不要最佳化」可能是不同版本中的設定入口,也可能同時存在;依裝置上實際提供的選項設定即可,不必尋找不存在的開關。

保留執行通知,方便查看服務狀態

Android 用戶端通常透過前景服務執行持續運作的 VPN 工作,並顯示執行通知。Android 13 以上版本新增通知執行階段權限:拒絕通知權限不代表一定會禁止前景服務執行,但會影響通知的顯示位置與可見程度。建議允許用戶端通知,至少保留執行狀態通知,方便確認服務是否停止。

  • 通知權限:前往「應用程式資訊」→「通知」,允許所需的執行狀態通知;不必順手開啟無關類別。
  • 背景數據:若已開啟系統數據節省功能,請檢查「行動數據與 Wi-Fi」中的背景數據權限,必要時允許不受限制的數據使用。
  • 系統省電模式:先在一般電量模式下測試,再單獨測試省電模式,避免多項限制同時生效。
  • 強制停止:不要把「應用程式資訊」→「強制停止」當成日常清理方式;這和一般返回桌面不同。

從最近使用的應用程式畫面滑除卡片,也不等於「強制停止」。前者是否連帶結束服務,會受廠商策略與應用程式實作影響;後者則會明確停止應用程式。Android 13 以上的部分系統也提供停止使用中應用程式的入口;使用者手動停止後,不能期待電池最佳化白名單立即重新啟動服務。

各品牌的電池最佳化白名單與自動啟動設定

以下列出常見的選單路徑,各機型的名稱不一定相同。系統更新、地區版本與裝置管理政策都可能改變設定位置;找不到時,可在系統設定中搜尋「自動啟動」、「背景耗電」或「休眠應用程式」,也可直接從用戶端的應用程式資訊頁進入。只調整目前使用的用戶端,不建議全面關閉系統電池管理。

系統常見路徑需要檢查的項目
小米 MIUI/HyperOS 「設定」→「應用程式設定」→「應用程式管理」→用戶端;部分版本的自動啟動設定位於「權限管理」 將電池策略設為「無限制」;允許自動啟動或背景自動啟動
華為 EMUI/支援 Android 應用程式的系統版本 「設定」→「應用程式和服務」→「應用程式啟動管理」 關閉該應用程式的自動管理,視需要允許自動啟動、關聯啟動與背景活動
OPPO ColorOS/一加 ColorOS 「設定」→「電池」→「更多設定」→「應用程式耗電管理」;自動啟動設定可在應用程式管理中尋找 允許背景活動;檢查自動啟動權限
vivo OriginOS 「設定」→「電池」→「背景耗電管理」;自動啟動設定常見於「應用程式與權限」→「權限管理」 允許背景高耗電,並視需要允許自動啟動
三星 One UI 「設定」→「電池與裝置維護」→「電池」→「背景使用限制」;新版也可能可直接從「電池」進入 從休眠與深度休眠清單中移除;加入「永不自動休眠的應用程式」

自動啟動與最近使用清單鎖定各有用途

自動啟動權限主要影響應用程式在開機或特定事件後啟動的機會,前提是用戶端本身有實作相關功能。也請檢查用戶端是否提供「開機啟動」、「自動連線」等選項。只開啟系統自動啟動,不會憑空補上應用程式未實作的啟動流程;重新啟動後,有時還需要先解鎖裝置。

最近使用的應用程式清單鎖定,主要是降低「一鍵清理」時誤關應用程式的機率。部分系統可在最近使用畫面長按卡片或點選卡片選單,再選擇「鎖定」;有些版本則使用下拉卡片的手勢。鎖定標記不代表程序永遠不會被回收,也無法阻止使用者手動停止、系統更新重新啟動或極端記憶體壓力。若裝置沒有這項設定,先完成電池與背景活動設定即可。

始終開啟 VPN 與中斷連線時封鎖網路的取捨

部分用戶端支援系統的「始終開啟的 VPN」。在系統「設定」中搜尋「VPN」,點選用戶端旁的齒輪,查看是否有「始終開啟的 VPN」和「封鎖未使用 VPN 的連線」選項。前者會讓系統嘗試維持或恢復 VPN 服務;後者則會在 VPN 無法使用時封鎖連線。兩者都不是一般電池最佳化白名單的別稱。

  • 希望減少重新啟動後忘記連線:先確認用戶端支援,再啟用「始終開啟的 VPN」,並完成一次重新啟動測試。
  • 希望 VPN 中斷時寧可無法上網:可評估啟用封鎖選項,但務必先測試節點無法使用、用戶端停止與網路切換時的狀況。
  • 需要讓特定應用程式略過 VPN:請特別確認封鎖策略會不會讓排除的應用程式無法連網,不能假設所有略過方式都能正常運作。

系統的連線封鎖與 Clash 的 DIRECT 規則並非同一概念。進入 VPN 介面後由核心決定直連的連線,與排除在 VPN 接管範圍外的應用程式流量,走的是不同路徑。啟用封鎖後,若發現工作應用程式、區域網路裝置或登入驗證頁面無法連線,請分別檢查應用程式排除設定、路由與系統策略。

建議先確認一般連線正常,再啟用始終執行,最後才測試中斷連線時的封鎖功能。否則,若節點原本就無法使用,手機可能會完全無法上網,容易誤以為是系統故障。請保留返回 VPN 設定並關閉封鎖功能的操作方式,尤其在需要網頁驗證的公共 Wi-Fi 環境中。

透過一次螢幕關閉測試確認設定

不要只看設定頁面的開關。調整完成後,使用相同設定檔與節點進行一輪可重複的測試;以下 5 分鐘和 30 分鐘是建議的觀察時間,不是通用實測結果。每輪只變更一項設定,才能判斷究竟是哪一項限制造成影響。

  1. 螢幕開啟時的基準測試:啟動用戶端,確認系統 VPN 已連線,分別開啟直連與代理目標,並記下時間。
  2. 螢幕關閉 5 分鐘:不播放音樂、不下載檔案;解鎖後先查看系統 VPN 狀態與用戶端執行狀態,再重新開啟測試目標。
  3. 螢幕關閉 30 分鐘:讓手機閒置一段時間後再檢查。若喚醒後第一個要求只是比較慢,請區分網路恢復與服務實際停止。
  4. 切換網路:從 Wi-Fi 切換到行動數據,再切回來,觀察能否建立新連線;舊下載或連線中斷,不代表背景程序已停止。
  5. 重新啟動測試:完成首次解鎖後,確認是否依預期自動連線,不要只憑「已允許自動啟動」就判定成功。

記錄「時間、網路類型、VPN 是否連線、用戶端是否執行、節點是否可用」這五項,就足以提供排查線索。若情況允許,再進行較長時間的閒置測試:Android 閒置限制與廠商清理機制不一定會在前 30 分鐘觸發,短時間測試通過也不代表可以整夜執行。

服務仍在執行時,接著檢查設定檔與網路

若 VPN 一直保持連線,請優先查看記錄中的 DNS 失敗、連線逾時或驗證失敗等資訊。手動更新訂閱後,確認是否真的取得可用節點;訂閱更新成功只代表設定檔取得成功,不代表每個節點都能連線。使用規則模式時,也要檢查目標命中的是代理群組還是直連規則;必要時參考入門指南逐項確認。

遇到逾時時,不要同時切換 DNS、啟用所有流量嗅探選項並修改接管範圍。先換用已知可用的節點,再切換網路,最後依記錄調整設定。這樣才能保留比較基準,避免把電信業者網路變化和本機設定問題混為一談。

完成設定後的維護清單

  • 系統更新後:檢查電池策略、自動啟動與通知是否仍然有效,再做一次短時間的螢幕關閉測試。
  • 更換用戶端後:為新應用程式重新授權 VPN,並重新設定白名單;舊應用程式的權限不會自動移轉。
  • 續航時間明顯縮短時:查看系統電池用量統計與用戶端連線記錄,排查頻繁重新連線與持續傳輸,不要把所有耗電都歸因於「常駐」。
  • 需要回報問題時:提供系統與用戶端版本、發生時間和重現步驟;分享記錄前,請遮蔽訂閱網址、存取權杖與個人瀏覽記錄。

較穩妥的順序是:先完成 VpnService 授權,再放寬用戶端的背景電池限制,依裝置情況設定自動啟動與最近使用清單鎖定,最後評估始終開啟與中斷連線封鎖。每個步驟都要實際測試連線。這樣既能降低系統自動中斷的機率,也能在下次故障時清楚判斷問題出在 Android 背景管理、用戶端服務,還是訂閱與網路本身。