先判断:是否只有受隔离的应用连接失败

浏览器能正常访问,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 打开「设置」→「网络和 Internet」→「代理」→「手动设置代理」→「使用代理服务器」的「设置」。Windows 10 可在同名「代理」页面查看手动代理。
  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 代理与当前用户系统代理并非同一套设置;修改它可能影响系统服务,却未必影响目标应用。

客户端已有连接,但出站不符合预期

检查连接页面中的目标域名、命中规则与实际出站。回环豁免不改变规则优先级;若请求命中了 DIRECT,它仍会直连。只有在确认请求已进入客户端之后,短暂对比规则模式与全局模式才有诊断价值,测试结束应恢复原来的出站模式。

启用 TUN 后现象不同

TUN 模式能接管部分不使用系统代理的应用流量,但不等于关闭 Windows 网络隔离。如果应用仍被配置为连接本机代理,回环限制依然可能相关。应分别测试「系统代理开启、TUN 关闭」与「按客户端要求配置的 TUN 入口」,并记录差异,不要把两个开关同时打开后就认定问题已定位。

恢复方法:只移除本次添加的项目

不再需要本地代理访问时,可以在同一个辅助工具中取消目标应用的勾选并保存,也可以在管理员终端执行删除命令。以下仍以 Microsoft Store 为例:

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

CheckNetIsolation.exe LoopbackExempt -s

-d 删除指定条目。执行后重启目标应用,再确认列表和实际行为。只撤销本次新增的项目,不要删除原本就由开发工具或其他应用设置的豁免,也不要为了恢复单个应用而清空整张列表。

回环豁免与系统代理开关相互独立:关闭客户端的系统代理不会自动移除豁免;删除豁免也不会恢复 Windows 代理设置。如果准备停止使用客户端,应另外检查「设置」→「网络和 Internet」→「代理」,避免系统仍指向一个已经停止监听的本地端口。

常见问题

添加回环豁免后,应用一定会走代理吗?

不一定。豁免只解除对应 AppContainer 的回环访问限制。应用仍需使用本地代理地址,客户端仍需监听正确端口,并且具备可用配置。最终是直连还是代理,还取决于出站模式与命中规则。

换了订阅或节点,需要重新添加吗?

通常不需要。豁免绑定包身份,不绑定节点、订阅 URL 或本地端口。应用升级后若包族名称不变,一般无需重复添加;如果卸载重装后行为变化,应重新查询包身份及豁免列表。

使用 localhost 和 127.0.0.1 有区别吗?

localhost 可能解析到 IPv4 或 IPv6 回环地址。若代理只监听 127.0.0.1,而连接尝试使用 ::1,也会失败。排查时先用明确的 IPv4 地址核对监听情况,但这不能绕过 AppContainer 隔离。

是否应该给所有应用一次性添加豁免?

不建议。按应用添加更容易验证,也便于恢复。保留添加前的列表、记录目标包族名称、只修改必要条目,比批量调整更适合日常排障。