先釐清 VpnService、代理連接埠與 TUN 模式
Android 上的 Clash 類用戶端通常會透過系統提供的 VpnService 接管應用程式流量。這裡的「VPN」是指 Android 的本機流量入口:用戶端建立虛擬網路介面,將資料交給 Clash Meta(mihomo)等核心,再依照設定中的規則決定直連、拒絕或轉送至代理節點。狀態列出現鑰匙或 VPN 標誌,只能表示系統 VPN 介面處於連線狀態,不代表節點一定可用,也不代表每個網域都經過代理。
這與手動填寫 HTTP 或 SOCKS 代理不同。手動代理通常只會影響明確支援代理設定的應用程式,常見監聽連接埠包括 7890、7891 或設定中的 mixed-port;VpnService 則可以接收一般應用程式發出的 TCP、UDP 與 DNS 流量。Android 用戶端介面中的「VPN 模式」、「服務模式」或「啟動」按鈕,多半是在控制這條 VpnService 通道。
| 項目 | 作用範圍 | 典型用途 | 常見誤區 |
|---|---|---|---|
| VpnService | 系統交給目前 VPN 應用程式的流量 | Android 日常全域接管與依應用程式分流 | 圖示存在不代表節點連通 |
| HTTP/SOCKS 連接埠 | 主動連線至該連接埠的應用程式 | 瀏覽器除錯、區域網路裝置手動代理 | 並非所有 Android 應用程式都會讀取系統代理 |
| mihomo TUN | 由核心建立或管理的虛擬網路流量 | 透明接管、UDP 與複雜路由 | 用戶端已管理 VPN 時,不應重複啟用另一個入口 |
| 依應用程式代理 | 選取應用程式或排除應用程式 | 銀行、遊戲、串流服務分別處理 | 選錯「包含」與「排除」會導致應用程式繞過代理 |
TUN 設定不要與用戶端開關重複
部分 Android 用戶端會由介面統一建立 VpnService,並自動將流量送入內建核心;另一些用戶端則允許直接讀取設定中的 tun 區段。應以該用戶端的說明與執行記錄為準。若啟動後記錄持續出現介面建立失敗、位址被佔用或路由重複,請先還原用戶端預設的服務模式,不要同時疊加多個 TUN 開關。
mixed-port: 7890
mode: rule
log-level: info
ipv6: true
tun:
enable: true
stack: mixed
auto-route: true
strict-route: true
dns-hijack:
- any:53
上面的設定展示的是 mihomo 常見欄位,並非所有 Android 用戶端都要求手動加入。尤其是 strict-route、IPv6 與 DNS 劫持策略,會受到系統版本、核心版本及用戶端封裝方式影響。首次排查時,應先使用用戶端產生的預設設定,確認基本連線成功後再逐項修改。
正確處理 VpnService 授權視窗
首次啟動服務時,Android 會顯示由系統產生的連線請求,內容通常包含「此應用程式想要設定 VPN 連線」。確認後,系統才會允許應用程式呼叫 VpnService.Builder 建立虛擬介面。此授權屬於應用程式層級權限,不是訂閱權限,也不是節點帳號登入。拒絕授權後,用戶端仍可載入設定並測試節點,但無法接管其他應用程式的流量。
首次連線的建議順序
- 先匯入有效訂閱或本機設定,等待設定解析完成。
- 在用戶端中選擇一個策略群組與可用節點,不要只停留在「自動選擇」但沒有測速結果的狀態。
- 點選「啟動」、「連線」或「服務模式」,在系統視窗中選擇「確定」。
- 看到狀態列的 VPN 標誌後,開啟用戶端記錄,確認核心已監聽本機連接埠並完成網路介面初始化。
- 分別造訪一個應直連的網站與一個應使用代理的網站,檢查規則命中記錄,而不是只看首頁延遲數字。
如果授權視窗完全沒有出現,先檢查畫面上是否有懸浮視窗、護眼遮罩、自動點擊工具或密碼管理器覆蓋層。部分 Android 版本會阻止安全確認按鈕被其他視窗遮擋。關閉相關懸浮層,返回用戶端重新點選啟動即可。按鈕呈灰色時,也可以先鎖定螢幕再解鎖,或從最近使用的工作中移除用戶端後重新開啟。
已完成授權仍然連線失敗
- 另一個 VPN 正在執行:進入「設定」→「網路與網際網路」→「VPN」,中斷其他設定後再啟動用戶端。
- 始終開啟 VPN 指向舊應用程式:點開對應的 VPN 設定,關閉「始終開啟的 VPN」與「封鎖未使用 VPN 的連線」,再重新選擇目前的用戶端。
- 工作設定檔有獨立策略:企業裝置管理可能禁止使用者建立 VPN,需查看工作設定檔中的管理員限制。
- 應用程式資料移轉後授權異常:從備份還原至新手機時,VPN 授權通常需要重新確認。解除安裝重裝也會清除原有授權。
- 核心未成功啟動:查看記錄中是否出現設定語法錯誤、連接埠被佔用、訂閱檔案為空或設定引用檔案遺失。
省電白名單為什麼會直接影響代理穩定性
螢幕關閉後,Android 會逐步進入應用程式待機與 Doze 狀態。系統可能限制背景執行、網路存取、排程工作與程序恢復。VpnService 雖然通常以前景服務執行並顯示常駐通知,但手機品牌系統還會疊加自有的背景清理、自動啟動與耗電控制。結果可能是鑰匙圖示消失、用戶端程序被終止、切換網路後無法重建通道,或通知仍在但核心程序已停止回應。
省電白名單不是讓應用程式持續高負載執行,而是允許它在螢幕關閉、Wi-Fi 與行動網路切換時維持必要的前景服務。設定完成後仍應觀察實際耗電量。正常待機期間,耗電量會受規則數量、DNS 查詢、連線活躍度、UDP 工作階段與訊號品質影響;不能用單一百分比判斷用戶端是否異常。
原生 Android 與 Pixel
Android 14、Android 15 的常見路徑是「設定」→「應用程式」→「查看所有應用程式」→選取用戶端→「應用程式電池用量」,開啟「允許背景使用」,並在可選項中選擇「不受限制」。部分版本顯示為「設定」→「應用程式」→選取用戶端→「電池」→「不受限制」。接著進入「設定」→「網路與網際網路」→「VPN」,確認目前的用戶端沒有被舊的始終開啟設定取代。
Samsung One UI
One UI 6 與 One UI 7 可先進入「設定」→「應用程式」→選取用戶端→「電池」→「不受限制」。再檢查「設定」→「裝置維護」→「電池」→「背景使用限制」→「永不自動休眠的應用程式」,將用戶端加入清單。如果它已出現在「深度休眠應用程式」中,應先從該清單移除。
小米 HyperOS 與 MIUI
HyperOS 常見路徑是「設定」→「應用程式設定」→「應用程式管理」→選取用戶端→「省電策略」→「不受限制」。然後進入「設定」→「應用程式設定」→「授權管理」→「背景自動啟動」,允許該用戶端自動啟動。舊版 MIUI 也可能在應用程式詳細資料頁直接顯示「自動啟動」開關。最近使用的工作介面中的鎖定圖示只能降低手動清理的機率,不能取代省電策略與背景自動啟動設定。
OPPO、OnePlus 與 realme
ColorOS 與 realme UI 的選單名稱會隨版本變化。常見入口為「設定」→「應用程式」→「應用程式管理」→選取用戶端→「耗電管理」,開啟「允許背景活動」;再進入「設定」→「電池」→「更多設定」→「最佳化電池用量」或「應用程式耗電管理」,將用戶端設為「不最佳化」。OnePlus 部分版本使用「設定」→「應用程式」→「特殊應用程式存取權」→「電池最佳化」路徑。
vivo 與 iQOO
OriginOS 常見路徑為「設定」→「應用程式與權限」→「應用程式管理」→選取用戶端→「電池」或「耗電管理」,允許「背景高耗電」。也應在「設定」→「電池」→「背景耗電管理」中找到用戶端並選擇允許背景執行。若系統管家提供「自動啟動」清單,也要允許用戶端在系統回收程序後恢復服務。
華為與榮耀
HarmonyOS 常見路徑為「設定」→「應用程式與服務」→「應用程式啟動管理」。找到用戶端後關閉自動管理,手動允許「自動啟動」、「關聯啟動」與「背景活動」。榮耀 MagicOS 的對應入口通常也位於應用程式啟動管理或電池最佳化頁面。設定完成後,不要直接使用系統管家的「一鍵最佳化」再次關閉這些權限。
| 系統 | 關鍵設定 | 還需檢查 |
|---|---|---|
| Pixel/原生 Android | 應用程式電池用量→不受限制 | 始終開啟 VPN |
| Samsung One UI | 應用程式→電池→不受限制 | 永不自動休眠清單 |
| 小米 HyperOS | 省電策略→不受限制 | 背景自動啟動 |
| ColorOS / realme UI | 允許背景活動 | 電池最佳化設為不最佳化 |
| OriginOS | 允許背景高耗電 | 背景耗電管理 |
| HarmonyOS / MagicOS | 手動管理應用程式啟動 | 自動啟動、關聯啟動、背景活動 |
手機品牌會在系統更新後調整選單名稱。如果依照表格找不到入口,可以在系統設定頂端搜尋「電池最佳化」、「背景活動」、「自動啟動」或「應用程式啟動管理」。最終目標有三項:允許背景執行、排除過度積極的電池最佳化、允許系統重新啟動或回收程序後恢復服務。
用固定測試流程驗證背景保活
設定完成後不要只觀察兩三分鐘。Android 的待機限制通常會在螢幕關閉一段時間後才明顯,網路切換也比持續使用同一個 Wi-Fi 更容易暴露問題。建議使用以下 30 分鐘流程,每一步都記錄用戶端通知、VPN 圖示、記錄時間與實際連網結果。
- 連線至 Wi-Fi,啟動用戶端,確認規則模式、目前節點與訂閱設定都已載入。
- 造訪一個直連目標與一個代理目標,在記錄中分別看到
DIRECT與對應策略群組命中。 - 關閉螢幕 15 分鐘,期間不要開啟用戶端;解鎖後立即測試網頁與訊息同步。
- 關閉 Wi-Fi,切換至 4G 或 5G,等待 30 秒,檢查服務是否自動重建連線。
- 再次關閉螢幕 15 分鐘,然後恢復 Wi-Fi,確認 DNS 查詢與新建 TCP 連線都能完成。
- 從最近使用的工作中滑除用戶端,再檢查 VPN 是否依照用戶端設計繼續執行。部分用戶端會將滑除視為停止指令,應以其設定說明為準。
延遲數字不等於實際可用性
節點清單中的延遲測試通常會請求指定 URL,只能反映該測試位址當時的建立連線時間。節點顯示 80 ms 但網頁打不開,可能是 DNS、UDP、規則選擇或目標網站連線問題;顯示逾時但瀏覽器可用,也可能是測試 URL 被節點或網路攔截。排查斷線時應查看連線記錄的時間順序,重點確認網路切換前後是否出現核心退出、介面關閉、DNS 逾時或策略群組找不到節點。
代理頻繁斷線的分層排查清單
第一層:確認 Android 沒有終止服務
- 檢查 VPN 圖示是否在螢幕關閉後消失。
- 檢查常駐通知是否被關閉;Android 13 及以上版本的通知權限會影響狀態可見性,部分用戶端也依賴前景服務通知。
- 確認省電模式、超級省電模式與睡眠模式沒有暫時覆蓋應用程式白名單。
- 檢查系統更新後「不受限制」、「背景高耗電」等選項是否被還原為預設值。
- 確認沒有排程清理、遊戲加速或系統管家工作結束用戶端程序。
第二層:區分核心停止與節點失效
如果本機記錄停止更新、用戶端首頁無法讀取流量統計,本機核心可能已經退出;如果記錄仍持續出現連線記錄,但反覆顯示逾時、連線遭拒或 TLS 交握失敗,則更可能是節點、線路或訂閱參數問題。此時切換同一策略群組內的另一個節點,比反覆重新啟動 VpnService 更有診斷價值。
訂閱更新後突然無法連線,應確認用戶端已重新載入設定。設定檔中的策略群組如果引用不存在的節點名稱,可能導致規則命中策略群組後沒有可用出口。查看記錄時要找到實際命中的策略群組與最終節點,不要只核對訂閱頁面顯示的節點數量。
第三層:檢查 DNS 與 IPv6
出現「部分應用程式正常、部分網域打不開」時,優先檢查 DNS。Fake-IP 模式需要用戶端正確接管 DNS 請求,並維護網域與虛擬位址的對應;系統私人 DNS、瀏覽器安全 DNS 與應用程式內建 DoH 可能繞過預期路徑。可以暫時將 Android 的「設定」→「網路與網際網路」→「私人 DNS」改為「自動」,重新啟動用戶端後再測試。
IPv6 也應單獨驗證。行動網路可能分配 IPv6,而設定或節點只穩定支援 IPv4。不要一開始就永久關閉 IPv6;先在相同網路、相同節點下分別測試,查看記錄中的目標位址族群與失敗類型,再決定是否調整設定中的 ipv6、DNS 回應策略或 TUN 路由。
第四層:檢查依應用程式代理
Android 用戶端通常提供「僅代理所選應用程式」與「排除所選應用程式」兩種相反模式。切換模式後應重新啟動服務,因為應用程式清單通常會在建立 VpnService 介面時寫入允許或禁止範圍。如果只有某一個應用程式無法連線,先確認它是否位於正確清單,再檢查該應用程式是否執行於工作設定檔、應用程式分身或另一個 Android 使用者中。
第五層:處理網路切換後的假連線
從 Wi-Fi 切換至行動網路時,舊連線使用的來源位址已經失效。用戶端應接收系統網路變更並重建必要連線,但部分長連線不會立即恢復。可以先等待 30 秒並重新開啟網頁;若仍沒有流量,再在用戶端執行一次停止與啟動。只有每次切換網路都必須手動重新啟動時,才應繼續檢查背景限制、系統 VPN 設定與用戶端記錄,而不是將它視為節點延遲問題。
穩定執行所需的最小設定
在 Android 上維持 Clash 類用戶端穩定,不需要開啟所有系統權限。最小設定可歸納為:完成 VpnService 系統授權;只保留一個啟用中的 VPN;允許用戶端在背景執行並排除過度積極的電池最佳化;按需開啟自動啟動;確認常駐通知與前景服務正常;使用固定流程驗證螢幕關閉以及 Wi-Fi、行動網路切換。
設定層面應先保持簡單。使用有效訂閱、一個明確的策略群組、易讀的 info 記錄層級與用戶端預設服務模式,確認運作後再加入 Fake-IP、依應用程式代理、自訂規則或 TUN 參數。遇到頻繁斷線時,依照「系統程序→本機核心→節點線路→DNS 與路由→應用程式範圍」的順序排查,有助於避免將所有故障都歸因於省電策略。