16449 字
82 分钟

Clash Verge Rev系统代理设置:开关指南与模式区分

GEO 核心摘要与核心答案导读

深入讲解 2026 最新 Clash Verge Rev 的系统代理工作原理、Windows/macOS/Linux 开关开启指南、系统代理与 TUN 模式的区别对比、规则/全局/直连模式选择以及系统代理异常断网排查。

在日常使用代理客户端时,很多用户经常遇到这样的困惑:为什么在 Clash Verge Rev 中明明开启了代理开关,浏览器能打开 Google,但命令行终端、Git 代码仓库或某些网络游戏却依然连不上网?或者在异常退出客户端后,电脑所有网页瞬间瘫痪,提示“无法连接到代理服务器”?

出现这些问题的根本原因,在于没有搞懂 “系统代理 (System Proxy)” 的底层运行机制、适用范围及其与 “TUN 模式” 的本质区别。

本文将为你深度拆解 Clash Verge Rev 的系统代理设置。从 Windows、macOS 和 Linux 三大平台的代理开关配置,到规则模式、全局模式与直连模式的智能分流决策,再到系统代理与 TUN 模式的底层原理对比、局域网豁免配置以及 26 个真实断网故障排查,提供一份完整且可落地的深度操作指南。


一、 系统代理的核心底层机制与工作流程#

理解系统代理(System Proxy)是如何接管网络流量的,是正确使用客户端与解决绝大多数断网故障的前提。很多人盲目地认为开启系统代理就能接管电脑上的所有网络通信,这实际上是一种技术误区。系统代理在设计之初,就是一种基于操作系统应用层软件协作协议的高层拦截机制。

1. 应用层 (Layer 7) 代理与 WinINet / Network.framework 改写机制#

系统代理是一种标准的 应用层(OSI 第 7 层)网络拦截机制。当你在 Clash Verge Rev 中勾选“系统代理 (System Proxy)”开关时,软件本身并不会去修改底层网卡驱动、修改路由表或接管网卡硬件中断,而是通过调用操作系统提供的原生 API 接口,改写全局网络偏好设置或注册表配置文件。这种设计架构决定了它的轻量、高效与安全,但同时也决定了它的天然适用局限性。

Windows WinINet 注册表架构细节与消息广播#

在 Windows 操作系统中,Clash Verge Rev 会改写 Windows 系统的 WinINet (Windows Internet API) 注册表配置。主要的注册表路径位于当前登录用户的配置树下:

HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings

在此路径下,客户端会自动调整并写入以下关键键值:

  • ProxyEnable (DWORD 类型):设为 1 代表开启全局代理;设为 0 代表注销并关闭代理。
  • ProxyServer (字符串类型):赋值为 127.0.0.1:7890(或自定义的 HTTP/Socks5 监听端口)。
  • ProxyOverride (字符串类型):写入局域网与环回地址豁免列表,例如 <local>;192.168.*;10.*

从操作系统底层实现来看,WinINet 是 Windows 内置的高层网络 API 封装,主要负责为 HTTP、HTTPS 和 FTP 协议提供连接池管理、Cookie 存储、认证凭据缓存以及代理中转能力。当 Chrome 或 Edge 浏览器发起一个 HTTP 请求时,浏览器底层的 WinINet 动态链接库(WinINet.dll)会首先读取注册表中的 ProxyEnable。如果值为 1 且目标主机不命中 ProxyOverride 豁免列表,WinINet 会主动向本地代理端口 127.0.0.1:7890 发起 TCP 连接,发送 HTTP CONNECT 请求,完成代理隧道的建立。

当 Clash Verge Rev 改写了注册表中的 ProxyEnableProxyServer 键值后,软件的 Rust 后端会调用 Windows 原生 API InternetSetOption 函数,传入 INTERNET_OPTION_SETTINGS_CHANGEDINTERNET_OPTION_REFRESH 参数。同时,软件会调用 SendMessageTimeout 函数向系统所有顶层窗口广播 WM_SETTINGCHANGE 消息(参数为 "Internet Settings")。支持 WinINet 规范的应用程序在接收到该窗口消息后,会自动触发代理配置重新加载逻辑,在下一次发起 Socket 连接前将数据包打包发送至 127.0.0.1:7890

需要特别说明的是,WinINet 注册表仅对当前登录用户的 GUI 会话生效。操作系统后台服务组件常用的 WinHTTP 代理机制(可通过在管理员控制台运行 netsh winhttp show proxy 查询)默认不会被改写。 WinHTTP (winhttp.dll) 是专门为后台无人值守服务设计的高性能网络库。由于 Windows 服务通常在 NT AUTHORITY\SYSTEMNT AUTHORITY\LOCAL SERVICE 账号下运行,这些服务账号在运行时不会加载当前登录用户的 HKCU 注册表树,因此后台服务完全感知不到 GUI 界面开启的系统代理。这就是为什么 Windows 系统更新服务(Windows Update)、BITS 后台传输服务以及 Windows Defender 病毒库更新常常不受系统代理开关影响的底层原因。此外,当 Windows 11 从休眠状态唤醒时,网络协议栈可能会重置 WinINet 状态,因此需要 Clash Verge Rev 的守护进程进行定时状态校验与补重新写入。

macOS SystemConfiguration.framework 偏好设置与 Dynamic Store 机制#

在 macOS 系统中,代理设置由 SystemConfiguration.frameworkSCDynamicStore 动态数据库统一管理。当在 Clash Verge Rev 中开启系统代理时:

  1. 客户端通过 Cocoa API 向 macOS 的 configd 守护进程发起代理修改请求。
  2. 系统会在 /Library/Preferences/SystemConfiguration/preferences.plist 中更新当前活动网络服务(如 Wi-Fi 或 USB 以太网)的代理描述符。
  3. 自动开启 网页代理 (HTTP)安全网页代理 (HTTPS) 以及 SOCKS 代理 开关,将服务器地址绑定为 127.0.0.1,端口设为 7890

macOS 偏好设置中的每一个网络接口都有独立的代理描述句柄。Clash Verge Rev 会自动遍历当前活跃的所有物理网卡与虚拟网卡,确保在 Wi-Fi 切换为有线网时代理配置不会丢失。应用程序在建立连接时,macOS 内置的 CFNetwork.framework 底层网络库会自动读取 SCDynamicStore 数据库,并将 HTTP 请求路由至指定的代理端口。

在最新的 macOS Sonoma 和 macOS Sequoia 系统中,苹果引入了更为严格的 Network Extension 沙盒安全限制。应用程序篡改全局网络代理偏好设置必须通过 SystemConfiguration 句柄的提权校验。如果用户曾经安装过其他第三方网络诊断工具,可能会导致 configd 锁死偏好设置文件。Clash Verge Rev 通过 Rust 底层的 objc2 绑定库,实现了对 SCDynamicStoreSetNotificationKeys 消息的监听,能够实时捕捉系统网络接口的变动并秒级重新注入代理配置。

Linux GNOME dconf / gsettings / KDE KIO 代理机制#

在 Linux 桌面环境下,系统代理的改写机制依赖于具体使用的桌面环境(Desktop Environment):

  • GNOME 桌面环境:Clash Verge Rev 会通过 D-Bus 总线向 dconf 数据库发送 IPC 指令,修改 org.gnome.system.proxy 路径下的属性。将 mode 设为 'manual',并在 httphttpssocks 子路径下写入 host='127.0.0.1'port=7890
  • KDE Plasma 桌面环境:客户端会修改用户家目录下的配置文件 ~/.config/kioslaverc,更新 [Proxy Settings] 节点中的 ProxyType=1 以及 HTTP/Socks 代理服务器地址。

Linux 桌面环境下的代理配置仅对基于 GNOME/KDE 框架构建的 GUI 应用程序(如 Firefox、Chrome、Thunderbird)生效,而终端命令行控制台工具(如 bash、zsh、curl、wget)默认不会自动读取 gsettings 数据库,导致桌面代理与命令行环境存在天然的隔离。这种隔离虽然保证了命令行脚本不会因 GUI 代理故障而崩溃,但也给 Linux 开发人员带来了配置环境变量的额外工作。

2. 7890 混合监听端口 (Mixed Port) 的协议盲嗅探与脱敏解析机制#

在 Clash Verge Rev 后台,Mihomo (Clash Meta) 内核 启动时会在本地绑定一个混合监听端口(Mixed Port,默认 7890,部分版本为 7897)。该端口集成了 HTTP、HTTPS 以及 Socks5 协议的自动识别能力。

