1. 瀏覽器可上網,商店應用程式卻連不上:先確認是否為回環限制
在 Windows 10 或 Windows 11 上,Clash Meta 用戶端已啟用系統代理,瀏覽器也能開啟目標網站,但某個應用程式仍顯示網路無法使用。這種情況可能與 AppContainer 網路隔離有關:受隔離的應用程式預設無法像一般桌面程式一樣,直接連線至本機回環位址上的服務。
常見的代理位址是 127.0.0.1:7890。其中 127.0.0.1 指向目前這台電腦,7890 是範例連接埠,並非所有用戶端都固定使用這個值。如果應用程式讀取了系統代理,卻無權連線至這個本機監聽連接埠,要求可能還沒到達 mihomo 核心就已失敗。
先記下三項檢查結果
- 一般瀏覽器是否能正常連線:使用相同的目標位址,確認節點、訂閱與基本網路皆可正常使用。
- 代理監聽連接埠是否正確:在用戶端設定或目前生效的設定檔中,確認 HTTP 連接埠或混合連接埠;不要把外部控制連接埠誤認為代理連接埠。
- 應用程式的要求是否進入核心:開啟用戶端的連線清單或記錄,再重新觸發應用程式的要求。完全沒有記錄,只能表示需要檢查流量接管路徑,不能單憑這點就判定是回環限制。
回環豁免只會解決應用程式存取本機服務的權限問題,不會修復過期訂閱、失效節點或遠端伺服器故障,也不會讓原本忽略系統代理的程式突然開始使用 HTTP 代理。
2. 確認系統代理與 mihomo 監聽連接埠
開啟 Windows「設定」→「網路和網際網路」→「Proxy」→「手動 Proxy 設定」。在 Windows 11 中,通常要點選「使用 Proxy 伺服器」旁的「編輯」。確認位址與連接埠符合目前用戶端的設定;使用本機 mihomo 時,常見組合是位址 127.0.0.1、連接埠 7890。
在 Clash Meta 設定中,mixed-port 可同時接受 HTTP 與 SOCKS 代理連線。以下僅為監聽相關設定片段,請合併至現有設定,不要取代整份訂閱檔案:
mixed-port: 7890
allow-lan: false
mode: rule
用戶端可能會透過覆寫功能產生最終設定。請確認實際生效的值,不要只修改未載入的 YAML。UWP 要存取本機代理,不需要開啟區域網路存取,也不應為了排除問題就把監聽位址改成所有網路介面。
使用 PowerShell 檢查本機連接埠
Get-NetTCPConnection -State Listen -LocalPort 7890 |
Select-Object LocalAddress, LocalPort, OwningProcess
curl.exe --proxy http://127.0.0.1:7890 --head --max-time 15 https://www.microsoft.com/
第一個命令會檢查 TCP 監聽狀態;第二個命令則讓一般桌面程序明確使用代理。請將連接埠替換為實際使用的值。收到 HTTP 回應,表示這次代理連線有回應,但不代表受隔離的應用程式也有權存取回環位址。若連線遭拒,先檢查核心是否已啟動、連接埠是否衝突;若逾時,再檢查節點、規則與目標網站。
不要直接用 netsh winhttp show proxy 的結果,取代 Windows 設定頁的檢查。WinHTTP 代理與使用者層級的系統代理是兩套不同設定,各應用程式採用的網路介面也可能不同。
3. 使用 CheckNetIsolation 為指定應用程式新增回環豁免
CheckNetIsolation.exe 是 Windows 提供的網路隔離診斷工具。新增或移除回環豁免時,請以系統管理員身分開啟 Windows Terminal 或 PowerShell。建議只為確實需要的應用程式進行操作:先保存現有清單,再逐一新增套件。
步驟一:查看現有豁免與應用程式套件名稱
CheckNetIsolation.exe LoopbackExempt -s
Get-AppxPackage |
Sort-Object Name |
Select-Object Name, PackageFamilyName
第二個命令預設會列出目前使用者的應用程式套件。找到目標應用程式後,請使用它的 PackageFamilyName,不要使用顯示名稱、安裝目錄或帶有版本號的 PackageFullName。應用程式很多時,可以依已知名稱片段篩選。以下以 Microsoft Store 套件為例,並不代表所有網路問題都需要替商店本身新增豁免。
Get-AppxPackage -Name Microsoft.WindowsStore |
Select-Object Name, PackageFamilyName
如果系統管理員終端機使用的是另一個帳戶,列出的套件可能與平常使用的帳戶不同。請先返回目標使用者的工作階段確認套件身分;找不到套件時,不要直接授權所有已安裝的應用程式。
步驟二:為單一套件新增豁免
以下 PowerShell 命令會讀取目前使用者已安裝的 Microsoft Store 套件,再將實際的套件家族名稱傳給系統工具。若要處理其他應用程式,請先從上一份清單確認正確的 Name,再修改查詢條件。
$app = Get-AppxPackage -Name Microsoft.WindowsStore
if ($null -eq $app) {
throw "找不到目前使用者的 Microsoft.WindowsStore 套件,請檢查使用者與套件名稱。"
}
CheckNetIsolation.exe LoopbackExempt -a "-n=$($app.PackageFamilyName)"
CheckNetIsolation.exe LoopbackExempt -s
確認輸出中列出目標套件後,請完全結束目標應用程式再重新開啟。只關閉視窗可能還會留下背景程序;可以在工作管理員確認目標應用程式已結束,但不要結束系統關鍵程序。重新送出要求時,同時查看 Clash Meta 的連線清單。
步驟三:確認效果並保留復原方式
如果應用程式恢復連線,而且 mihomo 記錄中出現對應連線,表示這條存取路徑已經打通。若仍無法連線,不要反覆新增相同豁免;接著檢查應用程式是否讀取系統代理、是否有獨立的背景元件,以及代理規則是否將目標網域分配至預期的策略群組。
$app = Get-AppxPackage -Name Microsoft.WindowsStore
if ($null -ne $app) {
CheckNetIsolation.exe LoopbackExempt -d "-n=$($app.PackageFamilyName)"
}
CheckNetIsolation.exe LoopbackExempt -s
以上命令會移除這個套件的豁免。回環授權允許應用程式存取本機服務,範圍不限於 Clash 的連接埠;如果測試無效或已不再使用,請撤銷對應項目。不要用清除整份清單取代單項撤銷,以免影響其他工具原有的設定。
4. 圖形介面操作:使用 AppContainer 回環豁免工具
如果電腦已安裝 Fiddler Classic,可以透過其 WinConfig 入口開啟 AppContainer Loopback Exemption Utility。這裡指的是 Fiddler Classic 的工具,不是 Fiddler Everywhere;不同版本的按鈕位置可能有所差異。
- 開啟 Fiddler Classic,點選工具列上的 WinConfig,並依照提示授予系統管理員權限。
- 在 AppContainer 清單中找到目標應用程式並確認套件身分,不要只憑相似的顯示名稱判斷。
- 勾選目標項目,點選 Save Changes 儲存,然後完全結束並重新啟動目標應用程式。
- 返回系統管理員終端機,執行
CheckNetIsolation.exe LoopbackExempt -s,確認系統中的最終記錄。
圖形工具與命令列最終修改的是同一類系統豁免設定,不必兩種都操作,也不建議為了省事就選取所有應用程式。來源不明的「一鍵修復」指令碼也可能同時修改防火牆、DNS 或代理設定;排除問題時,應避免一次改動多個變因。
5. 回環豁免與 TUN 模式:依流量路徑選擇
系統代理仰賴應用程式主動使用代理介面;回環豁免則讓受隔離的應用程式能存取本機代理連接埠。TUN 模式透過虛擬網路介面與路由接管流量,通常不需要應用程式先連線至 127.0.0.1:7890。因此,對於忽略系統代理的程式,值得測試 TUN 模式;但它並不是「更強的回環豁免」。
| 方案 | 適用情境 | 主要限制 |
|---|---|---|
| 系統代理 | 應用程式支援並讀取使用者代理設定 | 無法保證接管所有程式與 UDP 流量 |
| 系統代理+回環豁免 | 受隔離的應用程式需要連線至本機代理 | 只增加存取權限,不會強制應用程式使用代理 |
| mihomo TUN | 應用程式忽略系統代理,或需要接管 IP 流量 | 需要搭配權限、路由與 DNS 設定,也可能與其他 VPN 衝突 |
TUN 設定片段與啟用條件
建議先從所用 Windows 用戶端的 TUN 設定入口啟用,並依提示安裝服務或授予系統管理員權限。不同用戶端的選單名稱不盡相同。若要手動設定,以下是 mihomo 可用的 TUN 設定片段;請保留原有節點、代理群組、規則與 DNS 設定。
tun:
enable: true
stack: mixed
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53
dns-hijack 須搭配已啟用且正常運作的 mihomo DNS 模組使用;它不是完整的 DNS 設定,也無法攔截所有加密 DNS。auto-route 用於自動設定流量接管路由,auto-detect-interface 則用於辨識出口介面。多張網卡、企業 VPN 與虛擬機網路同時存在時,自動選擇的結果可能不如預期,需另外檢查。
為了分辨效果,可以先關閉系統代理,只啟用 TUN 進行一次對照測試,避免要求仍經由舊的本機代理路徑傳送。測試前先記下原本的開關狀態;結束後再恢復所需方案。不要同時啟用多套代理軟體的 TUN 或 VPN 流量接管,也不要為了測試網路而關閉整個防火牆。
6. 新增豁免後仍無法連線:依連線記錄繼續排查
核心中沒有應用程式的連線記錄
先確認應用程式是否已完全重新啟動,以及豁免是否新增給實際發出網路要求的套件。有些應用程式會將登入、媒體或更新工作交給獨立程序;只替主介面新增豁免,不一定涵蓋這些元件。如果應用程式原本就不讀取系統代理,應測試 TUN,而不是繼續更換回環位址。
連線已進入核心,但命中 DIRECT 或錯誤的代理群組
確認 mode: rule 是否生效,並查看該連線命中的規則。Clash Meta 的 rules 會依序比對,前面的規則可以覆蓋後面的規則。不要只為了讓單一應用程式恢復連線,就永久切換成全域模式;應先確認目標網域與策略,再透過訂閱覆寫調整必要規則,避免下次更新訂閱時被覆蓋。
只有登入、下載或影片功能無法使用
這些功能可能使用不同網域、程序或傳輸協定。HTTP 系統代理能處理的連線路徑,與應用程式直接傳送 UDP 的路徑並不相同。記下故障時間、目標位址與核心記錄,再分別檢查 DNS、節點能力與分流規則;回環豁免本身不會改變上游節點支援的協定。
一次只變更一個項目
- 記下目前的代理連接埠、系統代理開關、TUN 開關與現有豁免清單。
- 先確認一般桌面程式能透過本機代理連線至目標網站。
- 只替目標套件新增豁免,重新啟動應用程式並查看連線記錄。
- 若無效,撤銷不需要的豁免,再單獨測試 TUN 路徑。
- 若問題仍未解決,保留錯誤訊息與命中規則;分享記錄前,請移除訂閱網址、存取權杖與個人資料。
判斷問題是否已修復,應同時確認應用程式功能是否恢復、流量是否進入預期的核心,以及規則是否命中預期的出口。只看到「已成功新增豁免」,只能證明系統接受了設定,不能證明整條代理連線已正常運作。