1. 浏览器能联网,商店应用失败:先判断是否属于回环限制
在 Windows 10 或 Windows 11 上,Clash Meta 客户端已经启用系统代理,浏览器可以访问目标网站,但某个应用仍提示网络不可用。这种差异可能来自 AppContainer 网络隔离:受隔离的应用默认不能像普通桌面程序一样,直接连接本机回环地址上的服务。
常见的代理地址是 127.0.0.1:7890。其中 127.0.0.1 指向当前电脑,7890 是示例端口,并非所有客户端的固定值。如果应用读取了系统代理,却被禁止连接这个本地监听端口,请求就可能在到达 mihomo 内核之前失败。
先记录三个检查结果
- 普通浏览器是否成功:使用相同目标地址,确认节点、订阅和基础网络可用。
- 代理监听端口是否正确:在客户端的设置或当前生效配置中查看 HTTP 端口、混合端口,不能把外部控制端口当成代理端口。
- 应用请求是否进入内核:打开客户端的连接列表或日志,重新触发应用请求。完全没有记录,只能说明需要检查接管路径,不能单凭这一点断定是回环限制。
回环豁免只解决应用访问本机服务的权限问题。它不会修复过期订阅、失效节点、远端服务器故障,也不会让原本忽略系统代理的程序突然开始使用 HTTP 代理。
2. 核对系统代理与 mihomo 监听端口
打开 Windows「设置」→「网络和 Internet」→「代理」→「手动设置代理」。Windows 11 通常需要点击「使用代理服务器」旁的「编辑」。检查地址与端口是否对应当前客户端;使用本地 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 路径。
- 仍有问题时,保留错误提示与命中规则,分享日志前移除订阅地址、访问令牌和个人信息。
判断是否修复,应同时看应用功能是否恢复、流量是否进入预期内核,以及规则是否命中预期出口。仅看到“豁免添加成功”,只能证明系统接受了设置,不能证明整条代理链路已经正常。