当来自浏览器的 Socket 请求到达 127.0.0.1:7890 端口时,Mihomo 内核的底层 Go 语言网络监听器(net.Listener)会并发创建专门的协程(goroutine)来处理入站连接。内核会预读取连接首字节的 1 到 3 个字节(即 Peek 窥探操作),而无需从 TCP 接收缓冲区中移除该报文:

  1. SOCKS5 协议识别:如果报文的首字节为十六进制 0x05,内核瞬间识别出这是一个标准的 SOCKS5 握手请求(RFC 1928 规范)。内核随后响应 0x05 0x00 完成无认证握手,并提取出目标域名的地址类型(IPv4/Domain/IPv6)及目标端口,将其指派给分流引擎。
  2. HTTP / HTTPS 协议识别:如果报文的前几个字节匹配标准的 HTTP 请求动词 ASCII 码(如 GETPOSTCONNECTHEADPUTOPTIONS),内核判定该连接为 HTTP/1.1 代理协议(RFC 7231 规范)。对于 HTTPS 请求发起的 CONNECT target.com:443 HTTP/1.1 指令,Mihomo 内核会向客户端返回 HTTP/1.1 200 Connection Established 响应,从而在应用程序与内核之间建立起透明的加密字节流隧道。

这种单端口混合嗅探机制(Mixed Port)避免了传统代理客户端需要分别开启 7890 (HTTP) 和 7891 (Socks5) 两个不同端口的冗余设计,极大简化了用户在操作系统中的代理配置复杂度。同时,Mihomo 内核引入了动态内存池 sync.Pool 管理缓冲区分配,在面对上万个并发 TCP 短连接请求时,大幅降低了 Go 语言垃圾回收器 (GC) 的停顿时间,保障了极高的网络吞吞率。

flowchart TD
App[应用程序: Chrome / Edge / 微信] -- 1. 自动读取系统代理注册表 --> OSProxy[操作系统代理全局配置: 127.0.0.1:7890]
OSProxy -- 2. 发起 HTTP/Socks5 报文 --> MixedPort[Clash Verge Rev 监听端口 7890]
subgraph Mihomo 内核分流引擎
MixedPort --> MatchRule{分流规则匹配 Engine}
MatchRule -- DOMAIN / GEOIP 直连 --> Direct[Direct 本地网卡直接出局]
MatchRule -- DOMAIN / GEOIP 代理 --> Node[Proxy 节点策略组加密]
end
Direct --> ChinaWeb[国内网站: 百度/淘宝/Bilibili]
Node -- TLS / UDP 加密隧道 --> RemoteNode[海外代理服务器节点]
RemoteNode --> ForeignWeb[海外网站: Google/YouTube/GitHub]

通过上面的数据流程图可以看出:

  1. 系统代理是一种**“被动协同”机制**:只有那些主动读取操作系统代理设定的应用程序,其流量才会送入 Clash Verge Rev 的 7890 监听端口。
  2. 流量进入端口后,由 Mihomo 内核根据规则库(Rules)判断是走 Direct 直连还是 Proxy 加密出局。
  3. 不读取系统代理设置的软件(如命令行 CMD、部分 C/S 架构游戏、Docker 容器)会直接跳过代理端口,由本地网卡直连出局。

二、 Windows / macOS / Linux 三平台系统代理开启与配置指南#

在 Clash Verge Rev 中,开启系统代理的操作非常直观,但在不同操作系统中,还需要注意防范权限拦截与自动关闭问题。

1. Windows 10 / 11 开启与手动校验步骤#

  1. 打开 Clash Verge Rev 客户端主界面。
  2. 在左侧导航栏中点击 设置 (Settings) 选项。
  3. 在右侧 System Proxy (系统代理) 开关上,用鼠标将其点击切换为 开启 (ON) 状态。
  4. 验证 Windows 注册表是否生效
  • Win + R 快捷键打开运行框,输入 inetcpl.cpl 打开“Internet 属性”。
  • 切换到 “连接” 选项卡,点击右下角的 “局域网设置 (LAN Settings)”
  • 确认 “为 LAN 使用代理服务器” 已被自动勾选,且地址为 127.0.0.1,端口为 7890
[Settings (设置)] ──► [System Proxy (系统代理)] ──► 切换为 ON 开启

可以在 PowerShell 中运行以下命令查询注册表状态:

Terminal window
Get-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' | Select-Object ProxyEnable, ProxyServer, ProxyOverride

预期输出 ProxyEnable1ProxyServer127.0.0.1:7890

注意:如果安装了 360 安全卫士或火绒安全,杀毒软件可能会弹出警告提示“有程序正在修改系统代理设置”,务必选择“允许本次修改”并勾选“不再提醒”。

2. macOS 开启与权限配置#

  1. 打开 Clash Verge Rev 客户端。
  2. 进入 Settings (设置) 面板,找到 System Proxy (系统代理) 并开启。
  3. 首次开启时,macOS 可能会弹出系统授权提示,要求输入 Mac 开机锁屏密码以允许改写网络设置。
  4. 验证 macOS 代理是否生效
  • 打开终端运行 networksetup -getwebproxy Wi-Fi(若使用有线网将 Wi-Fi 换为 Ethernet)。
  • 预期输出:
Enabled: Yes
Server: 127.0.0.1
Port: 7890
Authenticated Proxy Enabled: 0

3. Linux (Ubuntu / Debian / Arch) 桌面环境代理开启#

  1. 在 Linux 版本的 Clash Verge Rev 设置中开启系统代理。
  2. 如果使用 GNOME 桌面,可通过终端验证 GNOME 全局代理配置:
Terminal window
# 查询 HTTP 代理主机与端口
gsettings get org.gnome.system.proxy.http host
gsettings get org.gnome.system.proxy.http port

预期输出应为 '127.0.0.1'7890。 3. 命令行终端手动补全代理环境变量: Linux 系统代理仅对 GUI 应用生效。为了让终端控制台(bash/zsh)同步走代理,可在 ~/.bashrc~/.zshrc 中添加以下别名函数:

Terminal window
# 设置命令行代理环境变量
alias setproxy="export http_proxy=http://127.0.0.1:7890; export https_proxy=http://127.0.0.1:7890; export all_proxy=socks5://127.0.0.1:7890; echo '命令行代理已开启'"
alias unsetproxy="unset http_proxy https_proxy all_proxy; echo '命令行代理已关闭'"

三、 代理模式深度解析:规则模式、全局模式与直连模式#

在 Clash Verge Rev 的 代理 (Proxies) 页面顶部,提供了三种核心运行模式:规则模式 (Rule)全局模式 (Global)直连模式 (Direct)。正确区分这三种模式对于保证访问速度与节省机场套餐流量至关重要。

1. 规则模式 (Rule - 强烈推荐)#

在规则模式下,Mihomo 内核会充当一个“智能流量调度员”。每一个进来的网络请求,内核都会按照配置文件中定义的规则列表(Rules)从上到下逐条匹配:

  • DOMIAN-SUFFIX 规则:如 DOMAIN-SUFFIX,google.com,Proxy,当匹配到以 google.com 结尾的域名时,自动将其指派给 Proxy 策略组绑定的海外节点。
  • GEOIP / GEOSITE 规则:如 GEOSITE,cn,DIRECT,匹配到国内主流网站域名时,直接走本地网络出局(Direct),绕过代理节点。访问国内百度、淘宝、Bilibili 不消耗任何机场流量,延迟最低。
  • MATCH 兜底规则:若规则库中均未命中,最后执行 MATCH,Proxy 兜底规则送入代理。

Mihomo 规则匹配引擎的高性能底层算法与缓存机制#

Mihomo 内核在处理高并发网络报文分流时,采用了高度优化的数据结构以降低 CPU 查找开销:

  • Radix Tree (基数树) 域名匹配算法:在处理 DOMAIN-SUFFIXDOMAIN-KEYWORD 规则时,内核会将成千上万条域名规则构建为内存中的 Radix Tree。当浏览器发起对 sub.domain.google.com 的访问时,内核无需逐行遍历规则列表,而是沿着基数树的节点进行路径查找。匹配的时间复杂度为 O(K)O(K)(其中 KK 为域名字符串的深度),能在极短时间内得出分流结论。如果存在通配符域名(如 *.google.com),基数树能够自动回溯到前缀节点完成模糊匹配,极大提升了超大规则集下的内存利用率与查找效率。在面对几十万条复杂域名匹配场景下,Radix Tree 相比传统的线性遍历查找算法,性能提升了上百倍。
  • LPM (Longest Prefix Match) Trie 树 IP 匹配:针对 IP-CIDRIP-CIDR6 规则,内核将 32 位 IPv4 地址和 128 位 IPv6 地址转换为二进制位路径,存入 LPM Trie 树。在进行目标 IP 匹配时,按最高比特位依次向下检索,实现纳秒级的 CIDR 网段查找。即便是面对包含几十万条 IP 子网网段的全球 IP 数据库,Trie 树的检索性能依然稳定保持在常数级级别,绝不会随着 IP 数据库体积增大而导致连接延迟增加。
  • Memory Mapped Files (mmap) GeoData 加载:Mihomo 支持通过 mmap 系统调用将 geoip.datgeosite.dat 规则数据库直接映射到虚拟内存空间。在进行国内与海外域名判定时,避免了常规文件 Read 操作引起的频繁堆内存分配与垃圾回收(GC)开销,大幅降低了大型规则集下的内存占用与 CPU 抖动。这种零拷贝的内存映射技术,使得客户端即时拉取数兆大小的规则文件也能保持平滑无卡顿。
  • 并发安全 LRU 规则结果缓存:为了进一步提升极高并发场景(如网页加载上百张图片的场景)下的分流性能,Mihomo 内核内置了一个线程安全的 LRU (Least Recently Used) 规则结果缓存池(使用 sync.Map 构建)。当 github.com 首次通过规则树查找到出局策略组为 Proxy 后,该判定结果会被瞬时缓存至 LRU 散列表中。后续发往 github.com 的数百个 HTTP 请求将直接在 O(1)O(1) 常数时间内命中有缓存,绕过整个树形结构的重复遍历。LRU 缓存机制还带有自动过期与容量限制,防止长时间运行导致内存泄漏。
