Skip to content

代理连接失败与打不开任何外网全排障:从系统代理死锁到虚拟网卡内核路由急救实战

排名机场品牌与核心特征参考价格独家优惠券快速直达
#1
光速云总榜冠军 · 站长力荐
企业级双向 IEPL 专线 · VLESS (2020老牌)
自研客户端 · 晚高峰0丢包 · AI/4K秒开
¥7.5/月起
年付折算 59G/月
AMM8折 复制
#2
飞猫云低门槛 · 性价比
全国多入口 IEPL 专线 · Shadowsocks/VLESS
自研客户端开箱即用 · 适合日常学术/轻度追剧
¥7.0/月起
年付折算 50G/月
flycat8888折 复制
#3
微风网络极致便宜 · 平价
平价 IEPL 专线中转 · 香港/日本/新加坡
预算友好无套路 · 学生与上班族高性价比
¥7.0/月起
年付折算 50G/月
flat8889折 复制
#4
星岛梦老牌长效稳定
企业级内网骨干直通 · 全协议全客户端
成熟线路容灾体系 · 长期备用首选
¥8.0/月起
年付折算 60G/月
nmw888特惠 复制
#5
唯兔云15元档大流量
BGP多点接入 + 智能中继 · 60+多国节点
14.9元真实月付 · 100G大流量 · 追剧首选
¥14.9/月付
真实月付 100G/月
weitu666立减 复制
#6
宇宙云15元IEPL专线
VLESS 协议 + IEPL 专线通道
兼顾专线低延迟与百吉流量 · 4K秒开
¥14.9/月付
真实月付 100G/月
YUZHOU553立减 复制
#1光速云总榜冠军 · 站长力荐
¥7.5/月起
线路:企业级双向 IEPL 专线 · VLESS (2020老牌)
优势:自研客户端 · 晚高峰0丢包 · AI/4K秒开
#2飞猫云低门槛 · 性价比
¥7.0/月起
线路:全国多入口 IEPL 专线 · Shadowsocks/VLESS
优势:自研客户端开箱即用 · 适合日常学术/轻度追剧
flycat8888折 复制
#3微风网络极致便宜 · 平价
¥7.0/月起
线路:平价 IEPL 专线中转 · 香港/日本/新加坡
优势:预算友好无套路 · 学生与上班族高性价比
#4星岛梦老牌长效稳定
¥8.0/月起
线路:企业级内网骨干直通 · 全协议全客户端
优势:成熟线路容灾体系 · 长期备用首选
nmw888特惠 复制
#5唯兔云15元档大流量
¥14.9/月付
线路:BGP多点接入 + 智能中继 · 60+多国节点
优势:14.9元真实月付 · 100G大流量 · 追剧首选
weitu666立减 复制
#6宇宙云15元IEPL专线
¥14.9/月付
线路:VLESS 协议 + IEPL 专线通道
优势:兼顾专线低延迟与百吉流量 · 4K秒开
YUZHOU553立减 复制
💡 选型速查建议:日常主力与大模型防封首选 光速云(2020老牌IEPL/VLESS);预算极度敏感且轻度查资料首选 飞猫云微风网络(折合7元/月);月付党与大流量追剧首选 唯兔云(14.9元/100G)。

在使用各类科学上网与网络加速工具时,最让用户困惑的故障往往是这样一种“假死”状态:客户端界面上显示节点延迟全部是健康的绿色(如 45ms、80ms),仪表盘上的出站流量甚至在跳动,但无论在 Chrome、Edge 还是 Safari 中输入任何海外网址(如 Google、YouTube、GitHub、OpenAI),页面都会陷入无休止的加载转圈,最终抛出 ERR_PROXY_CONNECTION_FAILEDERR_CONNECTION_TIMED_OUTDNS_PROBE_FINISHED_NXDOMAIN;严重时,甚至连原本正常的百度、微信和国内局域网也瞬间全线断网。

这种“节点能测通但网页打不开”或者“开启代理全网断开”的现象,底层绝非简单的节点质量问题,而是操作系统网络转发链条中断的典型体现:涵盖了 WinINet 注册表系统代理端口死锁Fake-IP 模式下 DNS 解析黑洞TUN 虚拟网卡接口跃点数竞态冲突浏览器第三方插件与安全 DNS(DoH)绕流、以及规则分流模式(Rule Mode)中代理组指向错误等深度软硬件交互冲突。

本篇排障指南将从操作系统网络栈的数据流向出发,逐层剖析流量如何从应用程序派发到本地代理内核、再经由加密隧道到达公网的全过程,并提供包含命令行急救脚本、注册表修复、DNS 清理以及浏览器环境隔离的完整抢修手册。


答案摘要块:打不开外网 30 秒自检决策流

当你遭遇代理客户端已开启但任何外网均无法访问时,请严格按照以下优先级由高到低依次排查:

