先確認:是否只有受隔離的應用程式連線失敗

瀏覽器可以正常連線,但 Microsoft Store 或某個 UWP 應用卻顯示離線,不一定代表節點失效。如果 Windows 系統代理指向 127.0.0.1:7890,而目標應用程式執行於 AppContainer 中,請檢查它是否遭到禁止連線至本機回環位址。此時請求可能根本還沒送到 Clash 核心,調整代理規則或一再更新訂閱通常也無濟於事。

本文適用於 Windows 10、Windows 11 使用本機 HTTP 代理或混合埠的排查情境。7890 僅為下文範例埠號,實際值請以用戶端設定為準。本網站品牌為 Clash for Mac,但以下命令必須在 Windows 中執行,不能直接在 macOS 終端機使用。

  • 瀏覽器和目標應用程式都連線失敗:先檢查訂閱是否已載入、代理群組是否選到可用節點,以及本機埠是否正在監聽。
  • 瀏覽器正常,特定 UWP 應用程式失敗:回環限制值得列入排查,但仍須確認應用程式本身的服務是否正常。
  • 用戶端已記錄目標請求:表示這次請求已進入用戶端,接著應檢查比對規則、出口及連線錯誤。
  • 只有部分下載或登入功能失敗:問題可能與背景服務、其他套件或不同網路堆疊有關,不能直接歸因於單一應用程式的回環權限。

AppContainer 為何無法連線至本機代理

系統代理常見的請求流程如下:應用程式讀取系統代理設定,將 HTTP 請求或 HTTPS CONNECT 請求送至本機代理埠,再由核心依規則選擇直連或代理節點。此處的 127.0.0.1 是 IPv4 回環位址,指向目前的 Windows 主機,而非遠端節點。

AppContainer 為應用程式提供隔離的執行環境。預設的網路隔離原則通常不允許其中的應用程式直接存取本機回環服務。即使代理程序已在埠上監聽,一般桌面瀏覽器也能連線,受隔離的應用程式仍可能在連到代理前就遭到封鎖。

回環豁免會變更什麼

CheckNetIsolation.exe 的 LoopbackExempt 子命令可用來管理回環豁免。新增指定套件後,即可解除對應 AppContainer 的回環限制;但它不會自動啟用系統代理、匯入訂閱、選取代理群組,也不會替應用程式新增所需的網路功能。

設定主要用途無法取代的檢查項目
系統代理提供代理位址與埠號給遵循此設定的應用程式應用程式是否讀取設定、埠是否正在監聽
回環豁免解除指定 AppContainer 的回環存取限制代理協定、分流規則、節點可用性
TUN 模式透過虛擬網卡與路由接管符合條件的 IP 流量路由、DNS、權限及其他網路篩選原則

開啟「允許區域網路連線」通常無法解決這個問題。此選項主要用來變更代理的監聽範圍;讓埠接受區域網路連線,不等於授予 AppContainer 回環權限,還會擴大埠的可存取範圍。

操作前確認代理位址與監聽埠

  1. 開啟用戶端設定,尋找「混合埠」或 HTTP 代理埠,並記下實際數值。請勿將 SOCKS 專用埠誤當成 HTTP 代理埠。
  2. 在 Windows 11 開啟「設定」→「網路和網際網路」→「Proxy」→「手動 Proxy 設定」→「使用 Proxy 伺服器」旁的「設定」。Windows 10 可在同名的「Proxy」頁面查看手動 Proxy 設定。
  3. 確認位址與埠號,例如位址為 127.0.0.1、埠號為 7890。也請確認用戶端的「系統代理」已啟用。
  4. 暫時關閉其他代理軟體,避免多個用戶端反覆覆寫系統代理。初步排查時,盡量只保留一個流量入口。

在 PowerShell 中執行以下命令,分別檢查本機 TCP 埠及一次明確指定代理的請求:

Test-NetConnection -ComputerName 127.0.0.1 -Port 7890

curl.exe --proxy http://127.0.0.1:7890 --head --max-time 20 https://www.microsoft.com/

TcpTestSucceeded : True 只表示 TCP 連線成功,不代表代理協定、TLS 或遠端節點一定正常。第二個命令會明確指定 HTTP 代理,最多等待 20 秒;若使用其他埠號,請一併修改。此處使用 curl.exe,避免 Windows PowerShell 中同名別名造成參數差異。

這些命令在一般桌面程序中執行,無法證明 UWP 已取得回環存取權限。其用途是先確認代理入口可用,避免把埠號填錯誤判為隔離問題。

方法一:使用用戶端內建的回環工具

部分 Windows 用戶端提供 UWP 回環輔助工具。舊版 Clash for Windows 常見的操作路徑為 General → UWP Loopback → Launch Helper。這是特定用戶端的介面路徑,並非所有 Clash 或 mihomo 圖形介面用戶端都有的通用選單,也不必為了這項工具改用舊版用戶端。

  1. 確認用戶端的本機代理埠已可使用,再開啟回環輔助工具。
  2. 如果 Windows 顯示使用者帳戶控制提示,請確認程式來源後再授權。變更回環豁免通常需要系統管理員權限。
  3. 在清單中找到要排查的應用程式。確認應用程式名稱與套件資訊,只勾選實際需要使用本機代理的項目。
  4. 按一下工具提供的儲存或套用按鈕。部分工具會顯示英文 Save Changes,請依目前介面操作。
  5. 完全結束目標應用程式後再重新開啟,並重做原先失敗的操作。只關閉視窗不一定會結束背景程序。

若清單中沒有目標應用程式,請先確認它已安裝在目前的使用者帳戶中。不要只因名稱相似就選取其他套件,也不建議直接批次授權所有應用程式。若沒有輔助工具,可使用下一節的系統命令;同樣可以查詢及還原設定。