请求目标 -> RULE-SET 规则集 -> DOMAIN-EXACT 完全匹配 -> DOMAIN-SUFFIX 后缀 -> GEOSITE -> GEOIP -> IP-CIDR -> MATCH 兜底

这种多层级的分流树保证了像 bilibili.com 这类国内大流量服务能以亚毫秒级速度直连出局,而海外开发资源(如 raw.githubusercontent.com)则准确路由至低延迟专线节点。

规则分流中 GeoData (GeoIP/GeoSite) 数据库更新机制与误杀防范#

Mihomo 内核的规则模式高度依赖 geoip.datgeosite.dat 数据库文件的时效性。

  • GeoSite 分类树:包含按域名分类的集合树,如 geosite:cn(国内域名大表)、geosite:google(谷歌服务)、geosite:telegram(电报节点)。
  • GeoIP 网段表:包含全球各国家与地区的 IP 地址段映射表。

如果在访问某些国内冷门网站或政企服务后台时,误走到了海外代理节点,通常是因为本地 GeoData 数据库过旧。Clash Verge Rev 允许在设置面板中开启 GeoData 自动升级 (Auto Update GeoData) 选项,每周定时从官方 GitHub 存储库拉取最新修正的 IPv4/IPv6 地址库,防止域名分流出现误杀或漏拦截。此外,如果用户有特殊的域名分流需求,还可以在订阅文件的覆写设置中添加 geosite:private 规避内网私有地址。

2. 全局模式 (Global)#

全局模式会彻底“切断”所有的规则判断引擎。无论你访问的是国内的 baidu.com 还是海外的 google.com,所有的网络流量都会无差别地强行送入在 Global 策略组 中选定的单个代理节点进行转发。

  • 使用场景
  • 某个冷门海外网站未被机场的 GeoData 规则库收录,在规则模式下被误判为直连无法打开。
  • 需要调试特定节点的连通性或解锁特定地区的流媒体(如测试某个新加坡节点是否支持 Netflix 播放)。
  • 副作用:访问国内百度、微信、网易云音乐也会绕道海外节点,导致访问变慢,且会浪费大量机场流量。同时,国内部分对异地登录极度敏感的应用(如网银、炒股软件)可能会因为 IP 异常触发安全风控拦截。

3. 直连模式 (Direct)#

直连模式相当于将 Clash Verge Rev 变成了一个“透明过道”。所有的网络请求进入 7890 端口后,内核不进行任何加密转发,直接由本地网络发起访问。

  • 使用场景:机场套餐流量用尽,或者临时不需要任何科学上网环境,但又不想频繁开关系统代理服务时使用。

四、 系统代理 (System Proxy) vs TUN 模式:全方位对比与精准选型#

很多初学者容易将“系统代理”与“TUN 模式”混为一谈。实际上,它们在 OSI 网络七层模型中所处的位置不同,导致了接入能力与应用场景的巨大差异。系统代理属于典型的应用层接管,而 TUN 模式则是虚拟网卡级别的网络层接管。

1. 技术架构差异对比表#

对比维度系统代理 (System Proxy)TUN 模式 (Wintun / System Stack)
OSI 工作层级第 7 层(应用层)第 3 层(网络层 IP 层)
接管流量方式修改 WinINet 注册表 / 桌面偏好设置创建 Wintun 虚拟网卡,改写系统路由表
支持的软件类型现代浏览器、遵循系统代理的 GUI 应用全系统所有软件(命令行、游戏、UWP、Docker)
支持的网络协议仅支持 HTTP / HTTPS / Socks5支持全部 IP 协议(TCP / UDP / ICMP/Ping)
提权要求普通用户权限即可开启需管理员权限(安装 Service Mode / Helper)
游戏与 UDP 接管❌ 无法接管 UDP 游戏报文与 Ping✅ 完美接管游戏 UDP 报文与明文 DNS 53
系统资源消耗极低(零额外驱动开销)较低(需运行内核虚拟网卡报文封装)

2. 两类接管方式下的 DNS 解析链路(DNS Lookup Chain)全流程对比#

了解系统代理与 TUN 模式在 DNS 解析层面的流程差异,能帮助你深刻理解网络安全、防止 DNS 污染与加速网页加载的底层原理:

  • 系统代理模式下的 DNS 链路
  1. 用户在浏览器地址栏中输入 https://google.com 并按回车。
  2. 浏览器首先查询 Windows WinINet 注册表,发现系统中启用了 127.0.0.1:7890 全局系统代理。
  3. 浏览器完全跳过本地操作系统的 DNS 解析过程(即不调用本地 getaddrinfo 函数,也不发起 UDP 53 DNS 探测)。
  4. 浏览器直接建立与本地 127.0.0.1:7890 的 TCP 连接,并向代理端口发送明文 HTTP 报文:CONNECT google.com:443 HTTP/1.1
  5. 域名字符串 "google.com" 以纯文本形式送入 Mihomo 内核的分流引擎。
  6. 内核匹配到该域名需要走 overseas 节点后,将包含目标域名字符串的数据包加密打包,发送给远程海外代理服务器。
  7. 远程代理服务器在海外机房的本地网络中,向如 8.8.8.81.1.1.1 发起真实 DNS 查询,获取海外网站的真实 IP,并完成建立 TCP 连接与数据转发。

系统代理模式 DNS 的优势与局限:这种模式最大的优势在于天生防止浏览器端 DNS 污染与泄露,因为本地根本没有发起 DNS 请求。但局限在于,如果某个应用程序(如 CMD 命令行或终端软件)试图使用本地 DNS 解析库获取 IP,系统代理将完全无法干预其明文 UDP 53 报文,从而可能导致该非浏览器应用遭遇国内运营商的 DNS 劫持与污染。

  • TUN 模式下的 DNS 链路 (Fake-IP 机制)
  1. 命令行程序或网络游戏发起对 google.com 的明文 DNS 查询(UDP 53 端口)。
  2. TUN 虚拟网卡驱动通过操作系统路由表,将发往 DNS 服务器的所有 UDP 53 报文强制捕获并重定向送入 Mihomo 内核。
  3. 内核内置的 DNS 模块拦截该请求,并迅速从 198.18.0.0/16 虚构 IP 地址池中挑选一个尚未使用的 Fake-IP(例如 198.18.0.23)响应给应用程序。
  4. 内核在本地内存映射散列表中记录一对映射关系:198.18.0.23 <-> google.com
  5. 应用程序收到 Fake-IP 后,误以为这是目标服务器的真实 IP,于是向 198.18.0.23 发起 TCP Socket 连接。
  6. TUN 网卡将发往该 Fake-IP 的报文再次捕获并送回内核。内核通过内存散列表查出该 IP 对应的原始域名为 google.com,最后封装加密隧道发送至海外节点。

五、 绕过域名与局域网豁免(Bypass List)精细化配置#

系统代理的另一个核心配置就是 绕过域名列表 (Bypass List / No Proxy)。它决定了哪些目标地址可以直接绕过系统代理端口,由浏览器直接发起本地访问。

1. 默认 Bypass 语法规则与含义#

Clash Verge Rev 默认在系统中注入了以下 Bypass 规避字段:

127.0.0.1; localhost; 192.168.*; 10.*; 172.16.*; 172.17.*; 172.18.*; *.local; <local>
  • <local> / localhost:匹配本机环回地址。
  • 127.0.0.1:防止应用程序访问本机服务时误走代理,导致 127.0.0.1:7890 产生自环死锁。
  • 192.168.* / 10.*:保留的私有局域网 IP 地址段。确保访问路由器后台(192.168.1.1)、局域网打印机、NAS 存储设备时不走代理。

