某个网站被封锁了,VPN 连接期间能正常打开,VPN 断开之后仍然能打开。这只是关于封锁位于何处的一小片证据,并不能证明隧道一直在生效。如果封锁针对的是目标地址,缓存下来的域名就不会有帮助,连接仍然会失败。页面能够加载,反而指向了域名解析这一层。正确读懂这条线索,可以让你少走一大段排查防火墙规则的弯路。

封锁可能落在两个位置,而从浏览器看,两者的表现完全一样。

在浏览器里看起来一样的两种封锁

域名封锁发生在解析阶段。解析器返回错误的地址、空答案或强制门户页面,浏览器于是报告无法访问该站点。

地址封锁发生得更晚。域名解析是正确的,但发往真实地址的数据包被丢弃、重定向或重置。此时更换解析器毫无作用,因为故障是在域名已经被应答之后才开始的。

只有前一种能被缓存承载,而这正是你的观察有价值的原因。

为什么答案比隧道活得更久

解析器缓存以域名为键,并在记录的生存期内保留。操作系统保存一份,浏览器通常还保存另一份,所以同一个域名可能以两个不同的生存期被存两次。连接或断开 VPN 都不会清空这两份缓存,它只改变之后的查询发往哪个解析器。

隧道建立期间,查询发往服务商的解析器,它返回了正确的地址,这个答案被保存在本地。断开之后,浏览器再次发起查询,本地缓存没有询问任何人就给出了应答,页面于是加载成功。

它会一直加载下去,直到条目过期或有人清空缓存,然后旧的行为就会回来。

一个把两者区分开的三步测试

请按顺序做,因为第一步是唯一能证明缓存一直在承载页面的步骤。

清空解析器缓存和浏览器缓存,然后重新加载。如果站点再次失败,缓存就是它此前能工作的原因。接着分别通过 VPN 之前所用的解析器和另一个不同的解析器查询同一个域名,并比较两个答案:结果不一致,就说明封锁在命名这一层。如果你知道地址,试着不用域名直接访问它,因为能成功就说明地址本身没有被过滤。

每种结果对你下一步意味着什么

对于域名封锁,直接的改法是换一个解析器,而加密 DNS 会改变谁能看到并篡改这些查询。VPN 只是顺带做了这件事。

对于地址层面的封锁,更换解析器没有意义,缓存理论就是错的。

在动手之前,有两条边界值得说明。在某个网络上能否更换解析器,属于策略问题而不是技术问题。而且并非所有网络都通过 DNS 封锁,所以一个结果描述的是你测试的那个网络,而不是封锁本身。记下你用的是哪个解析器,因为正是这个细节让下一个人可以复现这次测试。

相关文章