方法二:使用 CheckNetIsolation 新增指定套件

1. 查詢 PackageFamilyName

在安裝目標應用程式的 Windows 使用者工作階段中開啟 PowerShell,先以 Microsoft Store 為例查詢套件家族名稱:

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

常見的 Store 套件家族名稱為 Microsoft.WindowsStore_8wekyb3d8bbwe。操作前仍請以本機查詢結果為準。命令需要的是 PackageFamilyName,請勿誤用包含版本號、架構等資訊的 PackageFullName,也不要填入商店頁面的產品識別碼。

若不知道目標套件的內部名稱,可先列出目前使用者的套件,再依輸出結果確認:

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

若查不到結果,請先確認目前登入的使用者與安裝應用程式的帳戶是否相同。改用另一個管理員帳戶提升權限時,套件查詢的使用者範圍也可能改變。請勿把 -AllUsers 當成預設的解決方式,尤其是在多人共用的電腦上。

2. 記錄目前狀態並新增豁免

在「開始」按鈕上按右鍵,選擇「終端機(系統管理員)」或「Windows PowerShell(系統管理員)」。先查詢目前清單,再為已確認的套件新增豁免:

CheckNetIsolation.exe LoopbackExempt -s

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

CheckNetIsolation.exe LoopbackExempt -s
  • -s:顯示目前的回環豁免清單。
  • -a:新增一項豁免。
  • -n:指定套件家族名稱。排查其他應用程式時,請使用查詢所得的實際名稱。

建議新增前先儲存或複製清單,以便確認哪些項目原本就已存在。清單可能同時顯示名稱與 SID,應確認目標套件對應的項目,而非只看命令是否顯示成功訊息。若出現「拒絕存取」,先確認終端機是否已提升權限,不要一再更改套件名稱嘗試。

3. 重新啟動應用程式並重現請求

結束目標應用程式,必要時透過工作管理員結束其程序,再重新開啟。測試時維持相同的代理群組、網路與操作,例如重新整理商店首頁,才能比較新增豁免前後的差異。通常不必先重新啟動整台電腦,也不要同時重設網路或修改 DNS,否則難以找出真正有效的步驟。

新增後仍無法使用:沿著請求路徑繼續排查

用戶端未顯示新的連線

先確認豁免是否授予真正發出網路請求的套件,再檢查系統代理位址、埠號與略過清單。有些應用程式不會讀取系統代理,有些下載工作則由背景服務執行。只替前景介面新增豁免,不一定會改變背景服務的網路行為。

不要把 netsh winhttp set proxy 當成所有商店應用程式的通用修復方式。WinHTTP 代理與目前使用者的系統代理並非同一組設定;修改 WinHTTP 代理可能影響系統服務,卻不一定影響目標應用程式。

用戶端已有連線,但出口不如預期

檢查連線頁面中的目標網域、命中規則與實際出口。回環豁免不會改變規則優先順序;若請求命中 DIRECT,流量仍會直連。確認請求已進入用戶端後,短暫切換規則模式與全域模式比較才有診斷價值;測試結束後請還原原本的出口模式。

啟用 TUN 後,情況有所不同

TUN 模式可接管部分未使用系統代理的應用程式流量,但不代表 Windows 網路隔離已停用。如果應用程式仍設定為連線至本機代理,回環限制依然可能是原因。請分別測試「開啟系統代理、關閉 TUN」與「依用戶端要求設定的 TUN 入口」,並記錄差異;不要同時開啟兩個選項後就認定已找到問題原因。

還原方式:只移除這次新增的項目

不再需要本機代理存取權時,可在同一個輔助工具中取消勾選目標應用程式並儲存,也可在系統管理員終端機中執行刪除命令。以下仍以 Microsoft Store 為例:

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

CheckNetIsolation.exe LoopbackExempt -s

-d 可刪除指定項目。執行後重新啟動目標應用程式,再確認清單與實際狀況。只撤銷這次新增的項目,不要刪除原本由開發工具或其他應用程式設定的豁免,也不要為了還原單一應用程式而清空整份清單。

回環豁免與系統代理開關彼此獨立:關閉用戶端的系統代理不會自動移除豁免;刪除豁免也不會還原 Windows 代理設定。若打算停止使用用戶端,請另外檢查「設定」→「網路和網際網路」→「Proxy」,避免系統仍指向已停止監聽的本機埠。

常見問題

新增回環豁免後,應用程式就一定會使用代理嗎?

不一定。豁免只會解除對應 AppContainer 的回環存取限制。應用程式仍須使用本機代理位址,用戶端也必須監聽正確的埠,並具備可用的設定。流量最後是直連或透過代理,還取決於出口模式與命中規則。

更換訂閱或節點後,需要重新新增豁免嗎?

通常不需要。豁免綁定的是套件身分,與節點、訂閱 URL 或本機埠無關。應用程式升級後若套件家族名稱未變,通常不必重新新增;若解除安裝再安裝後行為有變,請重新查詢套件身分與豁免清單。

使用 localhost 和 127.0.0.1 有差別嗎?

localhost 可能解析為 IPv4 或 IPv6 回環位址。若代理只監聽 127.0.0.1,但連線嘗試使用 ::1,同樣會失敗。排查時先使用明確的 IPv4 位址確認監聽狀況,但這無法繞過 AppContainer 隔離。

應該一次替所有應用程式新增豁免嗎?

不建議。逐一新增應用程式的豁免更容易驗證,也方便還原。保留新增前的清單、記下目標套件家族名稱,只修改必要項目,比批次調整更適合日常排除故障。