Bypass 豁免逻辑解析与死锁回路防范#

为什么 127.0.0.1<local> 必须强制存在于 Bypass 列表中?

如果在系统代理配置中不小心将 127.0.0.1 从 Bypass 列表中删除了,就会引发严重的网络自环死锁(Proxy Loop Deadlock):当某个应用程序试图建立连接时,操作系统根据代理设置将请求发送到 127.0.0.1:7890。然而,由于 127.0.0.1 自身也被归类为需要代理的目标,操作系统会再次尝试将发往 127.0.0.1:7890 的请求重新打包发往 127.0.0.1:7890。这一无限递归循环会在瞬间耗尽系统的 TCP Socket 端口与线程栈,导致软件界面卡死并弹出内存溢出错误。在操作系统底层,操作系统会反复分配 ephemeral 临时端口,在数秒内耗尽全部 65535 个可用端口资源,造成整个系统网络栈全面瘫痪。

因此,确保 127.0.0.1localhost 以及私有 IP 段(10.0.0.0/8172.16.0.0/12192.168.0.0/16)在 Bypass 列表中正确注入,是维护本地网络基础通信安全与系统稳定性的核心防线。

2. 通过 Merge 扩展配置自定义 Bypass 域名#

如果公司内部有特殊的私有域名(如 *.company.internal)不需要走代理,可以在 Clash Verge Rev 的 配置覆写 (Merge) 中加入自定义 Bypass:

# Clash Verge Rev 系统代理 Bypass 扩展配置
system-proxy:
enable: true
bypass:
- "127.0.0.1"
- "localhost"
- "192.168.0.0/16"
- "10.0.0.0/8"
- "*.company.internal" # 公司内网私有域名
- "*.cn" # 所有 .cn 国内顶级域名直连绕过

六、 实战配置:利用 YAML / JS Merge 打造防御型系统代理#

为了防止其他软件篡改系统代理设置或发生端口冲突,可以通过编写 Merge 覆写脚本,锁定 Clash Verge Rev 的代理参数。

生产级 YAML Merge 配置脚本示例#

打开 Clash Verge Rev 左侧的 配置覆写 (Merge) 页面,新建一个 YAML 格式的文件,粘贴以下硬化配置:

# 防御型系统代理与内核参数硬化配置
port: 7890
socks-port: 7891
mixed-port: 7890 # 混合端口监听
allow-lan: false # 默认禁止局域网未授权设备连接代理端口
bind-address: "*"
mode: rule # 强制启动时切为规则模式
log-level: info
# 系统代理参数重写
system-proxy:
enable: true
set-system-proxy: true
bypass:
- "127.0.0.1"
- "localhost"
- "192.168.0.0/16"
- "10.0.0.0/8"
- "172.16.0.0/12"
- "<local>"

保存并右键激活该 Merge 配置,重启内核后,软件系统代理设置将自动锁定为上述规范。


七、 各操作系统代理环境差异与选择对比表#

下表梳理了 Windows、macOS 和 Linux 三大操作系统在系统代理机制上的原生差异与避坑指南:

操作系统差异原生注册表/偏好设置路径受控应用覆盖率非正常退出残余后果核心避坑指南
Windows 11HKCU\...\Internet Settings80% (浏览器与大部分 GUI)系统弹出“无法连接到代理服务器”错误在系统设置中手动关闭“使用代理服务器”开关
macOSNetwork.framework Preferences85% (Safari、Chrome、系统应用)网页无法打开,DNS 提示超时进入系统设置 -> 网络 -> 代理,取消 HTTP/Socks5 勾选
Linux GNOMEgsettings org.gnome.system.proxy60% (仅 GNOME 原生应用)命令行无影响,Firefox 提示代理拒接终端运行 gsettings set org.gnome.system.proxy mode 'none'

八、 真实系统代理故障与异常恢复案例排查#

以下梳理了 26 个最常见的系统代理异常故障案例及其标准排查流程。

案例一:软件非正常退出或崩溃后,电脑所有网页提示“无法连接到代理服务器”#

问题现象#

电脑强制重启、软件卡死崩溃或直接在任务管理器中杀掉 Clash Verge 进程后,再次打开浏览器访问任何网页均提示 ERR_PROXY_CONNECTION_FAILED 或“无法连接到代理服务器”。

根因分析#

在正常退出软件时,Clash Verge Rev 会向操作系统发送注销 API,将 WinINet 注册表中的 ProxyEnable 重新恢复为 0。如果软件被强制杀死,注册表中的 ProxyEnable=1ProxyServer=127.0.0.1:7890 依然残留在系统中。此时软件后台的 7890 端口已不存在,操作系统会将所有网页请求发往空端口,导致瞬间全网瘫痪。

解决步骤#

  1. 方案一(最快):重新打开 Clash Verge Rev,手动将 系统代理 开关开启一次,然后再手动正常关闭一次。
  2. 方案二(Windows 手动恢复)
  • Win + R 打开运行框,输入 inetcpl.cpl 打开 Internet 属性。
  • 切换到 “连接” -> “局域网设置”
  • 取消勾选 “为 LAN 使用代理服务器”,点击确定即可恢复。
  1. 方案三(PowerShell 脚本一键复位)
Terminal window
# 强制关闭 Windows 系统代理注册表项
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' -Name ProxyEnable -Value 0

案例二:开启系统代理后,浏览器可以上网,但终端 CMD / PowerShell / Git 依然报错连接超时#

问题现象#

在 Windows 上开启系统代理后,Edge 浏览器访问 Google 顺畅,但在 CMD 中运行 git clonecurl https://api.github.com 依然报错 Connection timed out

根因分析#

控制台终端(CMD / PowerShell)出于设计安全考虑,默认不读取 Windows WinINet 注册表的系统代理设置。它们发起的 Socket 连接直接由操作系统 TCP 栈出局。

解决步骤#

  1. 方案一:在 PowerShell 窗口中临时注入代理环境变量:
Terminal window
$env:http_proxy="http://127.0.0.1:7890"
$env:https_proxy="http://127.0.0.1:7890"
  1. 方案二(终极方案):在 Clash Verge Rev 中安装服务模式,并直接切换开启 TUN 模式

案例三:开启系统代理后,局域网 NAS (如 192.168.1.100) 或路由器后台打不开#

问题现象#

开启系统代理后,访问海外网站正常,但在浏览器输入 192.168.1.1 或 NAS 地址时,页面长时间加载最终提示 504 Gateway Timeout

根因分析#

Bypass 列表中丢失了对应的局域网 IP 网段。浏览器将访问 192.168.1.1 的请求发给了 Clash Verge 7890 端口,Mihomo 内核由于分流规则未正确设置,误将局域网 IP 发送给了远端代理节点,导致公网节点无法路由私有 IP。

解决步骤#

  1. 打开 Clash Verge Rev 设置 -> 系统代理 Bypass 列表
  2. 确认列表中包含 192.168.*10.*
  3. 勾选 “跳过局域网代理 (Bypass Local Addresses)” 复选框。

案例四:Windows 11 杀毒软件拦截导致系统代理开关刚开启就自动弹回关闭#

问题现象#

在 Clash Verge Rev 设置中用鼠标点击开启 System Proxy 开关,界面状态按钮转圈 1 秒后又自动自动弹回关闭 (OFF) 状态,系统代理无法成功开启。

环境信息#

  • 操作系统:Windows 11 23H2 / 24H2
  • 软件版本:Clash Verge Rev v1.6.0+
  • 安全软件:360 安全卫士 / 火绒安全 6.0 / Windows Defender 实时防护

根因分析与技术机制#

杀毒软件的主动防御模块(如 360 的注册表防护或火绒的系统加固)检测到了 verge-mihomo.exe 或 GUI 主进程正在试图高频改写 HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings 注册表项中的 ProxyEnable 键值。由于某些恶意勒索软件曾经使用改写系统代理的方式进行流量劫持,杀毒软件将这一 API 调用行为误判为恶意篡改注册表,并在底层阻止了写注册表操作,导致系统代理开关被强制弹回。

排查路径与解决步骤#

  1. 打开电脑中安装的杀毒软件主界面,点击进入“防护日志”或“拦截历史记录”。
  2. 查找是否有针对 HKCU\...\Internet Settings\ProxyEnable 的注册表拦截日志。
  3. 确认拦截源进程为 Clash Verge Rev 安装目录下的 clash-verge.exeverge-mihomo.exe
  4. 在杀毒软件中选择“信任该进程”或将 Clash Verge Rev 整体安装文件夹加入安全软件的“信任区/白名单”。
  5. 右键以管理员身份重新运行 Clash Verge Rev,再次点击开启系统代理开关。

结果验证#

