按顺序过一遍问题:接入网能观察到什么,没有它时什么会离开隧道,域名查询暴露了什么,以及对等方和 tracker 无论如何会知道什么。每个答案彼此独立,而 VPN 只能完整解决第一个。第四个是多数预期悄悄落空的地方,因为没有任何隧道能去掉账户名。

先决定哪个观察者让你担心,因为答案会随观察者改变。

一条连接取代许多条

当客户端确实位于隧道内时,接入网只看到一条通向单个 VPN 地址的持续加密连接。流量、时序以及正在使用 VPN 这一事实仍然可见;tracker 主机名、对等方地址和文件名则不可见。这是真实的改善,而且比宣传所称的更窄。隧道运营方坐在中间,看到的比接入网更多。

“无日志”声明描述的是保留政策,而不是技术可见性。这是两种不同的主张,只有第一种是服务商可以承诺的。

泄漏来自绑定,而不是隧道

BitTorrent 会向对等方、tracker、DHT 节点和本地发现发起大量短命的 TCP 与 UDP 连接。把客户端绑定到物理网卡,或在隧道断开后重启客户端,由此产生的流量正是隧道本来要隐藏的东西。防火墙规则比看上去更弱:只匹配默认路由、只匹配 IPv4 或只匹配新连接的规则,仍会留下通路。把客户端绑定到隧道接口并验证这一绑定,才是更强的做法。

验证方法是故意停掉隧道,观察传输是否停止。如果继续,说明客户端从未在隧道内。在重启客户端之后、笔记本唤醒之后各重复一次,因为绑定通常在这些时刻丢失。

DNS 点名网站,却不碰传输

如果域名查询仍然发往本地解析器,那么传输虽已加密,查询本身仍会宣告所访问的站点。把解析移入隧道,或对其加密,可以补上这个缺口。两者对数据包走在隧道之外的客户端都毫无作用。检查用的是哪个解析器、查询从哪个接口发出;这两项检查回答的是不同问题。

经隧道解析的名字与遵守绑定的传输是两种不同的属性,任一都可以单独失效。

群与 tracker 看到的东西不同

地址交换是协议的一部分,所以对等方会记录看到的内容。从出口连出去,给它们的是出口;直连给出的是家庭地址。DHT 与对等交换会把这一观察进一步扩散,之后一次没有隧道的会话还能把同一客户端端口和版本关联起来。tracker 可能知道得更多:通告 URL 里的 passkey 会识别账户,无论数据包从哪个出口发出。

加密覆盖的又是另一条轴。HTTPS 从出口起保护请求;明文 HTTP 把请求行暴露给路径上的每一张网,所以一种协议可以被塑造,另一种不行。

用证据回答这四个问题,而不是用一个图标。图标只说明隧道存在。

相关文章