macOS上Clash Verge如何启用TUN模式实现全局代理?

macOS上Clash Verge启用TUN模式,一行命令装驱动、三分钟配全局代理,合规留痕可审计
TUN模式在macOS上的合规定位
Clash Verge的TUN模式能把TCP/UDP流量无感接管,实现真正的“系统级代理”。与旧版SOCKS5/HTTP本地端口相比,它不再依赖应用各自设置,适合需要完整流量审计的企业或科研场景。2026-04-28发布的v2.3.0-RC1把macOS驱动换成Apple Silicon原生扩展,CPU占用下降约18%,并默认关闭数据包日志,兼顾性能与隐私。
合规视角下,TUN模式把出口统一到一个虚拟网卡,所有五元组信息可被内核级日志记录,方便后续对接SIEM。若组织需留存6个月原始流量元数据,只需把log-level: debug写入配置并挂载外部syslog即可,避免“代理后源地址丢失”的常见审计盲区。
启用前的决策树:是否必须开TUN?
场景匹配
- 需要代理非浏览器进程(如Zoom、Steam、Homebrew)→ 开TUN;
- 仅浏览器翻墙且已装插件 → 用本地HTTP端口足够;
- 公司MDM禁止加载第三方内核扩展 → 放弃TUN,改用规则分流+PAC。
示例:科研单位需把Matlab许可证验证流量导向境外固定IP,此时SOCKS5端口无法被Matlab识别,TUN模式可直接劫持UDP 443,无需额外封装。
风险评估
TUN会创建utunX虚拟接口,默认接管0.0.0.0/0。若配置不当,内网段(如192.168.0.0/16)也可能被送往远端,导致打印机、NAS失联。解决方法是预先在配置里写IP-CIDR,192.168.0.0/16,DIRECT,并开启「绕过私有网络」复选框。
三分钟操作:从安装驱动到全局代理
1. 安装驱动(仅需首次)
- Apple Silicon:双击
Clash_Verge_TUN_ARM.pkg,按提示授权内核扩展; - Intel Mac:使用同目录
Clash_Verge_TUN_x64.pkg; - 安装完重启,系统设置›隐私›允许来自“Clash Verge”的软件加载。
2. 打开TUN开关
启动Clash Verge›左侧导航「设置」›「网络模式」›勾选「启用TUN」。此时会弹出授权对话框,输入管理员密码以加载utun驱动。若按钮灰色,说明内核扩展未签名或Secure Boot未关闭,可先用sudo kmutil inspect --list-only确认是否加载成功。
3. 验证流量是否进TUN
终端执行ping 1.1.1.1,再另开窗口sudo tcpdump -i utun0,若看到ICMP包即表明流量已进虚拟网卡。也可在仪表盘「节点雷达」观察实时热力图,若全部流量走代理节点,说明全局生效。
提示:macOS 15.4睡眠唤醒后utun0可能消失,可在「设置›高级」里启用「断线后自动重建TUN」,经验性观察能在10秒内恢复,避免手动重启软件。
平台差异与回退方案
Windows版使用wintun.dll,升级v2.3.0时若旧文件残留会无法启动,解决是删除安装目录下同名dll后重装;Linux版需6.7+内核且关闭Secure Boot才能用eBPF加速。macOS回退最简单:取消勾选「启用TUN」,流量立即回到本地端口模式,无需重启系统。
配置细节:让审计日志既详细又不过度
在YAML的dns:段写fake-ip-range: 198.18.0.1/16,可让所有域名先解析到假IP,减少DNS泄露;再于tun:段追加gso: true启用批量发包,经验性观察在千兆宽带下能提升约20%单线程速度。需要审计时,把log-level调到info即可记录五元组,debug级别仅在排障时临时开启,防止日志爆炸。
不适用场景与边界
- 需同时运行公司全隧道零信任客户端(如Zscaler)→双TUN冲突,建议改用PAC模式;
- 内网渗透测试靶机流量不能出网→需在规则顶部写
PROCESS-NAME,nc,DIRECT并开启「跳过本地接口」; - 合规要求留存原始PCAP→TUN仅提供元数据,若需完整载荷,仍需在utun0上另起tcpdump,并留意磁盘空间。
故障排查速查表
| 现象 | 最可能原因 | 验证命令 | 处置 |
|---|---|---|---|
| 启用TUN后无法上网 | 默认路由未指向utun0 | netstat -rn|grep utun | 检查「设置›路由表」是否勾选「添加默认路由」 |
| 节点延迟高、丢包 | gso未开或MTU过大 | ping -D -s 1400 8.8.8.8 | 在tun段写mtu: 1400并重启核心 |
| 加载驱动失败 | Secure Boot未关 | kmutil inspect|grep verge | 关机长按电源›选项›安全策略›降低安全性 |
最佳实践清单(可打印)
- 安装前先运行
csrutil status,确认SIP已关闭或驱动已签名; - 规则文件使用Git管理,每次更新订阅后diff审查,防止机场插入恶意IP;
- 生产环境只保留info级别日志,并配置logrotate按100MB切割;
- 定期用
sudo kextstat|grep -i verge确认驱动版本,避免升级系统后失效; - 关闭软件前先在「仪表盘」点击「断开TUN」,防止残留默认路由导致断网。
FAQ:TUN模式热点疑问
升级v2.3.0后睡眠唤醒无网?
macOS15.4会重排网络服务顺序,可在「系统设置›网络」把utun0下移,或开启Verge的「断线重建」开关,经验性观察10秒内恢复。
TUN与Surge能共存吗?
不能同时加载两条默认路由,需关闭其中一方的「添加默认路由」选项,或改用规则分流端口。
如何确认流量走了TUN而非本地端口?
终端执行netstat -rn查看默认网关是否指向utun0的地址,或在Verge仪表盘观察「节点雷达」实时流量曲线。
开启TUN后公司内网打印机失联?
在规则最顶部加IP-CIDR,192.168.0.0/16,DIRECT,并勾选「绕过私有网络」即可恢复。
驱动加载失败代码-603947000?
系统拒绝未签名扩展,用kmutil inspect确认签名状态,必要时关闭Secure Boot或等待官方签名更新。
结论与下一步
在macOS上启用Clash Verge的TUN模式,只需装驱动、勾开关、验流量三步,便可获得系统级透明代理与完整审计能力。若你所在环境需要留存日志、规避DNS泄露,或要代理非浏览器进程,TUN模式值得开启;反之,仅浏览器翻墙且担心内核扩展风险,用本地HTTP端口更轻量。安装后请先跑一遍「最佳实践清单」,确认驱动签名、规则私有网段、日志级别无误,再逐步上调log-level进行合规留存。未来若Apple进一步收紧内核扩展,可密切关注官方GitHub对“用户空间网络扩展”分支的探讨,并准备随时回退到规则端口模式。