重新运行 Get-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' PowerShell 命令,确认 ProxyEnable 值为 1,且无任何拦截弹窗提示。


案例五:macOS 系统升级后代理端口卡死在旧端口导致全网中断#

问题现象#

macOS 从 Ventura 升级至 Sonoma 或 Sequoia 后,启动 Clash Verge 开启代理,浏览器依然无法加载任何海外与国内网页,终端提示代理拒接。

环境信息#

  • 操作系统:macOS Sequoia 15.0 / Sonoma 14.5
  • 软件版本:Clash Verge Rev macOS ARM64 版

根因分析#

macOS 大版本升级过程中,系统重置了 SystemConfiguration.framework 的底层描述符缓存,但留在 SCDynamicStore 中的旧代理句柄未被成功释放,导致系统偏好设置中绑定的代理端口依然指向已经关闭的旧进程端口,新的代理写入请求由于权限提权冲突而失败。

解决步骤#

  1. 打开 Mac 终端控制台,运行以下命令查询当前 Wi-Fi 代理绑定状态:
Terminal window
networksetup -getwebproxy Wi-Fi
  1. 运行以下命令手动强制关闭并清理偏好设置中的残余代理状态:
Terminal window
sudo networksetup -setwebproxystate Wi-Fi off
sudo networksetup -setsecurewebproxystate Wi-Fi off
sudo networksetup -setsocksfirewallproxystate Wi-Fi off
  1. 重启 macOS configd 核心网络服务守护进程:
Terminal window
sudo killall -9 configd
  1. 打开 Clash Verge Rev,在设置中重新开启一次系统代理开关。

案例六:Linux 桌面环境下系统代理生效,但 wget / curl 无法下载#

问题现象#

在 Ubuntu 或 Arch Linux 桌面版中开启 Clash Verge 系统代理后,Firefox 浏览器可以正常科学上网,但在 Bash 终端中运行 curl -I https://google.comwget 下载文件时依然提示连接超时。

根因分析#

Linux 系统代理(通过 GNOME gsettings 设置)仅对遵循 Desktop Environment 规范的 GUI 应用(如 Firefox、Chrome)生效。Linux 终端控制台程序并不读取 dconf 数据库,它们依赖系统环境变量 http_proxyhttps_proxy 的指示。

解决步骤#

  1. 打开 ~/.bashrc~/.zshrc 配置文件。
  2. 在文件末尾加入以下自动注入环境变量的函数:
Terminal window
export http_proxy="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890"
export all_proxy="socks5://127.0.0.1:7890"
export no_proxy="127.0.0.1,localhost,192.168.0.0/16,10.0.0.0/8"
  1. 若仅希望为 curlwget 独立配置代理,可在 ~/.curlrc 中写入:
proxy = "http://127.0.0.1:7890"
  1. 运行 source ~/.bashrc 刷新当前 Shell 终端上下文。

案例七:开启系统代理后 UWP 微软商店提示无网络连接#

问题现象#

Windows 10 / 11 用户开启 Clash Verge 系统代理后,浏览器上网正常,但打开微软应用商店 (Microsoft Store)、Xbox 客户端或 Netflix UWP 原生应用时,页面显示“网络已断开”或错误代码 0x800704cf

根因分析#

Windows 操作系统为了防止 UWP (Universal Windows Platform) 应用私自收集用户本地网络信息,默认启用了 AppContainer 隔离沙盒机制。在该机制限制下,所有 UWP 应用被禁止向本机环回地址 (127.0.0.1) 发起网络 Socket 请求。由于系统代理将流量指向 127.0.0.1:7890,UWP 应用在尝试建立连接时直接被操作系统沙盒阻断。

解决步骤#

  1. 打开 Clash Verge Rev 客户端主界面,进入 工具 (Tools) 选项卡。
  2. 点击 UWP 回环工具 (Enable Loopback Exemption) 按钮(软件会自动请求管理员权限启动 CheckNetIsolation.exe 包装器)。
  3. 在弹出的 UWP 应用列表中,点击顶部“全部勾选 (Exempt All)”按钮,或单独勾选 Microsoft StoreXboxXbox App
  4. 点击右下角的 保存修改 (Save Changes) 按钮。
  5. 重新打开微软应用商店,刷新即可恢复正常网络访问。

案例八:多网卡或虚拟机开启导致 7890 本地端口被占用的解决方案#

问题现象#

在启动 Clash Verge Rev 时,软件右下角弹出内核报错提示 Address already in use: 127.0.0.1:7890,系统代理虽然开启但网页完全打不开。

根因分析#

电脑上安装了其他代理软件(如旧版 Clash、V2RayN、Charles 抓包工具)或者开启了 VMware / Hyper-V 虚拟机服务,导致本地 7890 TCP 端口已经被其他后台进程抢先监听绑定。

排查路径与解决步骤#

  1. 打开 PowerShell 控制台,运行以下命令查找占用 7890 端口的进程 PID:
Terminal window
netstat -ano | findstr "7890"
  1. 记下输出最后列的 PID 数字(例如 4512),运行命令查找对应进程名称:
Terminal window
tasklist | findstr "4512"
  1. 在任务管理器中结束该冲突进程。
  2. 长久解决方案:打开 Clash Verge 设置,将 Mixed Port (混合端口) 从默认的 7890 修改为未被占用的自定义端口(如 789717890)。修改后,Clash Verge 会自动将系统代理指向新的端口,彻底规避端口冲突。

案例九:开启全局模式后腾讯会议/钉钉音视频通话严重卡顿丢包#

问题现象#

在 Clash Verge 中切为全局模式 (Global) 后,访问海外网页流畅,但此时加入腾讯会议、钉钉直播或微信语音通话时,音视频画面严重卡顿、延迟高达数秒甚至频繁掉线。

根因分析#

音视频实时会议系统高度依赖 UDP 协议(如 WebRTC / RTP 协议) 来传输低延迟流媒体。当切换为全局模式时,Mihomo 内核将所有目标 IP 的 UDP 报文强行加密打包推送到海外代理节点。海外节点再将 UDP 报文发回国内腾讯会议服务器,产生巨大的物理跨国延迟与严重的丢包率。

解决步骤#

  1. 在 Clash Verge Rev 主界面左侧点击 代理 (Proxies) 面板。
  2. 将顶部运行模式由 全局模式 (Global) 切换回 规则模式 (Rule)
  3. 在规则模式下,Mihomo 的 GEOSITE,cn 规则会自动识别腾讯会议与钉钉服务器域名,将其指派为 DIRECT 直连出局,从而恢复本地网卡超低延迟直连。

案例十:系统代理下部分网页提示“你的连接不是专用连接” (SSL 握手错误)#

问题现象#

开启系统代理访问某些 HTTPS 网站时,Chrome 浏览器弹出红色警告“你的连接不是专用连接”,错误代码显示 NET::ERR_CERT_AUTHORITY_INVALIDSSL_ERROR_BAD_CERT_DOMAIN

根因分析#

某些机场订阅或本地扩展规则中误开启了 MITM (Man-In-The-Middle) HTTPS 中间人解密功能。中间人解密需要客户端信任本地生成的根证书(Root CA)。如果客户端未成功安装该根证书,浏览器在检测到 HTTPS 证书颁发机构不匹配时,出于防御中间人劫持的安全策略,会自动阻断 TLS 握手。

解决步骤#

  1. 打开 Clash Verge Rev 的 Merge 覆写配置,确认未引入带有 mitm 字段的自定义解密规则。
  2. 如果确有解密需求,进入客户端设置 -> 证书管理 (Certificate System),点击“安装 Mihomo 根证书”并将其导入 Windows “受信任的根证书颁发机构”存储区。
  3. 无解密需求的用户,直接取消勾选 MITM 功能,清空浏览器缓存后重启浏览器即可。

案例十一:公司内网 8080 端口与 Clash Verge 本地端口产生路由冲突#

解决步骤#

在 Merge 覆写中将 system-proxy.bypass 显式加入公司内部 IP 地址段(如 10.200.0.0/16)。


案例十二:使用系统代理时微信/QQ 网页版接收图片极其缓慢#

解决步骤#

微信/QQ 图片服务器域名未命中 Direct 直连规则。在 Merge 配置中将 *.qpic.cn*.weixin.qq.com 显式加入直连规则。


案例十三:Windows 11 休眠唤醒后代理注册表状态脱节导致静默断网#

问题现象#

笔记本电脑合盖休眠唤醒后,Clash Verge 开关仍显示开启,但浏览器无法加载任何网页,提示代理无响应。

根因分析#

Windows 11 的 Modern Standby 低功耗休眠机制在唤醒网络栈时,可能拉起物理网卡早于系统服务加载,导致 WinINet 句柄失效。

解决步骤#