+---------------------------------------------------------------------------------------------------+
|                            代理连接成功却打不开外网急救决策流                                      |
+---------------------------------------------------------------------------------------------------+
| 1. 验证系统代理开关 (最常见)  --> 检查客户端主界面【系统代理 (System Proxy)】开关是否被误关闭       |
| 2. 检查注册表代理死锁 (次常见) -> 按 Win+R 检查 inetcpl.cpl 中的局域网代理设置,确认端口是否为 7890 |
| 3. 测试内核独立连通性       --> 运行终端执行 curl -x http://127.0.0.1:7890 https://google.com     |
| 4. 检查浏览器 DoH 与插件    --> 关闭 Chrome/Edge 中的“使用安全 DNS”选项,禁用 SwitchyOmega 插件    |
| 5. 检查分流规则组设置       --> 将客户端模式从【Rule (规则)】临时切换为【Global (全局)】对比验证   |
| 6. TUN 模式虚拟路由修复     --> 重启 clash-verge-service 服务,排查 198.18.0.1 Fake-IP 路由黑洞     |
+---------------------------------------------------------------------------------------------------+
  • 第一核心死因:系统代理与内核端口不匹配(ERR_PROXY_CONNECTION_FAILED)。客户端异常退出或多客户端切换时,系统注册表中的代理端口残留为旧端口(如 10809),而当前运行的客户端监听的是 7890,导致浏览器将所有网络请求投递给了一个根本不存在的“死端口”。
  • 第二核心死因:Fake-IP 模式下的 DNS 死锁与缓存污染。现代客户端(如 Mihomo / Clash Verge)默认采用 Fake-IP(198.18.0.0/16)池分配机制。如果内核崩溃、TUN 模式失效、或本地 DNS 缓存混乱,浏览器会直接向物理路由器请求连接 198.18.x.x 保留地址段,最终引发全网连接超时。
  • 第三核心死因:浏览器开启了安全 DNS(DoH)导致流量脱靶。Chrome 或 Edge 默认开启的“使用安全 DNS”会直接通过加密 HTTPS 协议向海外公共 DNS(如 Cloudflare / Google)发起直连解析。这一直连探测在境内网络必定撞墙阻断,使得浏览器连域名都无法解析,根本走不到代理层。

一、从请求发起到底层转发:数据链路阻断分层拓扑

为了能够准确定位为何“打不开外网”,必须建立清晰的数据转发拓扑视图。以用户在浏览器输入 https://www.google.com 为例,流量在操作系统内部的处理流程如下:

mermaid
sequenceDiagram
    autonumber
    actor Browser as 应用程序 (Chrome / Edge)
    participant SysProxy as Windows 网络栈 (WinINet / 注册表代理)
    participant TUN as 虚拟网卡 (Wintun / TUN 模式)
    participant Core as 本地代理内核 (Mihomo 7890 端口)
    participant RemoteNode as 跨国专线/节点服务器 (海外 VPS)
    participant TargetWeb as 目标网站 (Google / YouTube)

    Browser->>SysProxy: 发起 HTTP CONNECT www.google.com:443
    alt 系统代理端口未开启或端口死锁指向错误
        SysProxy--xBrowser: 返回 ERR_PROXY_CONNECTION_FAILED (连接被拒绝)
    else 系统代理配置正常 (127.0.0.1:7890)
        SysProxy->>Core: 将 TCP 握手数据包派发给 7890 监听套接字
    end

    Note over Core: 匹配路由规则 (GeoSite / IP-CIDR)
    alt 规则组被误设为 REJECT 或 DIRECT 且国内直连不通
        Core--xBrowser: 阻断连接 / 直连超时
    else 规则组正确分流至代理节点 (Proxy Group)
        Core->>RemoteNode: 通过 TLS/Shadowsocks 加密隧道封装发送
        RemoteNode->>TargetWeb: 海外节点代为发起真正的目标网站请求
        TargetWeb-->>RemoteNode: 返回 200 OK 网页数据
        RemoteNode-->>Core: 隧道解密回传
        Core-->>Browser: 浏览器成功渲染网页内容
    end

如果应用程序采用的是非系统代理协议(如不支持 HTTP 代理的终端、部分大型端游),或者用户勾选了“TUN 虚拟网卡模式”,流量则直接经由虚拟网卡进入内核协议栈:

mermaid
flowchart TD
    App["应用程序出站流量 (UDP / TCP / DNS)"] --> RouteTable{"Windows 路由表判定 (0.0.0.0/0)"}
    
    RouteTable -- "物理网卡 Metric 优先 (TUN失效)" --> DirectDrop["物理网卡直连出境 -> 遭遇 GFW 深度阻断<br/>(报错: ERR_CONNECTION_TIMED_OUT)"]
    
    RouteTable -- "Wintun 网卡 Metric 优先 (TUN正常)" --> TunCard["流量注入 Wintun 虚拟网卡接口"]
    
    TunCard --> FakeIPCheck{"目标 IP 是否属于 Fake-IP<br/>(198.18.0.0/16)?"}
    FakeIPCheck -- "是 Fake-IP" --> CoreDNS["内核反查域名映射表,建立代理隧道"]
    FakeIPCheck -- "非 Fake-IP / 本地直连" --> Bypass["直连白名单或直连出站"]
    
    CoreDNS --> ProxyOut["节点服务器传输链路"]
    ProxyOut --> Success["成功访问互联网目标站点"]

二、第一高频故障:系统代理死锁与 Windows 注册表 WinINet 修复

在 Windows 系统中,浏览器主要通过读取系统的 WinINet 接口配置来获取全局 HTTP/SOCKS 代理参数。当代理客户端意外崩溃、电脑强制关机、或用户同时安装了多个不同的科学上网软件时,系统的代理设置极易产生死锁残留。

