对于许多刚刚接触 Clash Verge Rev、Surge 或 Mihomo 的用户而言,客户端主界面上醒目的“系统代理(System Proxy)”与“TUN 模式(TUN Mode)”两个核心开关常常让人一头雾水。最典型的场景莫过于:明明已经打开了代理软件,甚至能在 Chrome 浏览器里飞速流畅播放 4K YouTube 视频,但只要打开 Windows 终端运行 git clone 或 curl,却依然无情报错“Connection refused”;启动 Steam、Epic 或联机游戏,依然提示网络不可达。这背后的核心根源在于网络数据包在操作系统 OSI 模型中不同层级的接管权限差异。

一、概念溯源:系统代理(System Proxy)到底做了什么?

当你在客户端中开启“系统代理”开关时,客户端实际上只做了一件极其微小的事情:向操作系统的网络设置注册表注入了一组环境变量。

例如在 Windows 系统中,它将系统的 HTTP/HTTPS/SOCKS 代理地址修改为了 127.0.0.1:7890。

系统代理的致命局限性:

  • 仅对“主动遵循系统设置”的应用生效:只有像 Edge、Chrome、Firefox 等桌面图形浏览器,或者少数显式声明遵循系统代理的应用,在发起网络请求前才会主动读取这组注册表,并将数据包封装为 HTTP Connect 代理报文发送给 7890 端口;
  • 对终端命令行完全无效:PowerShell、CMD、Linux Bash 终端中的绝大多数开发工具(如 git、curl、wget、docker、npm、pip)在设计之初为了保证纯粹性,默认完全无视操作系统的图形化代理设置,依然直接通过默认物理网卡向外发起裸连接;
  • 对游戏与私有 UDP 协议完全无效:像各类网游(Apex、绝地求生、GTA Online)以及 Steam 客户端的核心通信大多基于底层的裸 UDP 协议或私有二进制协议。系统代理根本不具备接管非 HTTP/SOCKS 流量的能力。

二、技术飞跃:TUN 虚拟网卡模式(Layer 3 接管)的本质

TUN(TUNnel)是操作系统内核级别支持的网络层(Layer 3)虚拟设备驱动。在 Windows 上通常依赖 wintun.sys,在 macOS 和 Linux 上则是内核原生的 /dev/net/tun 接口。

当你在 Clash 中开启 TUN 模式时,系统的底层网络拓扑发生了根本性重构:

  1. 创建虚拟物理网卡:系统网络适配器列表中会凭空多出一张名为“Mihomo”或“Clash”的虚拟网卡;
  2. 全局默认路由劫持(Default Route Hijacking):TUN 驱动直接修改操作系统的核心路由表(Routing Table),将系统的默认网关指向这张虚拟网卡,并将其路由跃点数(Metric)设为最高优先级(如 Metric = 1);
  3. 真·全局透明捕获:此时,操作系统内核中发出的每一个原始 IP 数据包(无论来自浏览器、终端命令行、后台系统服务,还是各类 3D 联机大型游戏),在离开内核协议栈的瞬间,全部无条件被虚拟网卡拦截并送入代理内核进行规则分流匹配。

三、全方位特性深度对比总览

对比维度传统系统代理模式 (System Proxy)TUN 虚拟网卡模式 (TUN Mode)
OSI 工作层级应用层 / 传输层 (Layer 4/7)网络层 IP 层 (Layer 3)
终端开发工具支持 (Git/Docker/Pip)默认完全不支持 (必须手动配置 export 变量)原生完美无感支持 (开箱即用)
联机游戏与全平台联机完全无法加速原生全面接管 UDP/TCP 流量
DNS 泄漏防御容易因本地 53 端口查询导致泄漏通过 Fake-IP 全面拦截劫持,彻底绝缘泄漏
系统权限要求普通用户权限即可修改必须具备管理员权限 (Administrator / Root)
系统休眠唤醒稳定性极易因未重置注册表导致浏览器断网现代化 wintun 驱动可自动无感自愈重挂载

四、日常使用与开发者的黄金配置建议

1. 普通日常影音与网页浏览用户:
如果你的主要需求只是在浏览器里查资料、看视频、追美剧,开启传统的【系统代理】已经完全足够,其优势在于轻量、对本地网络驱动无入侵,且不需要管理员权限弹窗授权。

2. 程序员、外贸商务与游戏玩家:
强烈建议直接常驻开启 TUN 模式,并在客户端设置中关闭传统的系统代理开关!这样既能保证整个操作系统的所有流量(包括开发工具链、终端命令行、各种桌面端客户端)全部享受到免配置的透明代理加速,又能彻底告别因系统代理注册表残留导致的网页断网假死现象。