在设置中开启“休眠唤醒后自动重启内核”,或通过快捷键 Ctrl + R 触发一键刷新代理绑定。


案例十四:企业级 VPN (Cisco AnyConnect / GlobalProtect) 与系统代理冲突#

问题现象#

启动公司 VPN 软件后,Clash Verge 系统的系统代理瞬间失效或导致 VPN 隧道断连。

解决步骤#

在 VPN 客户端设置中开启“Allow Local LAN Access”,并将 Clash Verge 切换至 TUN 模式,避免争抢 WinINet 注册表句柄。


案例十五:企业 802.1X 无线网络认证断开#

问题现象#

连接企业级 802.1X EAP-TLS Wi-Fi 时,一旦开启系统代理,无线网络提示认证超时断开。

解决步骤#

企业无线 Radius 认证请求被误注入系统代理端口,导致 802.1X 握手报文丢失。将企业 Radius 认证服务器 IP(如 10.1.1.254)添加至 Bypass 豁免列表中。


案例十六:电脑开启手机热点 (Mobile Hotspot) 后连入设备无法借用系统代理#

问题现象#

Windows 开启“移动热点”,手机连入该热点后无法上网。

解决步骤#

系统代理仅对接本机的 WinINet 请求生效,对热点转发报文无效。开启 Clash Verge 的 允许局域网 (Allow LAN) 开关,并在手机 Wi-Fi 中设置手动代理指向电脑局域网 IP。


案例十七:Edge / Chrome 提示“由贵组织管理”(Managed by your organization) 锁定系统代理#

问题现象#

在 Windows 上使用 Clash Verge 开启系统代理后,Edge 浏览器提示“由贵组织管理”,且无法在浏览器内修改代理设置。

根因分析#

Clash Verge 的某些高级模式通过写组策略注册表 HKLM\SOFTWARE\Policies\Google\ChromeMicrosoft\Edge 强制绑定了全局代理。

解决步骤#

删除上述组策略路径下的 ProxyMode 注册表项,或者在 Clash Verge 中关闭“组策略模式注入”功能。


案例十八:Android 模拟器 (夜神 / 雷电) 与电脑系统代理产生回环冲突#

问题现象#

电脑运行雷电模拟器时,开启 Clash Verge 的系统代理,模拟器内部所有 APP 均提示网络连接异常。

解决步骤#

模拟器走的是虚拟网卡 NAT。在模拟器 Wi-Fi 设置中,将代理填为电脑在虚拟网卡的网关 IP(通常为 10.0.2.2:7890),或在 Clash Verge 中直接开启 TUN 模式无感兼容。


案例十九:Windows 11 防火墙拦截 verge-mihomo.exe 本地环回端口监听#

问题现象#

开启系统代理后,浏览器提示 ERR_CONNECTION_REFUSED,运行 Test-NetConnection 127.0.0.1 -Port 7890 显示失败。

解决步骤#

打开 Windows 防火墙 -> 高级设置 -> 入站规则,添加允许 resources\sidecar\verge-mihomo.exe 进行本地 TCP/UDP 入站监听的规则。


案例二十:macOS Sequoia 15 Network Extension 框架阻断偏好设置写入#

问题现象#

在 macOS 15 上点击系统代理开关,弹出提示 Permission denied via SCNetworkConfiguration

解决步骤#

进入 macOS 系统设置 -> 隐私与安全性 -> 网络扩展 (Network Extensions),将 Clash Verge Rev 标记为“允许修改网络配置”。


案例二十一:Windows 远程桌面 (RDP) 多用户会话代理冲突#

问题现象#

在 Windows Server 或 Windows 11 多用户 RDP 环境下,一个用户开启系统代理后,其他 RDP 登录用户的浏览器网络被污染。

根因分析#

系统代理注册表写在了 HKCU(当前用户),但如果勾选了“写入全局服务”,会误写入 HKLM(系统全局),影响所有活动会话。

解决步骤#

取消勾选全局服务改写,保持 system-proxy.set-system-proxy: true 仅在用户会话隔离范围内生效。


案例二十二:macOS Safari 私密浏览与系统代理冲突#

问题现象#

在 Mac 上使用 Safari 浏览器的“无痕浏览”时,部分页面提示无法建立安全连接。

解决步骤#

苹果 Safari 无痕模式默认启用了内置的 DNS 保护。在 Safari 设置中关闭“隐藏 IP 地址”选项,避免其与 Clash Verge 的本地代理端口冲突。


案例二十三:Windows 11 企业级 Azure AD / Entra ID SSO 身份认证失效#

问题现象#

在加入企业 Azure AD 的电脑上开启系统代理后,微软 Teams 和 Outlook 客户端提示“需要进行身份验证”,SSO 令牌无法刷新。

根因分析#

Azure AD 的 MSAL (Microsoft Authentication Library) 在进行 OAuth 令牌刷新时,被误送入了第三方代理节点,触发了微软凭据防盗用拦截。

解决步骤#

在系统代理 Bypass 列表中加入 login.microsoftonline.comsts.windows.net,确保企业认证请求直连出局。


案例二十四:VMware Workstation NAT 虚拟网卡与系统代理产生路由环路#

问题现象#

启动 VMware 虚拟机后,宿主机开启系统代理,虚拟机与宿主机的 CPU 占用率同步飙升至 100%,代理端口报超时。

解决步骤#

VMware 的 VMnet8 适配器将数据包回传给宿主机 WinINet 接口引发回路。在虚拟机网络设置中改用 Bridge 桥接模式,或在宿主机中将 VMware 网卡网段(如 192.168.137.0/24)写入 Bypass 豁免列表。


案例二十五:Windows Defender 防火墙阻止 verge-mihomo.exe 监听 Loopback 端口#

问题现象#

系统代理勾选正常,注册表也显示指向 127.0.0.1:7890,但浏览器始终报 ERR_CONNECTION_REFUSED 错。

解决步骤#

打开控制面板 -> Windows Defender 防火墙 -> 允许应用通过防火墙,找到 verge-mihomo 进程,确保已勾选“专用”与“公用”两项授权。


案例二十六:macOS 升级至 15.1 后 SCNetworkConfiguration 接口提权失效#

问题现象#

macOS 升级补丁后,点开系统代理开关无报错,但在偏好设置中网页代理勾选框没有被自动勾上。

解决步骤#

打开 Mac 终端,执行以下重置网络控制服务命令:

Terminal window
sudo killall -9 configd

重启 Clash Verge 后即可恢复偏好设置改写。


九、 系统代理排查决策树与故障诊断#

出现代理异常时,无需盲目尝试,按照下面的决策树进行递进式排查即可快速定位根因:

系统代理故障现象
[1. 检查注册表/系统代理设置] ──► 端口是否指向 127.0.0.1:7890? ──► (否) ──► 手动设置或清除杀软拦截
│ (是)
[2. 检查 7890 端口监听状态] ──► PowerShell 运行 Test-NetConnection 127.0.0.1 -Port 7890
├─► (失败) ──► 内核崩溃或端口被抢占 -> 修改 Mixed Port 或重启内核
└─► (成功)
[3. 检查代理分流模式] ──► 是否误开启了 Global 全局模式? ──► 恢复为 Rule 规则模式

十、 常见问题 FAQ#

Q1: 开启系统代理和开启 TUN 模式可以同时勾选吗?#

可以同时勾选,但在技术逻辑上没必要。

当 TUN 模式开启时,底层的 Wintun 虚拟网卡已经改写了操作系统路由表,全系统所有的 IP 报文均已被 TUN 网卡强行捕获。此时即便开启系统代理,流量也会在到达系统代理端口之前被 TUN 网卡截获。建议生产环境中优先使用 TUN 模式,并将系统代理保持为关闭状态,以避免重复封装。

Q2: 为什么关闭 Clash Verge Rev 软件前,务必先手动关闭“系统代理”开关?#

因为当你在软件内主动关闭系统代理开关时,Clash Verge 会向操作系统发送注销 API,恢复系统原本的网络设置。如果直接强制关闭软件或直接关机,操作系统中的代理注册表参数得不到注销,开机后就会因找不到 7890 监听端口而导致全网断网。

Q3: 为什么开启系统代理后,使用 Ping 命令测试 google.com 依然显示超时?#

因为 Ping 命令使用的是 ICMP 协议,而系统代理(System Proxy)属于应用层代理,仅支持 TCP 和部分 UDP 协议,完全不支持 ICMP 协议

因此,在系统代理模式下,Ping 任何海外网站都会提示 Request timed out。这属于正常的协议限制,并不代表网络无法科学上网。如果需要测试 ICMP/Ping,必须切换为 TUN 模式

Q4: 什么是 PAC 自动代理配置脚本,它与 Clash Verge 的系统代理有什么区别?#

