搜索 K
Appearance
如果你是在关掉 Clash / v2rayN / sing-box 之后突然发现任务栏右下角出现一个带感叹号的 WiFi 或网线图标,浏览器报 ERR_PROXY_CONNECTION_FAILED,微信转圈,那么恭喜——你的物理链路大概率完好无损,坏掉的是代理软件在异常退出时没有回收的那几处系统网络状态。
Windows 上的代理软件从来不是“开一个软件”这么简单。它至少会在下面五个地方留下痕迹:
HKCU\...\Internet Settings)——影响 Edge、Chrome、IE 内核程序;netsh winhttp)——影响 Windows Update、微软商店、部分 .NET 程序;AutoConfigURL 键值)——残留的话,系统会去请求一个已经关掉的本地端口;0.0.0.0/1 与 128.0.0.0/1 两条“半默认路由”;127.0.0.1,或 WFP 过滤驱动仍在拦截出站流量。代理软件正常退出时会把它们一一还原;但被任务管理器强杀、蓝屏、更新失败、杀软拦截进程时,还原流程会被打断,系统就卡在一个“以为所有流量都要走本地代理,但本地代理已经死了”的状态里。这就是黄叹号的真相。
修复���总原则是从轻到重、逐级验证,不要一上来就“网络重置”。 网络重置会清掉你所有的自定义防火墙规则、已保存的 WiFi 密码、静态 IP 配置和第三方 VPN 的虚拟网卡,代价远大于收益。
顺带说一句:频繁出现“代理软件闪退断网”的用户,问题常常不在客户端,而在线路本身不够稳。节点频繁重连、TCP 被 RST、UDP 被丢弃,客户端在反复重试中崩溃的概率会显著上升。选一条 IEPL/IPLC 专线型机场,能把这类故障率压到肉眼可见地下降——这也是我们长期把光速云排在综合榜第一的原因之一,详见文末内链。
Windows 的“系统代理”本质上是两个注册表值:
ProxyEnable(DWORD):1 表示启用;ProxyServer(字符串):形如 127.0.0.1:7890;ProxyOverride:绕过列表,通常含 localhost;127.*;<local>。路径是 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings。Chrome、Edge、新版 Firefox 默认都读这里。如果 ProxyEnable=1 但 7890 端口已经没有进程在监听,所有走系统代理的应用会立刻失去网络——而系统底层的 ICMP、部分 UWP 应用的直连探测却还能通,于是你就看到了“能 ping 通但打不开网页”的经典症状。
很多人不知道,WinHTTP 的代理配置和 WinINET 完全不共享。它由 netsh winhttp 管理,专门服务于 Windows Update、微软商店、部分 Office 组件、以服务身份运行的程序。
所以会出现一种诡异现象:浏览器好了,但“设置 → Windows 更新”仍然转圈报错。这时候你需要的是 netsh winhttp reset proxy,而不是清理注册表。
TUN 模式(也叫 TUN 接管、虚拟网卡模式)是黄叹号的重灾区。它做的是:
wintun、Mihomo、singbox 之类);0.0.0.0/1 和 128.0.0.0/1;/1 比 /0 更具体,Windows 会把所有 IPv4 流量优先送进虚拟网卡。问题在于第 2 步:如果客户端崩溃时没删掉这两条路由,而虚拟网卡又处于“已启用但无人接管”的状态,整台机器的出站流量就全部被黑洞掉。 此时 Windows 的连通性探测(NCSI)必然失败——黄叹号出现。
这就是为什么“删掉两条 /1 路由”经常能一秒救活网络。
Clash 系的 fake-ip 模式会把 DNS 请求劫持到本地,通常表现为:
127.0.0.1;或198.18.0.0/16 这个保留网段作为“假 IP”池。代理一退,127.0.0.1:53 无人应答,所有域名解析全部超时。判断方法极简单:ping 1.1.1.1 通、ping baidu.com 不通,就是 DNS 的锅。
还有一类“黄叹号”是误报:网络其实是通的,只是 NCSI 探测被代理拦了。
Windows 会请求 http://www.msftconnecttest.com/connecttest.txt,期望拿到文本 Microsoft Connect Test。如果系统代理开着且绕过列表里没放行这个域名,探测请求会被送到代理解析,拿到错误结果,Windows 就判定“无 Internet 访问”。
此时浏览器可能一切正常——但那个黄叹号会一直在。解决办法有两个方向:一是让代理客户端把这个域名加入直连规则;二是在注册表 HKLM\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet 下确认 EnableActiveProbing 为 1。
| 现象 | 根因层 | 关键诊断命令 | 判定阈值 | 修复动作 |
|---|---|---|---|---|
浏览器报 ERR_PROXY_CONNECTION_FAILED | WinINET 系统代理 | Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' | ProxyEnable=1 且端口无监听 | 关闭系统代理 |
| 浏览器好、Windows 更新坏 | WinHTTP 代理 | netsh winhttp show proxy | 显示 127.0.0.1:xxxx | netsh winhttp reset proxy |
| 全网失联、任务栏黄叹号 | wintun 半默认路由 | Get-NetRoute -DestinationPrefix 0.0.0.0/0 或 route print -4 | 出现 0.0.0.0/1、128.0.0.0/1 | 删除残留路由 |
| 能 ping IP 不通域名 | 网卡 DNS | Get-DnsClientServerAddress -AddressFamily IPv4 | DNS 为 127.0.0.1 或空 | 重置为 DHCP |
| 只有部分 App 断网 | WFP / 防火墙残留 | netsh wfp show state、Get-NetFirewallRule | 存在可疑出站 Block 规则 | 禁用/删除规则 |
| 网络通但常驻黄叹号 | NCSI 探测被拦 | Invoke-WebRequest http://www.msftconnecttest.com/connecttest.txt | 返回值不是 Microsoft Connect Test | 加直连规则 |
| WSL2 / Docker 断网 | Hyper-V 虚拟交换机 | Get-NetAdapter 查看 vEthernet (WSL) | 状态为 Disconnected | 重启 WSL 虚拟交换机 |
| 修复动作 | 影响面 | 平均耗时 | 需管理员 | 需重启 | 复发概率 | 风险等级 |
|---|---|---|---|---|---|---|
关闭系统代理(ProxyEnable=0) | 仅 WinINET 应用 | 5 秒 | 否 | 否 | 高(客户端再启动即恢复) | 低 |
删除 AutoConfigURL 键值 | 仅 PAC 应用 | 5 秒 | 否 | 否 | 低 | 低 |
netsh winhttp reset proxy | 系统服务类 | 10 秒 | 是 | 否 | 低 | 低 |
| 网卡 DNS 重置为 DHCP | 全局解析 | 10 秒 | 是 | 否 | 中 | 低 |
删除 0.0.0.0/1、128.0.0.0/1 路由 | 全局路由 | 30 秒 | 是 | 否 | 中 | 中 |
| 禁用 / 卸载 wintun 虚拟网卡 | 全局路由 | 30 秒 | 是 | 可能 | 低 |