你打开路由器的流量页面,或者某个 VPN 服务商的控制台,那里有一个按设备统计的字节总量,旁边还有一张图。人们很容易把这张图当成浏览历史来读。它不是浏览历史,原因在于结构,而不在于法律。计数器累加的是大小,而历史记录的是目的地和内容,只有后者才能告诉你某个人去了哪里。

从你正在看的那个界面开始

在解读一个数字之前,先弄清它是怎么产生的。路由器上按设备统计的总量通常来自物理接口计数器,VPN 客户端里的总量来自它的隧道,而服务商面板来自对端记账。每一者统计的都是同一次会话的不同片段。两个面板对同一个小时给出不同数字,通常两者都是对的。

时间区间和来源同样重要。终身总量、按日汇总和实时速率是三种不同的测量,只有实时速率的分辨率足以和某一次具体操作对应起来。

在写下结论之前,先写下来源和区间。

计数器测的是层,不是页面

在 WireGuard 节点上,wg show 里的传输计数器是该节点的总量,包含加密后的载荷。OpenVPN 的状态输出按自己的层报告每个客户端的字节数。在主机上,tun 接口统计内层 IP 包,而物理网卡统计外层 UDP 包,所以两者会因封装开销以及共用链路的其他流量而不同。

重传会让总量膨胀,却没有新内容到达;而后台同步可能占据整整一个小时,与此同时用户只是在读纯文本。

所以总量大只能说明有一次数据密集的活动,不能说明更具体的事。下载文件的大小和计数器的增量有关,但很少相等。

总量能支撑什么、不能支撑什么

字节总量无法指认某个网站,因为域名和 URL 存在于计数器从不查看的 TLS 或 QUIC 会话内部。它无法把视频流和大体积备份区分开,也无法把一次页面加载和广告刷新循环区分开。它能支撑的是关于数据量和时间的说法:这台设备在这个时间窗口内传输了这么多数据。

要把它变成关于某个人的说法,还需要两样东西:身份和关联。

RFC 6973 privacy considerations 文档解释了为什么这种组合很重要,也正因如此,严谨的报告会把观察到的和推断出的分开。如果结论需要用到因为这个词,那么单靠计数器不足以作为证据。

时间和身份会改变答案

把计数器挂到某个具名用户和一个精确区间上,它就变成了另一个东西。

这时你可以把它和其他观察放在一起:一条登录记录、一次 DNS 查询、另一个系统上的会话。计数器没有揭示目的地,但它帮一个已经有假设的人确认了假设。加密保护传输中的内容和名称,它并不隐藏曾经存在过一条流量、这条流量有多大、什么时候开始。

这就是诚实的边界:模式可见,含义不可见。

先决定要保留什么,再去采集

如果需求是容量规划,粗略的按日汇总就够用,成本也低。如果需求是按用户的历史记录,就明确说出来,列出字段和保留期限,并把这个决定当作政策,而不是控制台的一个功能。因为面板支持就采集细粒度历史,正是留存悄然增长、却没有人真正决定的方式。

排查问题时,把计数器和你要验证的操作对照。总量稳步上升只能证明流量在走,不能证明应用可用。

在一次明显可用的会话中计数器没有变化,通常说明你读的是缓存值,或者看错了接口。把保留的字段和窗口说清楚,下一次审计才有具体的东西可核对。

相关文章