Mac 上系统代理和 TUN 有什么区别
作者 Mac 代理客户端手册编辑部更新于
系统代理依赖程序遵守系统设置的代理约定;Clash Verge Rev 文档称其不能代理 UDP。TUN 创建虚拟网卡并通过路由重定向网络请求,文档称其可处理 TCP 与 UDP。
在 Mac 上,系统代理开关按系统约定设置代理端口信息,未遵守该约定的程序不一定经过代理;Clash Verge Rev 文档还写系统代理不能代理 UDP。TUN 则创建虚拟网卡并调整路由,接管 TCP 与 UDP 网络请求。
系统代理按约定工作
Clash Verge Rev 名词说明把系统代理描述为在系统约定的位置设置监听端口信息,并指出这种约定不是强制的,并非所有程序都遵守,且不能代理 UDP 流量(如游戏数据包)。它的快速入门把系统代理概括为能处理大部分通过浏览器的需求。
TUN 重定向网络流量
同一文档把 TUN 描述为创建虚拟网卡,再通过操作系统路由将请求重定向到该虚拟网卡;原文称可拦截和处理 TCP/UDP,且请求程序无需额外配置。快速入门的说法是,TUN 用来接管不支持系统代理的程序,例如游戏和命令行。因此,Mac 开启 TUN 后整台机器的网络路径会改走这张虚拟网卡,和仅设置系统代理端口不是同一类操作。
Clash Verge Rev 的 macOS FAQ 还写开启 TUN 会更改系统 DNS;FAQ 写的是 223.6.6.6,v2.5.8 发布说明提到的是 114.114.114.114,两处地址不一致。
helper 和服务模式
| 客户端 | 官方说法 |
|---|---|
| Clash Verge Rev | 服务模式用于以非管理员身份启动 TUN;TUN 默认堆栈是 GVisor;需要自行在系统防火墙放行内核 verge-mihomo 和 verge-mihomo-alpha;退出后服务进程 clash-verge-service 会继续在后台运行(通用说明,未单独写 macOS) |
| Clash Party | README 称 TUN 开箱即用、无需服务模式;macOS 上装有 helper 服务 party.mihomo.helper,故障时按官方步骤卸载 |
| FlClash | README 列出系统代理与 TUN 模式,macOS 授权细节官方没有说明 |
| SFM | 官方把 TUN 透明代理称为平台特定功能实现 |
各项目说明适用范围不同,不能互相代替。系统代理开关无效时,Clash Verge Rev 的 FAQ 将其与修改系统范围偏好设置需要管理员密码联系起来。更多背景见Clash Verge Rev 页面和Clash Party 页面。
常见问题
为什么打开虚拟网卡后整台 Mac 网络都变了?
Clash Verge Rev 文档说明 TUN 会创建虚拟网卡,并通过操作系统路由把网络请求重定向过去,处理范围包括 TCP 与 UDP;它的 macOS FAQ 还写开启 TUN 时会修改系统 DNS。
系统代理和 TUN 的主要区别是什么?
系统代理依赖程序遵循系统代理设置,文档称其不能处理 UDP;TUN 通过虚拟网卡和路由重定向流量,文档称可处理 TCP 与 UDP。
为什么有的客户端会安装 helper?
Clash Verge Rev 文档说明服务模式可用于以非管理员身份启动 TUN;Clash Party 的 macOS 故障文档列有 helper 服务。其他客户端是否需要 helper,官方没有统一说明。