2.1 典型错误现象与报错代码

  • 打开浏览器访问任何网站,界面瞬间弹出:
    • 无法连接到代理服务器
    • ERR_PROXY_CONNECTION_FAILED
    • 代理服务器没有响应,请检查代理设置
  • 即使彻底关闭了客户端,甚至重启了电脑,依然无法打开任何网页(连百度都进不去)。

2.2 深入 Windows 注册表:WinINet 代理配置键值解析

Windows 将系统代理的开关与服务器地址保存在注册表的以下路径中: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings

核心键值包括:

  • ProxyEnable (REG_DWORD):0 代表关闭系统代理,1 代表启用系统代理;
  • ProxyServer (REG_SZ):代理服务器的 IP 与端口字符串(例如 127.0.0.1:7890);
  • ProxyOverride (REG_SZ):绕过代理的本地内网白名单(例如 localhost;127.*;10.*;192.168.*)。

当客户端关闭时,本应将 ProxyEnable 改写回 0。但如果程序异常退出,该键值依旧保持为 1。由于 127.0.0.1:7890 的内核已经随客户端退出了,浏览器所有的出站流量都会撞上一堵死墙!

2.3 管理员 PowerShell 一键重置系统代理与注册表急救脚本

按下 Win + X 选择并以管理员身份打开 PowerShell,执行以下自动化急救脚本:

powershell
# 1. 检查当前系统注册表中的代理配置状态
$regPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
$proxyStatus = Get-ItemProperty -Path $regPath

Write-Host "--- 当前 Windows 系统代理状态 ---" -ForegroundColor Cyan
Write-Host "ProxyEnable  : $($proxyStatus.ProxyEnable)"
Write-Host "ProxyServer  : $($proxyStatus.ProxyServer)"
Write-Host "ProxyOverride: $($proxyStatus.ProxyOverride)"

# 2. 如果当前并不需要代理,一键完全关闭系统代理死锁
Set-ItemProperty -Path $regPath -Name "ProxyEnable" -Value 0
# 清空死锁的代理服务器地址
Remove-ItemProperty -Path $regPath -Name "ProxyServer" -ErrorAction SilentlyContinue

# 3. 强制通知系统刷新 WinINet 缓存,使浏览器无需重启立即生效
$signature = @"
[DllImport("wininet.dll", SetLastError = true, CharSet=CharSet.Auto)]
public static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int dwBufferLength);
"@
$wininet = Add-Type -MemberDefinition $signature -Name "WinINetHelper" -Namespace "WinINet" -PassThru
# INTERNET_OPTION_SETTINGS_CHANGED = 39; INTERNET_OPTION_REFRESH = 37
$wininet::InternetSetOption([IntPtr]::Zero, 39, [IntPtr]::Zero, 0) | Out-Null
$wininet::InternetSetOption([IntPtr]::Zero, 37, [IntPtr]::Zero, 0) | Out-Null

Write-Host "已成功释放系统代理死锁!现在可以正常访问国内直连网页。" -ForegroundColor Green

如果用户当前正打算使用 Clash,但端口对不上,则执行以下命令将其对齐为正确的 127.0.0.1:7890

powershell
# 将系统代理强制修正为 127.0.0.1:7890 并开启
Set-ItemProperty -Path $regPath -Name "ProxyEnable" -Value 1
Set-ItemProperty -Path $regPath -Name "ProxyServer" -Value "127.0.0.1:7890"
Set-ItemProperty -Path $regPath -Name "ProxyOverride" -Value "<local>;localhost;127.*;10.*;172.16.*;172.17.*;172.18.*;172.19.*;172.20.*;172.21.*;172.22.*;172.23.*;172.24.*;172.25.*;172.26.*;172.27.*;172.28.*;172.29.*;172.30.*;172.31.*;192.168.*"
Write-Host "系统代理已精准校准为 127.0.0.1:7890!" -ForegroundColor Green

三、第二高频故障:Fake-IP 模式与 DNS 解析黑洞排障

现代代理工具(尤其是 Clash Verge Rev、Mihomo Party、Sing-box)默认普遍采用了 Fake-IP 机制。这项技术的初衷是为了让用户省去本地解析海外域名的往返延迟与污染风险,由本地内核直接向浏览器返回一个虚构的保留 IP(通常位于 198.18.0.0/16 范围内),然后当浏览器向该 Fake-IP 发送 TCP 握手包时,内核再通过内部映射表在远程节点上建立真正的连接。

然而,Fake-IP 也是导致各类“网页无法连接”的深水区!

3.1 Fake-IP 路由黑洞触发机理

  1. DNS 缓存不匹配:Windows 系统有自己的 DNS 客户端缓存。如果客户端意外重启,本地内核维护的 Fake-IP 映射表被清空,而 Windows 系统或浏览器的内部 DNS 缓存中依然保留着旧的 www.google.com -> 198.18.0.42 记录。此时浏览器向内核发送数据包,内核在映射表里查不到这个 IP 对应哪个域名,直接丢弃该数据包,导致浏览器无限超时。
  2. TUN 虚拟网卡未接管 Fake-IP 路由段:如果 TUN 虚拟网卡由于驱动权限问题未能在 Windows 路由表中注入 198.18.0.0/16 的专属路由项,数据包会直接被操作系统的默认路由丢给物理路由器。物理路由器压根不认识 198.18.x.x,直接在局域网内丢包。
