故障排除 預計閱讀 9 分鐘

Windows 市集應用開啟代理後無法連線:UWP 回送豁免設定方法

說明 UWP 應用程式預設無法存取本機回送位址的原因,示範使用 CheckNetIsolation 命令與圖形化工具解除限制,並介紹改用 TUN 的做法。

先判斷:是否只有市集應用程式無法連線

開啟 Clash Verge 系統代理後,瀏覽器可以正常瀏覽網站,但某個市集應用程式一直轉圈、登入失敗或顯示離線,可能與 AppContainer 的回送隔離有關。先別急著更換訂閱,應先確認應用程式能否連上本機代理監聽位址,例如 127.0.0.1:7897。

不過,「從 Microsoft Store 安裝」不代表「執行於 UWP 沙箱」。市集也會提供一般桌面程式、封裝的 Win32 程式及其他類型的應用程式。回送豁免主要適用於受到 AppContainer 網路隔離限制的處理程序,不能當成所有市集應用程式連線問題的通用解法。

  • 瀏覽器也無法連線:先檢查代理連接埠、節點連線狀態、訂閱是否已載入,以及系統代理位址是否正確。
  • 只有一個沙箱應用程式無法連線:優先確認其套件身分,再嘗試只為該應用程式新增回送豁免。
  • 關閉系統代理後恢復正常:表示問題與代理連線路徑有關,但仍需釐清是回送限制、應用程式不支援代理,還是遠端服務拒絕連線。
  • 關閉代理後仍無法連線:檢查系統時間、應用程式服務狀態、帳戶登入情形及本機網路;回送豁免通常不是優先處理方式。

UWP 回送隔離與系統代理的關係

系統代理只是提供代理位址給遵循此設定的應用程式,不會自動接管所有處理程序的網路連線。代理用戶端通常會在本機監聽 HTTP 或混合代理連接埠;應用程式先連上本機連接埠,再由核心依據規則選擇直連或透過代理節點連線。

對受到網路隔離限制的 AppContainer 應用程式而言,預設無法自由存取本機回送位址。因此,即使代理核心運作正常、瀏覽器也能上網,應用程式仍可能在連接本機代理的第一步就失敗。此處的「回送」是指連線至目前這台電腦,例如 IPv4 的 127.0.0.1 和 IPv6 的 ::1,並非連線至遠端節點。

回送豁免能解決與不能解決的問題

  • 回送豁免可讓指定套件的 AppContainer 存取本機回送服務,適用於本機代理連線遭此限制阻擋的情況。
  • 它不會自動替應用程式設定代理位址,也不會強制所有網路程式庫遵循 Windows 系統代理設定。
  • 它無法修復訂閱失效、DNS 錯誤、節點逾時、憑證錯誤或應用程式本身的地區限制。
  • 它不會變更 Clash/mihomo 的分流規則;解除限制後要直連或使用代理,仍由有效設定與策略群組決定。

請勿為了繞過回送限制而將監聽位址改為 0.0.0.0,或直接關閉 Windows 防火牆。這會擴大本機服務的暴露範圍,卻沒有真正處理應用程式的隔離限制。

使用 CheckNetIsolation 為單一應用程式新增豁免

1. 確認本機代理確實可用

在 Windows 11 開啟「設定」→「網路和網際網路」→「Proxy」→「手動設定 Proxy」,查看位址與連接埠;Windows 10 的位置則是「設定」→「網路和網際網路」→「Proxy」。若由用戶端管理系統代理,請先在用戶端確認監聽連接埠,避免兩邊設定互相覆蓋。

開啟 PowerShell,測試連接埠是否在監聽,並明確指定代理發出一次 HTTPS 請求:

Test-NetConnection -ComputerName 127.0.0.1 -Port 7897
curl.exe --proxy http://127.0.0.1:7897 --head --connect-timeout 10 https://www.microsoft.com/

TcpTestSucceeded : True 只代表 TCP 連接埠可連線,不代表節點和網站一定可存取。第二個命令會將連線逾時設為 10 秒;收到 HTTP 回應表示這次請求已取得應用程式層的回應。若連線遭拒,請先修正連接埠或啟動核心,無須繼續新增豁免。

2. 查詢應用程式的 PackageFamilyName

在「開始」功能表搜尋 PowerShell,選擇「以系統管理員身分執行」。以下以 Microsoft Store 套件為例,先查詢目前使用者已安裝的套件身分:

Get-AppxPackage -Name Microsoft.WindowsStore |
  Select-Object Name, PackageFamilyName, PackageFullName

命令需要的是 PackageFamilyName,不是應用程式顯示名稱,也不是包含版本號與架構資訊的 PackageFullName。Microsoft Store 常見的套件系列名稱為 Microsoft.WindowsStore_8wekyb3d8bbwe,執行前仍應確認實際查詢結果。

若目標是其他應用程式,先列出目前使用者的套件,再依據 Name 搜尋。不要只因顯示名稱相似,就對所有查詢結果新增豁免:

Get-AppxPackage |
  Sort-Object Name |
  Select-Object Name, PackageFamilyName

查無結果時,請先確認應用程式是否安裝在目前帳戶下,以及它是否為一般桌面程式。若使用另一個系統管理員帳戶提升權限,查到的目前使用者套件清單也可能不同;不要直接將「查無結果」解讀為套件已損毀。

3. 新增豁免並檢查清單

在系統管理員終端機執行以下命令。第一個命令會新增單一套件,第二個則顯示目前的豁免清單:

CheckNetIsolation.exe LoopbackExempt -a -n="Microsoft.WindowsStore_8wekyb3d8bbwe"
CheckNetIsolation.exe LoopbackExempt -s

