为什么 Cloudflare 的 1.1.1.1 允许您绕过 MAC 填充?

为什么 Cloudflare 的 1.1.1.1 允许您绕过 MAC 填充?

我正在尝试 Virgin Media 的 MAC 过滤,并将其设置为不允许我的笔记本电脑在下午 5:00 使用互联网作为测试。

当时我使用 Cloudflare 的 VPN 1.1.1.1 和 Warp,当时间到达下午 5 点时,它就允许我继续使用互联网。如果我关闭此 VPN,我将无法再连接到任何在线服务,并且直到下午 5 点之后我才可以重新打开 VPN。如果我尝试使用 1.1.1.1 DNS 模式,它会在下午 5:00 时立即关闭。

是否有一个原因?

答案1

许多家庭网关运行 Linux 并使用“iptables”防火墙。基于 MAC 的过滤很可能是作为与普通 TCP/UDP 过滤相同的“iptables”防火墙规则实现的——它们的共同点是,在大多数典型设置中,它们仅应用于最初的每个连接的数据包。

大多数防火墙有状态的并记住它们看到的所有单个数据包“流”(无论是 TCP 连接还是 UDP 流),这意味着它们只会根据规则检查流的初始数据包,但所有后续数据包都会被立即接受。除其他事项外,这对于使 NAT 正常工作是必要的(路由器必须记住如何取消 NAT 数据包的反向传输),但它也被常规防火墙规则使用——通常,第一的iptables 规则集中的规则是“如果数据包属于已建立的连接,则接受”。

例如,如果你的防火墙允许端口 22 上的入站 SSH 连接,那么你删除了该规则(或者即使你添加了否定端口 22 的规则),而一个这样的入站 SSH 连接仍然活跃,高优先级的“允许建立”规则仍将允许该连接,直到关闭为止。同样,出站 VPN 隧道被视为单一连续流;只要您保持与 VPN 服务器的连接,即使 VPN 端口稍后被阻止,状态防火墙仍可能继续允许该连接通过。

因此,我强烈怀疑您的基于 MAC 的过滤是以完全相同的方式实现的,规则具有相同的优先级。也就是说,我怀疑您的路由器仍然以“允许已建立”规则开始,该规则接受所有已经活跃连接,无论它来自哪里,只有这样你才有“允许来自<MAC 列表>”规则来实现过滤。

(现在 iptables 中没有任何内容要求“允许建立”是第一个 - 当然可以在它之前添加“立即拒绝”规则 - 但这里的重点不是理论上可以做什么,而是在实践中它最有可能在路由器上完成。

类似地,当然可以将连接从 iptables 的流缓存中“踢出”,并强制它们根据规则重新评估,但这通常不会做,因为很难以自动方式猜测哪些流应该被移除——而只是清除所有的东西会造成不必要的中断每个人的通过路由器的连接,特别是因为相同的缓存还会跟踪每个连接的 NAT 映射。)

答案2

解释必须与您用于过滤的MAC地址有关,因为您可能使用了计算机网络适配器的MAC地址。

然而,VPN 的工作原理是创建一个虚拟网络适配器,该适配器具有 与适配器不同的 MAC 地址。VPN 发起的连接仍然通过主机的适配器进行,但 MAC 地址被欺骗,看起来像是来自另一台计算机。

这就是过滤器没有检测到来自虚拟适配器的连接与过滤器相关的原因。

当您关闭 VPN 时,任何尝试打开它都需要通过主机适配器与 Cloudflare 服务器建立初始连接,而过滤器不允许这样做。因此,只要过滤器处于活动状态,您就无法再次连接到 VPN。

相关内容