Article
流量都去哪里了?TUN 模式下的代理谜云
自从进入 Vibe coding,代理也进入了 TUN 时代,代理流量也开始捉襟见肘了。
切换到 TUN 虚拟网卡之后,代理上网流量就像脱缰的野马,一发不可收拾。这月才过半,套餐的100G流量就见底了。
也是由于 AI 编程才接触的 TUN 虚拟网卡模式,对它不甚了解,简单的认为:所有流量都会经过代理一遍。(这个理解是不准确的)
去年还是压着点用:没有 AI 写代码就把 TUN 关掉只用系统代理。今年完全的切入 plan 编程,计划要 AI,构建代码编写要 AI。时间的不确定,来回的切也实在麻烦,就撒手用了这么十几天。
为了搞明白 TUN,还有以后踏实的 AI 编程,必须打破砂锅问到底:流量到底都去哪里了?
AI 说:系统代理依赖于软件主动配合,它们自己去读系统的代理设置,但很多软件(如终端命令行、部分游戏、一些桌面应用)直连"绕过系统代理"。而 TUN 虚拟网卡工作在更深层的网络层(Layer 3),通过虚拟网卡+路由表的方式,直接接管整个系统的流量。不管上层应用愿不愿意,只要它想联网,就得乖乖经过 TUN 虚拟网卡。


上面对 TUN 虚拟网口的原理有了大概的了解,“TUN接管所有流量” 和 “所有流量都走代理” 其实是两回事。既然去到了网络层,那科学上网还能做到吗?

判断是否消耗代理流量的,其实是 Clash 的规则决定的。所以,并不是所有的流量都会消耗代理套餐。明确命中的国内IP,确实是直连的,这一点后面通过流量监控会验证到。
既然科学上网有用,那为什么 TUN 虚拟网卡模式代理流量就飙升呢?



真正的问题很可能是 DNS 解析导致的。很多原本可以直接访问的流量,在 TUN 模式下,会因为 DNS 解析变化最终拿到海外的IP地址,然后就走了代理。
同一个域名,不同的DNS,可能会解析到完全不同的 IP。
到底哪些访问吃掉了我们的流量呢?

代理软件 Clash Verge 的连接 视图,虽然能看实时流量,有下载、上传的流量数据。但是,它只能看现在的,每条连接刷的一下就过去了。不能查看历史数据,没有周期汇总统计等。
既然,Clash Verge 能看实时的数据了,那把实时数据采集保存 下来,然后就可以统计监控了啊!最终,搞了一套:Clash Verge + Exporter + Prometheus + Grafana的代理流量监控系统。
先实现一个 clash_exporter 指标服务,负责采集 Clash Verge 的实时连接数据。
在 Github 上面有 clash_exporter 的项目,Clash Verge 软件也是开源的,用 AI 辅助把它们结合起来,就可以获取到代理流量实时数据了!



然后,运行Prometheus,拉取存储流量指标。

最后,运行Grafana,做代理流量监控大屏。

从监控总流量图中,可以看到 Docker镜像下载 直接用了代理。
时间的魅力在此刻展现无遗。
跑起来后,很多事情就一目了然了。

比如:明确的国内 IP,确实不占代理流量,直接访问。
真正代理流量的增量:1、原来需要加速的镜像源,现在直接从国外去下载了。2、本来国内就能访问,通过TUN的DNS解析成国外IP了。

看下连接数:TUN 模式下是30-80;系统代理只有10-30。
如果,你也好奇自己的 Clash Verge 流量到底消耗在哪里,可以下载源码跑起来看看。项目地址:
https://github.com/winse/clash-exporter
操作也简单,Grafana 和 Prometheus 用 docker compose 直接启动运行。
Related
Related posts
-
被 Reconnecting/Timeout 折磨之后,我把 Clash 调成了自动挡
2026-05-28
-
CLIProxyAPI 订阅转 API:把 Antigravity、CodeX 额度迁移到 Cursor
2026-04-28
-
本地端口转发:访问远程 Linux 本地服务
2026-02-01
-
Windows搭建Flutter桌面开发环境一步到位
2025-06-02