其中 -a 代表新增,-n 後方是套件系列名稱,-s 則代表查詢。清單有時會以 SID 或包含套件名稱的資訊呈現,顯示方式可能因系統環境而異。若出現「拒絕存取」,請先確認終端機是否以提升權限執行;若出現名稱相關錯誤,請重新確認複製的欄位。

先儲存工作,再完全結束目標應用程式,然後從「開始」功能表重新開啟。若應用程式仍有背景處理程序,可在工作管理員中結束已確認屬於該應用程式的處理程序後重試;請勿結束用途不明的系統處理程序。

4. 保留可復原的操作方式

測試完成後,若不再需要此權限,可以只刪除剛才新增的項目:

CheckNetIsolation.exe LoopbackExempt -d -n="Microsoft.WindowsStore_8wekyb3d8bbwe"
CheckNetIsolation.exe LoopbackExempt -s

-d 代表刪除。建議記錄操作日期、目標套件與重新測試結果;不要一次清除所有既有豁免,以免影響其他應用程式已設定的本機通訊。

圖形化工具:只選取目標套件,切勿全選

如果目前的用戶端提供「UWP 回送豁免」入口,可以透過該入口啟動圖形化管理工具。不同用戶端、分支與版本的入口位置並不一致,不能直接套用某個舊版用戶端的按鈕位置到 Clash Verge Rev。若找不到入口,使用上述系統命令即可,無須另外安裝工具。

常見的圖形化工具包括 Fiddler Classic 的 WinConfig/AppContainer Loopback Exemption Utility。若系統已安裝並信任此工具,可用它管理回送權限。這裡只會用到豁免管理功能,無須啟用 HTTPS 解密或匯入封包擷取根憑證。

  1. 以系統管理員權限開啟回送豁免工具,等待它列出本機應用程式套件。
  2. 依據應用程式名稱與套件身分找出目標;若名稱不明確,請回到 PowerShell 查詢確認。
  3. 只勾選需要存取本機代理的應用程式,再按下工具中的儲存按鈕,例如 Save Changes。
  4. 執行 CheckNetIsolation.exe LoopbackExempt -s 確認設定,再重新啟動目標應用程式進行測試。

改用 TUN:適用於不遵循系統代理的應用程式

若回送豁免已生效,但應用程式根本不讀取系統代理設定,繼續修改清單也不會讓它自動使用 HTTP 代理。此時可考慮 mihomo 的 TUN 模式:透過虛擬網路介面與路由接管符合條件的 IP 流量,再交由規則處理。

TUN 的流量接管方式與「應用程式主動連線至本機 HTTP 代理」不同,因此常用來處理不遵循系統代理的流量。不過,TUN 並非能無條件解決 UWP 網路隔離問題的開關;應用程式權限、防火牆、路由與 DNS 設定仍可能影響結果。

  1. 先記錄目前的系統代理、TUN、DNS 與策略群組狀態,確保需要時能還原。
  2. 在 Clash Verge Rev 中確認服務模式可正常使用,再啟用 TUN。服務安裝與設定入口依實際版本介面為準;首次安裝服務可能需要系統管理員授權。
  3. 為了區分流量接管方式,測試時先關閉系統代理,只保留 TUN;請勿同時執行其他 VPN 或代理用戶端進行比對。
  4. 重新測試同一個應用程式中的同一項操作,並查看用戶端的連線記錄、目標網域與命中規則,而不只確認系統匣圖示是否亮起。

若啟用 TUN 後連瀏覽器也無法解析網域,應優先檢查 DNS 與路由,而非繼續新增回送豁免。使用公司 VPN、虛擬機器網路或其他通道時,自動路由可能互相衝突;請停止測試並還原原有狀態,再逐項比對。TUN 也不會強制將應用程式的所有流量送往同一個節點,規則中的 DIRECT 仍可能讓目標直連。

新增豁免後仍無法連線:依連線階段逐步排查

現象 優先檢查項目 下一步
本機連接埠測試失敗 核心是否正在執行、連接埠是否一致 確認實際監聽連接埠後重新測試
指定代理的 curl 請求也失敗 節點、DNS、規則與遠端連線 先修復代理連線,再重新確認是否需要新增豁免
豁免已存在,但應用程式沒有連線記錄 套件身分、應用程式的代理支援、背景處理程序 完全結束應用程式後重測,必要時再與 TUN 模式比對
已有連線記錄,但登入失敗 命中的策略、伺服器回應、帳戶狀態 依據具體網域與錯誤碼檢查

連線記錄中沒有項目,不能單憑這點就認定是回送隔離所致:應用程式可能沒有發出請求、使用了快取,或採用未受接管的連線路徑。反之,若已看到目標網域並命中預期策略,通常應改為檢查 DNS 結果、節點出口與伺服器回應。

不要把 netsh winhttp import proxy source=ie 當成修復 UWP 回送問題的命令。它的用途是匯入 WinHTTP 代理設定,不會修改 AppContainer 回送權限,也不保證改變目標應用程式使用的網路堆疊。只有在確認某項服務使用 WinHTTP 後,才應先了解影響範圍再個別處理。

至少應記錄以下資訊,才能重現問題:Windows 版本、用戶端與核心版本、應用程式套件系列名稱、代理監聽連接埠、系統代理與 TUN 的開關狀態,以及觸發錯誤的具體步驟。使用 winver 查看系統版本,再一次只修改一個變數,通常比同時更換節點、修改 DNS、啟用 TUN 更容易找出原因。規則與流量接管設定可參閱設定參考;基本連線問題則可查看常見問題與疑難排解。

下載 Clash選擇系統與安裝套件