mermaid
sequenceDiagram
    autonumber
    actor Browser as 浏览器发起请求 (www.youtube.com)
    participant WinDNS as Windows DNS 缓存 (旧映射记录)
    participant CoreTable as 代理内核 Fake-IP 动态映射表
    participant RemoteVPS as 海外代理服务器

    Browser->>WinDNS: 查询 www.youtube.com IP
    Note over WinDNS: 命中本地历史缓存,返回 198.18.0.105
    Browser->>CoreTable: 向 198.18.0.105 发送 TCP SYN 连接请求
    Note over CoreTable: 内核刚重启过,映射表中无 198.18.0.105 记录!
    CoreTable--xBrowser: 无法识别目标地址,丢弃数据包
    Note over Browser: 等待超时,页面报错 ERR_CONNECTION_TIMED_OUT

3.2 诊断与清理 Fake-IP 缓存实战

解决 Fake-IP 故障的标准三部曲:

powershell
# 1. 刷新 Windows 本地系统的 DNS 缓存
ipconfig /flushdns

# 2. 检查当前路由表中是否存在 198.18.0.0 的专用分流路由
Get-NetRoute -DestinationPrefix "198.18.0.0/16" -ErrorAction SilentlyContinue

# 3. 如果在 TUN 模式下丢失了该路由,可手动临时添加(假设虚拟网卡接口索引为 25)
# route add 198.18.0.0 mask 255.255.0.0 198.18.0.1 metric 1

在浏览器中,还必须清理浏览器自带的内部 DNS 缓存:

  • 在 Chrome / Edge 地址栏输入:chrome://net-internals/#dns
  • 点击 “Clear host cache” 按钮清空所有浏览器级 DNS 缓存;
  • chrome://net-internals/#sockets 页面中,点击 “Flush socket pools” 释放所有空闲连接池。

四、第三高频故障:浏览器第三方插件、安全 DNS 与分流规则组黑洞

即使系统网络和内核完全正常,客户端依然可能由于应用层策略冲突而无法打开网页。

4.1 浏览器安全 DNS(DoH)必须彻底关闭