PAC (Proxy Auto-Configuration) 是一种较老的系统代理机制,它通过让浏览器加载一个 .pac JavaScript 文件来决定哪些域名走代理。而 Clash Verge Rev 采用了更现代的 指定固定端口 + 内核内部分流 (Mihomo Meta) 的架构。软件将系统代理指向固定端口 127.0.0.1:7890,所有的分流逻辑全数交由底层的 Go 内核高效处理,避免了浏览器频繁解析 JavaScript 脚本的 CPU 开销。

Q5: 为什么在 macOS 系统上开启系统代理后,Safari 浏览器可以上网,但 Chrome 却打不开网页?#

这通常是因为 Chrome 安装了某些第三方代理扩展插件(如 SwitchyOmega)。

当 Chrome 内部启用了扩展插件管理代理时,插件的优先级高于 macOS 的系统偏好设置。解决方案是在 Chrome 的 SwitchyOmega 插件中,将代理模式切换为 “使用系统代理 (System Proxy)”

Q6: 使用系统代理时,开启“允许局域网连接 (Allow LAN)”有什么作用?#

开启“允许局域网连接”后,Mihomo 内核的 7890 端口将不再仅绑定在 127.0.0.1 环回地址上,而是会绑定到电脑在局域网中的真实 IP(如 192.168.1.100)。此时,同局域网内的手机、iPad 或其他电脑,只需在它们的网络代理中填写你电脑的 IP 和 7890 端口,即可共享你电脑上的代理网络。

Q7: 在 Windows 11 上,为什么休眠唤醒后系统代理会自动失效?#

这是因为 Windows 11 在从深度休眠(Sleep/Modern Standby)唤醒时,网络协议栈(TCPIP.sys)重新初始化,可能会重置 WinINet 注册表状态。解决方案是在 Clash Verge 设置中开启 “唤醒后自动重启内核 (Restart Core on Resume)” 开关。

Q8: 使用系统代理会不会导致我的真实 IP 泄漏给访问的海外网站?#

不会。

当流量通过系统代理送入 Clash Verge Rev 后,Mihomo 内核会将请求通过加密隧道发送给远端代理节点,目标海外网站只能看到代理节点的公网 IP 地址。但需要注意的是,如果在浏览器中开启了 WebRTC,可能会通过 WebRTC 的 STUN 探测泄漏本地 IP,建议在浏览器中禁用非代理 UDP 或使用 TUN 模式。

Q9: 为什么有些软件(如 Spotify 桌面版)在系统代理下打不开,提示错误代码 408?#

部分桌面软件在发起网络请求时,不使用系统默认的 WinINet 接口,而是自己打包了独立的 Curl 或 Network 模块。解题办法是在软件自身的设置菜单中,找到 Network/Proxy 选项,手动指定代理类型为 HTTP,地址为 127.0.0.1,端口为 7890

Q10: 如何在不打开 Clash Verge 界面的情况下,快速检查系统代理端口是否正常监听?#

可以在终端中运行测试命令:

  • Windows (PowerShell)
Terminal window
Test-NetConnection -ComputerName 127.0.0.1 -Port 7890

若输出 TcpTestSucceeded : True,代表端口监听正常。

  • macOS / Linux (Terminal)
Terminal window
nc -zv 127.0.0.1 7890

Q11: 系统的 HTTP 代理端口 (7890) 和 Socks5 代理端口 (7891) 有什么区别?#

HTTP 代理协议带有完整的 HTTP 请求头信息,兼容性最好;而 Socks5 属于底层的传输层代理协议,支持纯二进制 TCP/UDP 流量转发。Clash Verge Rev 默认开启了 mixed-port: 7890,该端口能够自动识别传入的报文是 HTTP 还是 Socks5 并自动切换,因此通常统一填写 7890 即可。

Q12: 为什么在全局模式下访问 ip138.com 显示的还是中国 IP?#

因为 ip138.com 等国内 IP 查询网站可能被浏览器或 DNS 本地缓存了结果。在切换为全局模式后,建议打开浏览器的无痕窗口(Incognito Mode)重新访问,或运行 ip.sb 查看节点真实出局 IP。

Q13: 使用公司电脑时,发现 Clash Verge 的系统代理开关经常被强制关闭,怎么解决?#

很多公司部署了组策略(Domain Group Policy)或网安管控软件(如深信服、天融信客户端)。组策略会每隔数分钟自动刷新注册表,强制清除 ProxyEnable。针对这种环境,安装并开启 TUN 模式 是唯一的解决途径,因为 TUN 模式不依赖系统注册表设置。

Q14: 可以在不配置系统代理的情况下使用 Clash Verge 吗?#

可以。

如果你只需要部分特定的软件走代理(例如仅让 Telegram 或特定下载器走代理),可以保持 Clash Verge 的系统代理和 TUN 模式均处于关闭状态,仅让软件后台保持运行。然后单独在 Telegram 的代理设置中填写 127.0.0.1:7890。这样可以实现零侵入式的精确局部代理。

Q15: 系统代理模式下,为什么在 Task Manager 中看到 Clash Verge 流量很小,网页却加载很快?#

因为在系统代理模式下,浏览器接收到的解密数据直接在内核进程 verge-mihomo.exe 中流转,系统任务管理器中的网络统计有时会将其归类为本地环回流量(Loopback Traffic),因此主界面 GUI 进程的网速显示可能存在延迟。

Q16: 开启系统代理后,OneDrive 客户端频繁提示“正在设置代理”怎么解决?#

OneDrive 在 Windows 10/11 上依赖系统 WinINet 代理。如果发生频繁重连,可在 Bypass 列表中加入 *.onedrive.live.com*.storage.live.com,强制 OneDrive 直连出局。

Q17: 如何在 PowerShell 中一键开关系统代理?#

可在 PowerShell 配置文件($PROFILE)中加入以下简易控制脚本:

Terminal window
function Enable-SysProxy {
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' -Name ProxyEnable -Value 1
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' -Name ProxyServer -Value "127.0.0.1:7890"
Write-Host "系统代理已开启" -ForegroundColor Green
}
function Disable-SysProxy {
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' -Name ProxyEnable -Value 0
Write-Host "系统代理已注销" -ForegroundColor Yellow
}

Q18: 为什么在系统代理模式下,Steam 客户端的商店能打开,但游戏下载速度极其缓慢?#

Steam 客户端在下载游戏大包时,会向附近的 CDN 节点发起成百上千个并发 TCP 连接。如果在规则模式下误将 Steam CDN 规则归类为了代理出局,节点带宽会被瞬间挤爆。解决方案是在 Merge 配置中将 geosite:steam@cn 设置为 DIRECT 直连。

Q19: macOS 系统休眠唤醒后,系统偏好设置里的 HTTP 代理虽然勾选着,但无法上网怎么处理?#

这是 macOS 网络服务句柄在恢复时丢失了 Socket 关联。在 Clash Verge 界面中依次点击“关闭系统代理”再“重新开启系统代理”,或者在终端中运行 sudo killall -HUP mDNSResponder 清理网络服务缓存。

Q20: 为什么使用系统代理时,部分 HTTPS 网站提示 NET::ERR_CERT_COMMON_NAME_INVALID#

这通常是因为目标网站启用了严格的 HSTS (HTTP Strict Transport Security) 策略,而你启用了某些包含了篡改证书的规则脚本。关闭对应的规则扩展或清理浏览器 HSTS 缓存即可解决。

Q21: 在 Linux 环境下,如何为 systemd 服务配置 Clash Verge 的代理?#

Systemd 系统服务不读取用户的桌面系统代理。如果需要为某个 systemd 服务(如 Docker)配置代理,必须在其服务配置文件中添加环境变量:

