一次 WhatsApp 通话会把地址信息暴露给不止一方,而这些方面学到的并不是同一件事。与你通话的人可能得知一些关于你网络路径的信息,服务端则知道是哪条连接抵达了它,而 你的接入服务商看到你产生的流量。VPN 和应用内中继各自改变这幅图景的一部分。所以 VPN 能否在通话中隐藏我的 IP 并没有唯一答案。

三类观察者,三个不同的问题

先点名你想躲开的那位观察者,因为这几套机制不能互相替代。躲开对方是寻址问题。躲开服务端是账号与连接的问题,而且回答起来比听起来难得多。

ObserverWhat it can learnWhat changes it
The other participantWhether the media path appears to come from your address or from a relayRelay settings in the app, or a network path that does not expose your address
The serviceYour account, the connection your client made, and the call's participantsVery little from an address change alone; the account is the identifier
Your access networkThat encrypted traffic to certain endpoints exists, and how muchRouting through a tunnel moves the visible endpoint

每一行都可以单独改善。改善一行时,其他行保持原样,所以诚实的答案里通常会有部分这个词。

中继真正改变了什么

WhatsApp 记录了一项名为在通话中保护 IP 地址的设置,位于应用的进阶隐私选项里。它把通话媒体经由 WhatsApp 服务器转发,而不是让双方直接连接。同一份说明指出,经中继的通话仍然保持端到端加密。它还提醒通话质量可能会发生变化。

中继属于服务功能而非网络配置,因此只适用于应用决定中继的那些通话,对设备上的其他任何流量都不起作用。WhatsApp 关于这项功能的帮助页面是判断哪些平台提供该功能、开关位于何处的现行依据。

中继也没有把通话对服务端隐藏起来,因为服务端本身就是中继。它改变的是对方能观察到的地址信息。它还可能增加延迟,这正是该设置付出的代价。

VPN 会怎样改变通话路径

VPN 会改变它承载的一切流量看起来来自何处。它是否承载某次通话,取决于客户端的路由策略。全隧道会接管全部流量,而分离隧道可能只接管部分前缀。同时拥有 Wi-Fi 与移动数据的手机,可以在同一时刻为不同流量使用不同路径。

这意味着你在浏览器里核验过的地址,并不能证明通话的情形。应用可能持有一条早于隧道的长连接,也可能使用隧道并未覆盖的地址族。要针对真实目的地检查路由决策,而不是针对你碰巧测试过的网站。

内容端到端加密是与这一切分开的一道边界。它不会因为路径改变而崩塌,但它也不覆盖元数据。

加密与地址隐私是两个不同的承诺

让通话内容保持加密,意味着中继无法窃听对话。这并不等于中继什么都学不到:它仍然能看到哪些账号在连接、何时连接、连接多久,因为这正是中继在做的事。

反过来,对对方隐藏你的地址,并不会让你的账号对验证它的服务端变成匿名。这是两个不同的主张。把两者合并起来的隐私评估,会造出虚假的覆盖感。把要求写成关于某位具体观察者的一句话,然后检查所选机制是否针对那位观察者,而不是旁边那位。

核验你真正关心的那个主张

如果要求针对你接入的网络,检查就是可以在本地回答的路由问题。如果针对对方,检查就是应用自身的设置。再多的隧道配置也替代不了那项设置。

ip rule show | head -n 10
ip route get 198.51.100.7
ss -tun state established '( dport = :443 )'
tcpdump -ni wg0 -c 20 'udp or tcp port 443'

路由查询会告诉你去往某目的地会使用哪个接口。套接字列表会告诉你是否已经存在长连接。抓包会告诉你流量是否真的经过隧道接口。把文档里的地址换成你从应用自身连接中解析出的端点,然后去读结果,而不是假定隧道接管了一切。

记下你为哪位观察者依赖了哪套机制,连同日期与应用版本。中继设置和客户端路由行为都会随时间变化,而点名观察者的记录,才是这件事里唯一长期有用的版本。

相关文章