现代浏览器(如 Chrome、Edge、Brave)默认推广所谓的“安全 DNS(Secure DNS / DNS-over-HTTPS)”。这一特性的初衷是防止公共 Wi-Fi 偷窥 DNS 查询,但在国内网络环境下,这无异于一场灾难:

  • Chrome 会自动尝试使用内置的 Cloudflare(https://chrome.cloudflare-dns.com/dns-query)或 Google DoH;
  • 浏览器在发起常规 HTTP 代理连接之前,会绕过系统代理直接向外发送 UDP/TCP 443 探测该 DoH 服务
  • 此时该探测请求被国内防火墙直接拦截阻断,浏览器判定当前无法解析域名,根本不把请求交给本地的 7890 代理端口,直接在前端报错 DNS_PROBE_FINISHED_BAD_CONFIG

彻底关闭步骤

  1. 打开 Chrome / Edge 设置 -> 找到“隐私和安全” -> 点击“安全”;
  2. 找到“使用安全 DNS”选项;
  3. 将其开关彻底关闭,或者选择“使用当前服务提供商”。
mermaid
flowchart LR
    Chrome["Chrome 浏览器"] --> CheckDoH{"是否开启【使用安全 DNS】?"}
    CheckDoH -- "开启 (默认调用 Google DoH)" --> DoHReq["直连请求 https://dns.google/dns-query"]
    DoHReq --> Wall["GFW / 运营商防火墙"]
    Wall -- "阻断丢弃" --> ChromeFail["前端报错: DNS_PROBE_FINISHED_BAD_CONFIG<br/>(流量根本未送达代理内核)"]
    
    CheckDoH -- "彻底关闭" --> SendToProxy["将域名委托给系统代理 127.0.0.1:7890"]
    SendToProxy --> CoreWork["内核正常加密隧道解析并呈现网页"]

4.2 浏览器插件冲突(SwitchyOmega / 广告拦截插件)

如果你的浏览器中安装了 Proxy SwitchyOmegaZeroOmega 或各种“科学上网辅助扩展”,这些插件具有比操作系统更高的代理接管优先级。

  • 若插件模式被选为 直接连接 (Direct),则系统代理会被插件强行覆写为直连;
  • 若插件配置的端口是旧版 1080,而 Clash 运行在 7890,就会引发连接中断。
  • 解法:在插件图标上点击,将模式切换为 “系统代理 (System Proxy)”,或者在排障阶段直接在扩展管理中将该插件暂时禁用。

4.3 客户端分流规则组“黑洞”排查(Rule Mode vs Global Mode)

许多用户在导入机场订阅后,默认处于 规则模式(Rule)。此时发生无法打开网页,可能是由于分流策略设置不当所致:

  1. 代理组指向了 DIRECT 或 REJECT:在客户端主界面的“代理 (Proxies)”页面中,检查主代理组(如 PROXY节点选择GLOBAL)当前选中的是不是一个已经失效的节点,或者误选了 DIRECT(直连);
  2. 规则集下载失败:现代配置文件使用 rule-providers 动态下载远程规则。如果第一次启动时网络未通,规则库为空,内核在遇到域名时可能默认回退到最后一行的 MATCH, DIRECT,导致所有海外流量均尝试国内直连,全部撞墙;
  3. 极速验证法:在客户端模式中,将模式从 Rule(规则模式) 切换为 Global(全局模式),并手动选中一个确定绿色的香港或日本节点。如果切换为全局后立即能打开 Google,说明节点与本地代理完全正常,纯粹是分流规则配置错误

五、第四高频故障:使用 Curl 与 PowerShell 终端精准测温排障

界面上的报错往往具有误导性,要像网络工程师一样排障,必须借助终端命令行工具直接向本地代理端口发起探测。

5.1 使用 Curl 进行全链路代理探测

打开 PowerShell 或 CMD,依次执行以下命令:

powershell
# 1. 测试本地 7890 端口是否对 HTTP 协议进行响应 (测试内核自身)
curl.exe -I -x http://127.0.0.1:7890 https://www.google.com --connect-timeout 5

# 2. 如果返回 HTTP/2 200 或 HTTP/1.1 200,说明从 本地 -> 内核 -> 节点 -> Google 整个链路完全畅通!
# 输出示例:
# HTTP/1.1 200 Connection established
# HTTP/2 200
# date: Mon, 22 Sep 2026 13:58:00 GMT

# 3. 如果返回 curl: (7) Failed to connect to 127.0.0.1 port 7890: Connection refused
# 说明本地内核根本没有在 7890 端口上监听!

5.2 使用 Test-NetConnection 诊断本地 TCP 监听

powershell
# 测试本地套接字是否处于 Listening 状态
Test-NetConnection -ComputerName 127.0.0.1 -Port 7890

如果 TcpTestSucceeded : True,说明代理端口处于健康监听状态;如果为 False,请参考上一专栏排查端口占用或杀软拦截。

5.3 批量诊断主流海外核心站点连通性脚本

运行以下 PowerShell 脚本,一键排查是全网中断还是部分服务被特殊风控阻断:

powershell
$proxyUrl = "http://127.0.0.1:7890"
$targets = @(
    "https://www.google.com",
    "https://www.youtube.com",
    "https://www.github.com",
    "https://api.openai.com",
    "https://www.cloudflare.com"
)

Write-Host "开始通过代理 $proxyUrl 进行全方位连通性测试..." -ForegroundColor Cyan
Write-Host "------------------------------------------------------------"

foreach ($target in $targets) {
    $stopwatch = [System.Diagnostics.Stopwatch]::StartNew()
    try {
        $response = Invoke-WebRequest -Uri $target -Proxy $proxyUrl -TimeoutSec 5 -UseBasicParsing -ErrorAction Stop
        $stopwatch.Stop()
        Write-Host "[成功] $target - 状态码: $($response.StatusCode) 耗时: $($stopwatch.ElapsedMilliseconds)ms" -ForegroundColor Green
    } catch {
        $stopwatch.Stop()
        Write-Host "[失败] $target - 错误: $($_.Exception.Message)" -ForegroundColor Red
    }
}
Write-Host "------------------------------------------------------------"

5.4 Python 自动化检测本地代理端口与多重链路连通性脚本

在缺少 curl 工具的受限环境中,可以调用 Windows 内置或环境中的 Python 解释器,执行轻量级代理探针测试:

python
import urllib.request
import time

proxy_address = "http://127.0.0.1:7890"
test_urls = [
    ("Google 国际搜索", "https://www.google.com"),
    ("Cloudflare 探针", "https://cp.cloudflare.com/generate_204"),
    ("GitHub 代码托管", "https://github.com"),
]

proxy_handler = urllib.request.ProxyHandler({'http': proxy_address, 'https': proxy_address})
opener = urllib.request.build_opener(proxy_handler)

print(f"[*] 开始通过本地代理端口 {proxy_address} 进行应用层握手探测...")
for label, url in test_urls:
    start_t = time.time()
    try:
        req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'})
        with opener.open(req, timeout=5) as resp:
            elapsed = round((time.time() - start_t) * 1000, 2)
            print(f"[+] {label:<15} 测试成功 | 状态码: {resp.status} | 往返延迟: {elapsed}ms")
    except Exception as e:
        print(f"[-] {label:<15} 测试失败 | 异常详情: {e}")

该脚本若能成功返回 200 或 204,说明 Python 进程能够成功穿透本地内核,进而证实故障必然是由 Chrome、Edge 等浏览器内部的安全插件、扩展、或 DoH 策略造成的。


六、全平台系统代理与虚拟网卡抢修操作规程

mermaid
flowchart TD
    Platform{"选择你的操作系统平台"}

    Platform -- "Windows 10/11" --> W1["1. 运行系统代理重置脚本清除注册表死锁<br/>2. 执行 ipconfig /flushdns 清空 Fake-IP 缓存<br/>3. 关闭 Chrome【使用安全 DNS】<br/>4. 重启 clash-verge-service 服务"]
    
    Platform -- "macOS (Sonoma / Sequoia)" --> M1["1. 进入【系统设置 -> 网络 -> 代理】排查 Wi-Fi 代理勾选<br/>2. 终端清除 macOS DNS 缓存: sudo dscacheutil -flushcache<br/>3. 检查 Helper 提权组件与网络扩展授权<br/>4. 检查 Surge / Loon / Clash 虚拟网卡接口"]
    
    Platform -- "iOS (iPhone / iPad)" --> I1["1. 打开设置 -> Wi-Fi -> 点击感叹号 -> HTTP 代理设为关闭<br/>2. 重新安装小火箭 (Shadowrocket) VPN 配置描述文件<br/>3. 切换为 5G 移动蜂窝网络排查路由器拦截<br/>4. 重启设备刷新 iOS 网络堆栈缓存"]

    Platform -- "局域网软路由 / OpenWrt" --> R1["1. 检查防火墙自定义规则: iptables MASQUERADE<br/>2. 排除物理主路由与旁路由网关环路死锁<br/>3. 检查旁路由 LAN 口是否勾选【忽略此接口】<br/>4. 验证 DNS 转发与 SSRplus / PassWall 状态"]

6.1 macOS 平台网络代理死锁恢复

macOS 的系统代理位于网络配置专有服务中:

  1. 打开“系统设置 (System Settings)” -> “网络 (Network)” -> 点击已连接的 Wi-Fi 或以太网;
  2. 点击“详细信息 (Details)” -> 切换到“代理 (Proxies)”选项卡;
  3. 确保 网页代理 (HTTP)安全网页代理 (HTTPS) 处于关闭状态,或其 IP 与端口严格对应为 127.0.0.17890
  4. 若需要清除 macOS DNS 缓存,在终端执行:
    bash
    sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

6.2 移动端(iOS / Android)连不上外网排障

  • iOS Shadowrocket / Quantumult X
    • 如果开启后无法打开网页,首先进入 iOS“设置” -> “通用” -> “VPN与设备管理”,将多余的已损坏 VPN 描述文件全部删除;
    • 重新打开 Shadowrocket,允许重新写入 VPN 配置;
    • 在小火箭设置中将“全局路由”从“配置”临时修改为“代理”排查规则集错误。
  • Android(Clash Meta for Android)
    • 进入手机系统设置 -> 搜索“专有 DNS(Private DNS)”;
    • 如果开启了第三方 Private DNS(如 AdGuard DNS),极易导致与 Clash TUN 虚拟网卡产生冲突,将其设置为**“关闭”**即可恢复。

6.3 局域网旁路由 / 软路由网关连接失败与打不开外网排障

在家庭或工作室组网中,很多用户选择部署基于 OpenWrt 的“旁路由”(辅助网关),将电脑、电视或手机的默认网关和 DNS 指向旁路由的 LAN 口 IP(例如 192.168.1.2)。

在此拓扑下,如果终端设备能连通内网却无法打开任何外网,最常见的致命根因在于 非对称路由导致的 TCP 状态丢包NAT 转发规则缺失

  1. 防火墙动态伪装(MASQUERADE)缺失:终端设备向旁路由发送请求,旁路由处理后转发给主路由,主路由直接回包给终端,由于回包来源 IP 与终端发出的目标 IP 不一致,终端的 TCP 协议栈会直接丢弃该数据包。
    • 解决方案:在 OpenWrt 的“网络 -> 防火墙 -> 自定义规则”中添加以下 iptables 伪装规则并重启防火墙:
      bash
      # 开启 LAN 接口动态 NAT 伪装,解决非对称路由丢包死锁
      iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
  2. 旁路由重复开启 DHCP 导致局域网 IP 冲突:旁路由必须在 LAN 接口设置中勾选 “忽略此接口(不在此接口提供 DHCP 服务)”,由主路由器统一分配 IP,避免两台设备同时竞争局域网 DHCP 造成网关分配错乱。
  3. IPv6 导致 DNS 侧漏与直连撞墙:如果在旁路由上启用了 IPv6,终端设备可能会通过 IPv6 链路直连运营商下发的原生 DNS 服务器,使得所有海外域名解析全部被污染。在 OpenWrt 中禁用 IPv6 分配,或在代理插件中勾选“拦截并禁用 IPv6”即可恢复正常。

七、真实典型故障排查实战案例

案例一:电脑意外断电导致系统代理死锁在 7890,开机后内外网全断

  • 用户背景:某外企财务人员陈女士,办公室台式电脑在使用 Clash Verge 期间遭遇办公楼突发停电关机。次日早晨来上班开机后,陈女士未开启 Clash,发现无论是登录微信、钉钉,还是打开百度、公司内网 OA 系统,所有浏览器均报错 ERR_PROXY_CONNECTION_FAILED,电脑处于完全断网状态。
  • 排障过程
    1. 工程师远程排查发现,台式机本地 IP 分配正常(192.168.1.102),ping 局域网网关正常;
    2. 打开 Windows 设置中的“网络和 Internet -> 代理”,发现“使用代理服务器”开关处于打开状态,地址显示为 127.0.0.1:7890
    3. 由于电脑意外掉电,Clash 退出时未来得及撤销注册表代理改写,而开机后用户尚未启动 Clash,7890 端口无服务监听,导致全部网络请求被代理抛弃;
  • 技术解决
    1. 直接在设置界面关闭“使用代理服务器”开关,国内网页与公司内网瞬间恢复畅通;
    2. 启动 Clash Verge,并开启其自带的“退出时自动清理系统代理”安全保护机制;
    3. 系统彻底复原。

案例二:开启 TUN 模式后 Fake-IP 缓存与本地 DNS 冲突,Chrome 报 ERR_NAME_NOT_RESOLVED

  • 用户背景:软件工程师小刘在 Windows 11 上使用 Sing-box 开启 TUN 模式。某天在调试网络配置后频繁重启 Sing-box,随后发现 Chrome 浏览器打开 GitHub 与 StackOverflow 频繁报错 ERR_NAME_NOT_RESOLVEDERR_CONNECTION_TIMED_OUT,但在终端使用 curl 却能获取数据。
  • 排障过程
    1. 打开终端执行 nslookup github.com,发现返回的解析结果为 198.18.0.45
    2. 但在 Chrome 的 chrome://net-internals/#dns 中查询,发现 Chrome 仍然强行缓存着上一次旧会话中的 198.18.0.12
    3. Chrome 向已被内核注销的过期 Fake-IP 发送 TCP 连接,导致路由死锁;
  • 技术解决
    1. 打开 PowerShell 执行 ipconfig /flushdns 刷新操作系统解析池;
    2. 在 Chrome 中点击“Clear host cache”并刷新套接字连接池;
    3. 关闭浏览器重新打开,GitHub 网页秒级满血加载。

案例三:Chrome 浏览器开启了安全 DNS 导致请求绕过本地代理 Fake-IP 环路直连撞墙

  • 用户背景:大学生小赵刚组装了新电脑,下载安装了最新版 Google Chrome 浏览器并导入了机场订阅。在客户端内测试所有香港、日本节点延迟均为 50ms 极佳,但只要在 Chrome 里面输入 google.comyoutube.com,就显示 DNS_PROBE_FINISHED_BAD_CONFIG
  • 排障过程
    1. 检查本地 7890 端口处于监听状态;
    2. 在 PowerShell 中使用 curl.exe -x http://127.0.0.1:7890 https://www.google.com 可以瞬间获取页面内容,证明节点与代理核心完全正常;
    3. 故障完全出在 Chrome 浏览器自身的网络栈配置上;
    4. 检查 Chrome 设置,发现最新版 Chrome 默认勾选了“使用安全 DNS”,并且服务商配置为 Cloudflare(1.1.1.1);
  • 技术解决
    1. 在 Chrome 设置中将“使用安全 DNS”彻底关闭
    2. 刷新浏览器页面,Google 首页与 YouTube 4K 视频瞬间秒开渲染。

八、常见高频疑难问题答疑(FAQ)

Q1: 客户端节点测速全是绿色的,为什么浏览器打开 Google 依然提示“无法访问此网站”?

“节点测速全绿”仅仅代表你的客户端代理内核与远端机场服务器之间的底层网络链路(TCP三次握手或特定HTTP探针)是通畅的;而“浏览器打不开外网”代表从浏览器到代理内核这一段本地链路发生了中断。最常见的原因包括:第一,客户端的“系统代理(System Proxy)”开关根本没有打开,浏览器依然在通过普通物理网卡直连出境;第二,系统注册表中的代理端口与客户端当前实际监听的端口不一致(例如注册表配置的是旧的 1080,而软件监听的是 7890);第三,浏览器开启了“安全 DNS (DoH)”,导致域名解析在本地就被直接掐断;第四,客户端正处于“规则模式”,而分流规则组选中的节点实际上已经失效,将模式临时切换为“全局模式 (Global)”即可快速排查。

Q2: 为什么关闭代理客户端后,电脑连百度、微信都打不开了(断网)?

这是由于“系统代理注册表死锁”所致。当代理软件在运行时,它会在 Windows 注册表(HKCU\...\Internet Settings)中将系统代理开关打开,并将服务器指向 127.0.0.1:7890。如果用户在退出软件时直接通过任务管理器强杀进程、电脑异常断电蓝屏、或者软件没有正常触发退出注销钩子,系统代理开关依然处于开启状态。然而此时后端的代理核心已经停止运行,导致操作系统将包括国内网站在内的所有网络请求全部转发给了一个已经死去的端口。解决办法是参考本文第二节,在 Windows 设置中关闭系统代理,或在管理员 PowerShell 中执行 Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' -Name 'ProxyEnable' -Value 0 即可秒级复原。

Q3: 为什么 Edge / Chrome 提示 ERR_PROXY_CONNECTION_FAILED

该错误码的中文直译为“代理连接失败”。它明确指出了故障点:浏览器的请求成功送达了系统代理配置的地址,但该地址拒绝了连接。原因非常纯粹:第一,客户端根本没有启动,或者在后台崩溃退出了;第二,客户端的混合代理端口(Mixed Port)被改动了(例如改成了 7895),但 Windows 系统的代理设置依然固执地指向 7890;第三,杀毒软件(如火绒、360)拦截了浏览器访问 127.0.0.1 环回接口的权限。排查时请打开任务管理器确认内核进程是否存在,并在客户端设置中核对端口数字与系统代理是否完全一致。

Q4: 什么是系统代理(System Proxy)和 TUN 模式?两者的核心区别是什么?

系统代理与 TUN 模式工作在完全不同的网络协议栈层级。系统代理(System Proxy)工作在应用层(Application Layer),它通过向操作系统广播环境变量与 WinINet 注册表参数,通知那些遵循系统代理规则的软件(如浏览器、OneDrive)主动将 HTTP/SOCKS 请求打包发给 7890 端口;但对于那些压根不理睬系统代理的软件(如 Windows 终端 CMD、Git、大多数海外端游、Discord 等),流量依然会直连并撞墙。而 TUN 模式工作在网络层(Network Layer),它在操作系统中虚拟出一张真实的物理网卡,并将全局默认路由直接接管,无论软件是否支持代理,其产生的所有 TCP/UDP 数据包都会被强制吞入虚拟网卡进行透明转发,属于真正意义上的“全局底层接管”。

Q5: 为什么 Telegram、Discord 无法联网,而浏览器网页却能正常打开?

Telegram、Discord 以及 Spotify 等桌面客户端拥有独立于 Windows 系统代理的网络通信栈。它们在默认设置下通常不会主动读取操作系统的 HTTP 代理配置,或者其通信协议中包含了大量的自定义 UDP 语音流。解决这一问题有两种方案:第一种是开启客户端的“TUN 模式(虚拟网卡全局接管)”,此时所有非浏览器软件的流量将被强制送入代理隧道;第二种是在 Telegram 等软件内部的“网络设置(Connection Type)”中,手动添加 SOCKS5 代理,主机填 127.0.0.1,端口填你的客户端 SOCKS 端口(通常同样是 7890),即可实现高速连通。

Q6: 为什么打开某个外网后一直显示 ERR_SSL_PROTOCOL_ERROR

该错误代表浏览器在与目标网站进行 HTTPS 加密握手协商时,接收到了不符合 SSL/TLS 协议规范的数据帧。在代理场景下,这通常是由于“协议错位”引发的:例如浏览器的代理类型被错误地配置为了 SOCKS5,但客户端对应的端口却是一个纯 HTTP 监听端口;或者反过来,将 HTTP 协议流量硬塞给了 SOCKS 端口。此外,某些小型机场节点为了降低延迟,对特定海外域名的 HTTPS 流量进行了粗暴的中间人替换(MITM),但其下发的自签名证书未能通过浏览器的安全签名校验,同样会触发该协议报错。切换为原生专线节点或检查客户端协议类型即可修复。

Q7: 开启“全局模式 (Global)”为什么反而所有国内网站都打不开了?

“全局模式(Global Mode)”意味着客户端将彻底停用所有的分流规则集,将你电脑上产生的所有网络出站请求(包括访问百度、淘宝、Bilibili、知乎等国内网站)全部无条件地打包送入海外代理节点。很多海外机房的 VPS 节点对国内服务器的反向访问延迟极高,或者由于版权保护与反爬策略,很多国内核心网站(如国内主流视频平台、银行网银、政府政务网)会直接对来自海外数据中心 IP(如香港机房、新加坡数据中心)的访问实施全量屏蔽与封禁,表现为连接超时或 403 拒绝访问。因此,在日常使用中应始终保持为规则模式(Rule),全局模式仅用于临时排查节点连通性。

Q8: 如何用命令行终端直接测试代理端口到底有没有连通互联网?

在终端中测试代理连通性是最客观、不受任何浏览器缓存干扰的黄金标准。在 Windows PowerShell 中,直接运行带代理参数的 curl 指令:curl.exe -I -x http://127.0.0.1:7890 https://www.google.com --connect-timeout 5。如果能够在 1 秒内返回类似 HTTP/1.1 200 Connection establishedHTTP/2 200 的响应头部,则板上钉钉地证明你的本地代理核心和远程节点 100% 畅通可用;若此时浏览器依然打不开网页,故障绝对 100% 局限在浏览器自身(如扩展插件冲突、DoH 安全 DNS 拦截或浏览器内部缓存污染),精准实现故障隔离。


故障现象与排障专题核心故障成因与底层解决技术权威排障专栏直达
打不开任何外网系统代理端口死锁、WFP 驱动冲突与 TAP/TUN 网卡失效代理连接失败故障排查
节点全红超时订阅解析失效、TLS 证书阻断与本地系统时间不同步节点大面积超时排查
网页无法解析运营商递归 DNS 投毒、Fake-IP 环路死锁与清空缓存DNS污染与解析修复
延迟突增卡顿公网 BGP 绕路跳数激增、晚高峰 QoS 整形与节点优选网络延迟过高排查
严重丢包断流路由器 Bufferbloat 缓冲膨胀、Wi-Fi 干扰与 MTU 黑洞网络丢包严重排查
IP 风控受限数据中心机房 ASN 黑名单、欺诈度评分过高与原生 IP节点IP被封与风控排查
订阅拉取失败GFW 阻断机场 API 域名、UA 标识错误与本地缓存覆写订阅链接无法更新排查
客户端闪退报错内核驱动版本冲突、端口 7890 占用与 Webview2 缺失客户端闪退与报错修复
AI 地区不支持浏览器 WebRTC IP 泄露、Cloudflare WAF 挑战死循环AI提示地区不支持排查
奈飞锁区自制剧机房广播 IP 被标记、非原生住宅出口与 DNS 伪装失效流媒体解锁失败排查

跨集群横向扩展与深度配置指南

本站致力于客观评测网络加速器与海外服务选型,严谨遵守网络法律法规,内容仅供学术与技术交流参考。

今日主推光速云 IEPL 专线年付折合 ¥7.5/月
直达官网 →