先确认:浏览器正常,只有某个商店应用失败
先保持 Clash 客户端运行,确认订阅已启用、节点能连接,再打开有问题的应用。如果浏览器可以经系统代理访问网络,某个 UWP 应用却提示离线、登录超时,或始终无法刷新内容,就值得检查本地回环限制。不要一开始就换订阅、改 DNS,或者把所有应用都加入豁免。
本文适用于 Windows 10、Windows 11 上使用本机 HTTP 代理的排查。不同客户端的界面名称会变化,底层操作则可以用 Windows 自带的 CheckNetIsolation.exe 完成。文中的 7890 是配置示例,不是所有客户端的固定端口,操作前必须与当前配置核对。
先做三项检查
- 在客户端确认系统代理已开启。Windows 11 可进入「设置」→「网络和 Internet」→「代理」→「手动设置代理」,检查代理服务器是否指向本机地址,例如
127.0.0.1:7890。Windows 10 的对应入口是「设置」→「网络和 Internet」→「代理」。 - 确认该端口确实是 HTTP 端口或
mixed-port。只提供 SOCKS5 的端口不能直接当成 Windows 手动 HTTP 代理端口使用。 - 打开客户端连接列表或日志,再让目标应用刷新一次。记录时间、是否出现连接、命中什么规则,以及是否有连接失败提示。
UWP 回环限制:为什么本机代理也可能连不上
本地回环是应用访问同一台电脑上的网络服务,例如连接 127.0.0.1 或 IPv6 的 ::1。Clash、Clash Meta(mihomo)内核通常在本机监听代理端口,桌面应用把请求交给这个端口,再由内核根据规则选择直连或代理节点。
UWP 常用的 AppContainer 沙盒有网络隔离规则。应用即使读取到系统代理配置,也可能受限而无法访问本机代理监听端口。因此,“设置里已经开了系统代理”和“应用能连接本机代理”是两个不同条件。这时应用可能直接报错,也可能按自身逻辑尝试其他网络路径,不能一概理解为它必然绕过代理。
普通代理路径:
应用 → 127.0.0.1:7890 → Clash / mihomo → 规则分流 → 目标服务
可能受限的位置:
AppContainer 应用 → 本机回环端口受限 → 请求未进入代理内核
添加回环豁免,是允许指定应用跨过这项回环隔离限制;它不会替应用配置代理,也不会保证应用采用系统代理。标题里的“解除”,指解除相应应用的回环限制,实际执行的是添加豁免,不是删除豁免。
- 与规则模式不同:规则决定请求进入内核后的出口,不能修复请求到达内核之前的沙盒限制。
- 与订阅不同:订阅提供节点、策略组或规则配置,不负责修改 Windows 的应用隔离状态。
- 与 allow-lan 不同:
allow-lan面向局域网设备访问代理;为本机 UWP 排查回环问题,不需要先开放局域网访问。
方法一:使用客户端内置的回环豁免工具
先在客户端设置或工具区域寻找“UWP 回环”“回环豁免”“Loopback”或“UWP Loopback”入口。有的版本会打开一个独立工具,有的版本没有提供该功能。不要为了找同名按钮而安装已经停止维护的旧客户端;找不到入口时,直接使用下一节的系统命令即可。
按目标应用勾选并保存
- 保持目标应用已安装,先退出该应用,避免操作后仍在复用旧连接。
- 打开客户端的回环工具。如果系统弹出用户账户控制提示,核对程序来源后再授予管理员权限。
- 在列表中找到目标应用,核对显示名称和包信息,仅勾选需要访问本机代理的应用。
- 点击工具中的“保存”“应用”或对应的提交按钮。只勾选而不保存,通常不会改变系统状态。
- 重新启动目标应用,触发一次明确的网络操作,同时查看客户端连接列表。
如果列表里看不到目标应用,先检查它是否安装在当前 Windows 用户下,再重新打开工具。部分工具不能完整展示新版本应用或其他账户的包;这时应查询实际包族名称,而不是选择名字相近的项目。
方法二:用 CheckNetIsolation 添加指定包的豁免
右键开始菜单,选择「终端(管理员)」;Windows 10 也可能显示「Windows PowerShell(管理员)」。以下查询包信息的命令需要 PowerShell 环境。管理员权限用于修改豁免列表,查询时则要注意当前用户:如果通过另一位管理员的凭据启动终端,看到的应用列表可能不是原来登录账户的列表。
第一步:记录现有豁免列表
CheckNetIsolation.exe LoopbackExempt -s
-s 用于列出现有回环豁免。先保留这次输出,方便判断目标包是否原本已经存在。输出可能包含应用名称和安全标识信息;不要仅因列表很长就清空它,其他软件可能依赖现有设置。
第二步:查询目标应用的包族名称
在 PowerShell 中执行以下命令,可以列出当前用户的应用包名称和包族名称。列表较长时,用第二条命令按实际名称筛选。这里以 Microsoft Store 为操作示例,不代表商店的所有网络问题都由回环限制引起。
Get-AppxPackage | Select-Object Name, PackageFamilyName
Get-AppxPackage -Name Microsoft.WindowsStore |
Select-Object Name, PackageFamilyName
参数 -n 需要的是 PackageFamilyName,不是开始菜单中的中文名称,也不是包含版本号和架构的 PackageFullName。Microsoft Store 常见的包族名称为 Microsoft.WindowsStore_8wekyb3d8bbwe,仍应以本机查询结果为准。
第三步:仅为查到的目标包添加豁免
下面的 PowerShell 代码先查询 Microsoft Store;找不到时停止,避免用空值继续执行。若排查的是其他应用,需要把查询名称改成上一条列表中确认的实际 Name,不要把示例当作所有应用的修复命令。
$pkg = Get-AppxPackage -Name Microsoft.WindowsStore
if ($null -eq $pkg) {
throw "当前用户未找到 Microsoft.WindowsStore,请先核对应用名称和登录账户。"
}
CheckNetIsolation.exe LoopbackExempt -a "-n=$($pkg.PackageFamilyName)"
CheckNetIsolation.exe LoopbackExempt -s
-a 表示添加。检查命令结果是否成功,再用 -s 确认列表中出现目标项。若本机已确认包族名称,也可以直接执行下面这一条命令;它同样需要管理员权限。
CheckNetIsolation.exe LoopbackExempt -a -n=Microsoft.WindowsStore_8wekyb3d8bbwe
第四步:退出应用后重新测试
保存工作后关闭目标应用,必要时在任务管理器中结束它的残留进程,再重新打开并刷新内容。通常不需要重启整台电脑。此时仍然要保持客户端运行、系统代理开启,并使用之前已经验证可连接的节点。
遇到“拒绝访问”,先检查是否使用管理员终端;遇到无效参数,核对连字符、包族名称以及命令是否在复制时换行截断。企业管理设备还可能受组织策略限制,应交由管理员确认,而不是反复关闭安全功能。
如何验证:端口可达、应用入站、出口正确
命令执行成功,只证明豁免设置已提交,不能单独证明应用已经走代理。建议把验证拆成三层,每次只改变一个条件,方便定位真正起作用的设置。
| 验证层次 | 具体操作 | 能说明什么 |
|---|---|---|
| 代理端口 | 测试本机 TCP 端口 7890 | 端口是否有可连接的监听服务 |
| 应用请求 | 刷新目标应用并查看连接列表 | 请求是否进入 Clash 或 mihomo |
| 规则出口 | 检查域名、规则及策略链 | 请求最终选择直连还是代理 |
在 PowerShell 中执行以下命令。若当前配置用的是 7897,就把端口同步改成 7897。输出中的 TcpTestSucceeded : True 只代表 TCP 连接成功,不代表监听者一定是 Clash,也不证明 UWP 的回环权限正常。
Test-NetConnection -ComputerName 127.0.0.1 -Port 7890
还可以用 Windows 自带的 curl.exe 显式指定 HTTP 代理,测试普通桌面进程通过该端口发起 HTTPS 请求的情况。使用完整的 curl.exe 名称,可以避开部分 PowerShell 版本中的同名别名。
curl.exe --head --connect-timeout 10 --max-time 20 --proxy http://127.0.0.1:7890 https://www.microsoft.com/
收到 HTTP 响应说明这次命令获得了服务器或中间环节的响应,仍应结合日志判断完整结果;它不是对目标 UWP 应用的直接测试。最终应回到应用里触发登录、刷新等操作,观察相同时间点的新连接。后台流量很多时,可以暂时关闭其他应用来减少干扰。
已经豁免仍失败:按症状继续排查
连接列表完全没有目标请求
先确认目标应用确实受到 AppContainer 回环限制,并确认豁免对应的是当前安装的包。随后检查应用是否使用系统代理。有些程序采用自带网络栈,有些请求由系统服务或其他进程发起;给界面所属包添加豁免,不会自动改变其他进程的网络行为。
- Windows 设置中的手动代理、PAC 自动配置和 WinHTTP 代理不是同一个配置入口。不要把
netsh winhttp import proxy source=ie当成统一修复;它会改变另一套代理设置,却未必影响目标应用。 - Microsoft Store 的界面加载、账户登录、应用下载可能走不同组件。界面恢复不代表下载服务已经采用相同路径,应分别测试。
- 清理商店缓存或重装应用解决的是另一类问题,不能代替回环豁免验证,也不适合在没有错误证据时先做。
请求已出现,但规则结果是 DIRECT
这说明请求已经进入内核,下一步应检查规则与策略组,而不是继续添加豁免。查看连接对应的域名、目标 IP、命中的规则和实际出口。若该服务按配置被分配到 DIRECT,添加回环豁免不会把它强制改成代理。
可以短暂切换全局模式做对照,但全局模式也要选中可用的代理策略,测试结束后恢复原来的规则模式。不要仅凭“全局可用”就长期替换整份规则,应先定位具体域名和规则顺序。
请求已走代理,但依然登录失败
继续检查日志中的 DNS 失败、连接超时、TLS 错误,以及账户地区、系统时间和服务状态。节点可用于浏览网页,不代表目标服务接受该出口。遇到证书问题,不要通过关闭证书验证来掩盖错误,应先检查系统时间、证书链和是否存在额外的 HTTPS 检查软件。
是否需要开启 TUN 模式
TUN 通过虚拟网络接口接管符合路由条件的流量,适合排查不遵循系统代理的应用,但它不是“添加回环豁免”的另一个名字。实际结果仍取决于客户端、mihomo 配置、路由、DNS 和 Windows 网络隔离策略,不能保证开启后所有 UWP 请求都可用。
如果决定测试 TUN,先保存现有配置,按客户端要求安装或启用服务,再一次只改变一项设置。记录开启前后的连接和路由表现;不要同时修改 Fake-IP、规则、系统代理与防火墙,否则很难判断是哪一步改变了结果。相关配置可继续查阅配置进阶。
撤销豁免与日常维护
不再需要某个应用访问本机代理时,可以撤销该项豁免。下面仍以已经确认的 Microsoft Store 包族名称为例,-d 表示删除指定项,不会卸载应用,也不会删除 Clash 配置。
CheckNetIsolation.exe LoopbackExempt -d -n=Microsoft.WindowsStore_8wekyb3d8bbwe
CheckNetIsolation.exe LoopbackExempt -s
不要为了撤销一项设置而清空全部豁免。应用更新通常会保留包族身份;重装、更换发行渠道或换用另一个账户后,则应重新查询,不必机械地重复添加旧名称。系统代理端口变化时,也要同步检查 Windows 的代理地址,回环豁免本身不会替你更新端口。
- 浏览器也失败:先排查客户端、监听端口、订阅与节点连接。
- 只有隔离应用失败,且没有入站记录:核对应用类型、包族名称与回环豁免。
- 已有入站记录:转查规则、DNS、代理出口与目标服务,不再把问题都归于 UWP。
排查顺序可以固定为:确认本机代理可用,确认目标应用身份,按需添加豁免,重启应用,再看连接与出口。这样既能解决确实由本地回环限制引起的故障,也能避免把规则分流、系统服务代理和账户问题混在一起。