[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"

Q22: 为什么开启全局模式后,打开百度搜索时频现验证码要求?#

因为全局模式下,你所有的百度搜索请求都从同一个海外代理节点 IP 发出。百度安全防护系统检测到该 IP 存在成千上万来自全球用户的频繁搜索请求,会判定该 IP 为异常自动化脚本,从而强制弹出 CAPTCHA 人机验证。切回 规则模式 即可恢复正常。

Q23: 升级到 2026 最新版 Clash Verge Rev 后,之前的 bypass 参数不生效了怎么办?#

最新版 Mihomo 内核强化了对 Bypass 语法的校验规范。请检查 Merge 配置中的 bypass 列表格式,确保使用了标准的 JSON/YAML 字符串数组(Array)语法,而不是单行以分号分隔的旧版格式。

Q24: 系统代理模式支持代理 IPv6 流量吗?#

支持,但前提是你的代理节点和机场服务端开启了 IPv6 支持。可以在 Clash Verge 设置的 Mihomo 字段中,将 ipv6: true 开关切换为开启状态。

Q25: 如何备份我当前调试好的系统代理与 Bypass 设置?#

进入 Clash Verge Rev 设置 -> 备份与恢复 (Backup & Restore),点击导出配置。导出的 .zip 文件中包含了所有的系统代理规则、策略组配置与 Merge 覆写脚本。

Q26: 开启系统代理后,浏览器提示“由贵组织管理”(Managed by your organization) 是否安全?#

在开启某些高级系统代理策略时,Chrome / Edge 浏览器可能会在顶部菜单显示“由贵组织管理”的提示。这是因为客户端修改了 Windows 组策略(HKLM\SOFTWARE\Policies\Google\Chrome\ProxyMode)以强制锁定代理设置。只要是从官方 Releases 仓库下载的客户端,此提示属于正常系统策略介入,不会对个人隐私产生危害。

Q27: 如何设置系统代理的自动定时切换或基于 Wi-Fi SSIDs 的自动化控制?#

对于移动办公笔记本电脑,用户希望在公司连 Wi-Fi 时自动关闭系统代理,在家里或咖啡厅时自动开启系统代理。可以通过编写 PowerShell 脚本监听网络 SSID 变动事件:

Terminal window
$ssid = (netsh wlan show interfaces | Select-String "SSID\s+:" | Select-Object -First 1).ToString().Split(":")[1].Trim()
if ($ssid -eq "Company_Office_WiFi") {
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' -Name ProxyEnable -Value 0
} else {
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' -Name ProxyEnable -Value 1
}

Q28: 系统代理模式下,浏览器地址栏输入 chrome://net-internals/#proxy 能看到什么调试信息?#

在 Chrome / Edge 地址栏输入 chrome://net-internals/#proxy,可以实时监控当前浏览器从操作系统读取到的全局代理配置、PAC 路径、生效的 Bypass 规则列表以及代理服务器连通健康度。这对于诊断系统代理是否成功注入浏览器具有极强的排查价值。

Q29: 如何通过 Mihomo 内核的 RESTful API 调试接口实时抓取系统代理报文日志?#

Mihomo 内核在本地 9090 端口暴露了 WebSocket 实时调试接口。你可以通过终端运行 curl -N http://127.0.0.1:9090/logs?level=debug 实时监听所有从 7890 系统代理端口传入的数据包匹配路径,准确判定某个特定网站是被直连放行还是被代理指派。

Q30: 在本地开发环境(如 Vite / Webpack / Next.js)中,如何设置 Dev Server 避开 Clash Verge 系统代理?#

本地前端开发服务启动在 http://localhost:3000http://127.0.0.1:5173。确保系统的 Bypass 列表中包含 localhost127.0.0.1。同时在项目 vite.config.jsserver.proxy 配置中,将 changeOrigin 设为 true 并保持本地内网转发。

Q31: 如何配置 Clash Verge Rev 部署远程 PAC (Proxy Auto-Config) 文件?#

如果需要向企业旧版浏览器(如 IE 11 或老旧嵌客户端)提供 PAC 脚本,可在 Clash Verge 设置中启动内置的 PAC HTTP Server:

  1. 在设置中开启 PAC 服务 并设置监听端口(如 7892)。
  2. PAC 文件生成的 URL 路径为 http://127.0.0.1:7892/pac
  3. 在浏览器的 PAC 自动配置脚本地址中填入上述 URL 即可完成自动派发。

Q32: 开启系统代理进行大文件下载(如 Steam/BT 下载)时,为什么 verge-mihomo.exe 进程 CPU 飙升?#

当使用系统代理下载多线程大文件时,浏览器发起了数十个并发 TCP Socket 连接,每个 Socket 数据包都需要在 Go 内核中进行规则匹配与流解密。 解决办法:在 Clash Verge 规则中为下载网站域名添加 DIRECT 规则,或者在下载器中直接设置禁用代理,避免无谓的解密计算开销。

Q33: 如何为 Windows WSL 2 (Linux 子系统) 在不开启 TUN 模式下配置代理借用宿主机系统代理?#

WSL 2 在默认 NAT 模式下拥有独立的虚拟子网 IP 地址。要让 WSL 2 终端借用 Windows 宿主机的 Clash Verge 系统代理:

  1. 在 Clash Verge 设置中勾选 允许局域网连接 (Allow LAN)
  2. 在 WSL 2 内的 ~/.bashrc 中写入解析宿主机 IP 并导出代理环境变量的脚本:
Terminal window
export host_ip=$(ip route | grep default | awk '{print 3 }')
export http_proxy="http://${host_ip}:7890"
export https_proxy="http://${host_ip}:7890"
  1. 重新加载终端 source ~/.bashrc 即可在 WSL 2 内部流畅运行 apt updategit clone

Q34: 为什么某些国内证券交易软件或银行网银插件在开启系统代理后会强制自动注销登出?#

许多国内金融与证券交易客户端(如同花顺、通达信、招商银行网银)集成了严苛的网络安全监控机制。当它们检测到操作系统的 WinINet 注册表被开启了 ProxyEnable=1 且指向本地 127.0.0.1:7890 端口时,防中间人攻击(Anti-MITM)模块会误认为当前电脑遭受了网络监听拦截,从而主动触发强制安全登出保护。 解决办法:在 Merge 覆写中的 system-proxy.bypass 中将金融软件的认证服务器域名或 IP 段显式加入豁免列表,或者在交易时临时手动关闭系统代理开关。

Q35: 如何为 NPM / YARN 等前端包管理器设置系统代理与镜像源自动化直连?#

在进行前端项目开发时,运行 npm install 频繁遇到网络超时。即使开启了系统代理,Node.js 环境有时也不会自动读取 WinINet 注册表。 解决方案:

  • 临时命令行注入:运行 npm config set proxy http://127.0.0.1:7890npm config set https-proxy http://127.0.0.1:7890
  • 推荐直连方案:直接使用中国国内镜像源 npm config set registry https://registry.npmmirror.com,并在 Clash Verge 的 Bypass 列表中加入 *.npmmirror.com,实现高速下载而不占用代理流量。

Q36: Clash Verge Rev 系统代理与 V2RayN / Clash Nyanpasu 系统代理注入机制有何区别?#

在底层注入机制上,三者均通过改写 Windows WinINet 注册表来实现。但 Clash Verge Rev 借助于 Rust 编写的后端的强类型守护线程,会在应用生命周期内持续监控 ProxyEnable 注册表键值的变动。当发现被 360 卫士或第三方便捷工具误抹除时,守护线程能秒级自动纠正并重新写入注册表;而旧版客户端通常仅在点击开启按钮的瞬间进行一次写入,容易中途失效。

Q37: 如何为 Git 命令行绑定单独的代理端口而不依赖全局系统代理开关?#

如果你不想开启全局系统代理,但又希望在控制台中流畅拉取 GitHub 仓库代码,可为 Git 配置专用的 Socks5/HTTP 代理:

Terminal window
# 全局设置 Git 走 Clash Verge 7890 混合端口
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890
# 若需要取消 Git 代理设置
git config --global --unset http.proxy
git config --global --unset https.proxy

Q38: 开启系统代理后,为什么 Microsoft Teams / Outlook 桌面版提示账户认证错误?#

这是由于 Teams 和 Outlook 在登录现代身份验证(Modern Authentication)时,向 login.microsoftonline.com 发起了带 Token 的 TLS 连接。如果策略组误将其分配给了不稳定的代理节点,微软身份验证服务会判定账户遭遇跨国异地登录风险而阻断登录。 解决办法:在策略组中将 Microsoft 分流规则的代理策略指定为 DIRECT 直连或稳定性更高的专线节点。


十一、 总结与最佳使用习惯路线图#

掌握 Clash Verge Rev 系统代理的设置与排查,能够帮助你建立起稳定、高效且无故障的网络访问环境。请牢记以下最佳使用习惯:

  1. 模式首选:日常使用坚守 规则模式 (Rule),避免无脑开启全局模式消耗流量。
  2. 场景区分:仅看网页选 系统代理;涉及命令行、游戏、UWP 或 Docker 时无缝切为 TUN 模式
  3. 退场规范:养成在退出客户端前,确认关闭系统代理开关的良好习惯,彻底规避开机断网。
  4. 故障排查:遇网页打不开时,优先按照“注册表状态 -> 7890 端口监听 -> Bypass 豁免”三步路线递进排查。

[相关文章:Clash Verge Rev下载安装教程:Windows/Mac/Linux官网下载与配置] [相关文章:Clash Verge Rev TUN模式配置与多网卡路由冲突终极指南] [相关文章:Clash Verge Rev 节点全部超时:Ping超时与死节点排查]

Clash Verge Rev系统代理设置:开关指南与模式区分
https://jichangfan.com/posts/clash-verge-rev-xitong-daili/
作者
机场翻
发布于
2025-03-26
许可协议
CC BY-NC-SA 4.0