网络能否在不破解加密的情况下封锁你的 VPN?
加密保护的是内容,而非送达。比较黑名单、白名单与全面切断,再追问单次观察究竟能支撑什么结论。
任何运营商都不需要会话密钥就能让一条隧道停下:丢弃路径上的数据包,隧道就会失败,而密码学依然与设计承诺的一样坚固。加密保护的是对话所承载的内容,而不是任何网络是否愿意承载它。把这性质分开,关于「无法封锁」的争论就变成了一个问题:哪条策略在生效,它又延伸到多远。下面的比较把可用性与机密性分开对待,因为多数斩钉截铁的 VPN 封锁论断都悄悄把两者混为一谈。
可达性是路径做出的决定
每一种传输都依赖一条转发数据包的路径,而这里的每个策略问题最终都归结为那个转发决定。丢弃数据包的规则在不触及机密性的情况下改变可用性,一条隧道也正因此可以加密得无可挑剔,却在同一刻完全不可用。这样的结果不需要破解任何密码,也不需要恢复任何密钥,只需要对路径的控制权。
混淆通常始于两个性质共用同一个词。强加密回答的是谁能读到某条流量,却对中间设备是否放行只字不提。因此,「VPN 无法被封锁」这一断言底下还需要第二个断言,即路径上没有人愿意丢弃这些数据包。
三种执行方式及各自的代价
三种方式覆盖了大多数现实策略,它们的差别在于各自需要知道什么、运行成本多高,以及还有谁会受到牵连。三者都能在不进行任何解密的情况下拒绝一条隧道。差别之所以重要,是因为「封锁」这个同一个词被用在三种不同的做法上。
| Style | Default | What it must know | Who else is affected |
|---|---|---|---|
| Blocklist | Allow, minus listed destinations | Addresses and ports of known endpoints | Unrelated tenants on a listed address |
| Allowlist | Deny, plus approved destinations | A maintained definition of permitted traffic | Anything outside the approved set |
| Shutdown | Deny broadly for a period | Nothing about the protocol | Ordinary services along the same path |
那张表是一张成本图,而不是一份排名。黑名单起步便宜、维持准确却昂贵;白名单用发现换来了对允许集合的维护;全面切断则完全不需要分类。把它们区分开的不是技术精巧,而是各自把持续投入放在哪里。纸面上看似简单的策略,通常在某处藏着一条维护成本。
黑名单的精度受限于地址在多大程度上代表一项服务
黑名单拒绝已被识别出的目的地,其余部分则通常保持可用。执行它需要地址和端口,而不是明文,这正是它起初便宜的原因。代价随后到来,因为一个曾经只代表某家服务商的地址段,后来可能容纳十几家毫不相关的租户。每次地址变动都迫使修改名单,每一条过期条目都会连带伤及无辜流量。
这种模型的精度受限于目的地能在多大程度上代表一项服务,而一个繁忙的共享端点是很差的标识。这是结构性限制,而非实现缺陷,所以更好的工具也无法消除它。这也解释了黑名单为何容易越滚越长:每个新端点看起来都只是一次小追加,而附带损害却随名单一起增长。
白名单把维护负担挪到别处
白名单把默认值反过来,只有事先选定的目的地或流量类型才能通过。它不必逐一列举每个被禁止的端点,这在禁止集合很大或变化很快时很有帮助。它真正需要的是对「允许什么」有一份持续维护的定义,以及与该定义相符的执行。
在这种定义里,端口号是常见的薄弱环节。允许某个端口并不等于识别出所有可能使用它的应用,因此基于端口的白名单常常放行了超出作者本意的流量。协议指纹从另一个角度带来同样的问题,因为它识别的是流量的形状而非意图。所以白名单并不自动比黑名单更精确,它只是对另一件事精确。
单次观察能证明什么、不能证明什么
任何关于封锁的论断,都应带着四个问题去读:哪些接入网络、哪些目的地、哪些协议、哪段观察期。今天在某张移动网络上看到的失败,说明不了同一端点在明天、从另一张网络出发时的情况。一条曾经奏效的隧道,同样说明不了持续可用性。
失败的形态可以在对原因作出理论解释之前先被观察到。无声的挂起、立即拒绝、以及连接后重置,分别指向不同的执行方式,而两条命令能把它们区分开:
curl -sS -m 8 https://vpn.example.com/ -o /dev/null -w "%{http_code}\n"
traceroute -n -m 8 vpn.example.com以超时告终的挂起暗示无声丢弃,快速拒绝暗示路径上有拒绝的设备,连接后重置则暗示带状态的干扰,而不是缺少路由。RFC 9505 对审查技术的调查描述了这些形态背后的控制点与干扰模式。不过,它们都没有说明该策略的适用范围有多广。持久性比可达性是更强的主张:端点、软件、策略与允许的服务都在变化,所以「无限期有效」需要的是关于执行会持续下去的假设,而不是某一刻所见地址的清单。