我正在尝试 Virgin Media 的 MAC 过滤,并将其设置为不允许我的笔记本电脑在下午 5:00 使用互联网作为测试。
我当时正在使用带有 Warp 的 cloudflare 的 VPN 1.1.1.1,一旦它到达下午 5 点,它就让我可以继续使用互联网。如果我关闭此 VPN,我将无法再连接到任何在线内容,并且直到 5 点之后才允许我重新打开 VPN。如果我尝试使用 1.1.1.1 DNS 模式,它一击中就关闭了5:00 PM。
是否有一个原因?
我正在尝试 Virgin Media 的 MAC 过滤,并将其设置为不允许我的笔记本电脑在下午 5:00 使用互联网作为测试。
我当时正在使用带有 Warp 的 cloudflare 的 VPN 1.1.1.1,一旦它到达下午 5 点,它就让我可以继续使用互联网。如果我关闭此 VPN,我将无法再连接到任何在线内容,并且直到 5 点之后才允许我重新打开 VPN。如果我尝试使用 1.1.1.1 DNS 模式,它一击中就关闭了5:00 PM。
是否有一个原因?
许多家庭网关运行 Linux 并使用“iptables”防火墙。基于 MAC 的过滤很可能是作为与普通 TCP/UDP 过滤相同的“iptables”防火墙规则实现的——它们的共同点是在大多数典型设置中,它们仅应用于初始数据包每个连接。
大多数防火墙都是有状态的,并且会记住它们看到的所有单个数据包“流”(无论是 TCP 连接还是 UDP 流),这意味着它们只会根据规则检查流的初始数据包,但所有进一步的数据包都会立即被接受。除其他外,这是使 NAT 工作所必需的(路由器必须记住如何取消对另一个方向的数据包进行 NAT),但它也被常规防火墙规则使用——通常,iptables 规则集中的第一条规则是“如果数据包属于已建立的连接,则接受”。
例如,如果您的防火墙允许端口 22 上的入站 SSH 连接,那么您删除了该规则(或者实际上即使您为端口 22 添加了拒绝规则),而这样的入站 SSH 连接仍然处于活动状态,高优先级“允许已建立”规则仍将继续允许该连接,直到它被关闭。同样,出站 VPN 隧道被视为单个连续流;只要您保持与 VPN 服务器的连接,即使 VPN 端口稍后被阻止,状态防火墙也可能继续允许该连接通过。
所以我强烈怀疑你的基于 MAC 的过滤是以完全相同的方式实现的,规则具有相同的优先级。也就是说,我怀疑您的路由器仍然以“允许已建立”规则开始,该规则接受每个已经活动的连接,无论它来自何处,只有这样,您才具有实现过滤的“允许来自 <list of MACs>”规则。
(现在 iptables 中没有任何内容要求“允许建立”是第一个 - 当然可以在它之前添加“立即拒绝”规则 - 但这里的重点不是理论上可以做什么,而是关于它在实践中最有可能在您的路由器中完成的方式。
同样,当然可以从 iptables 的流缓存中“踢出”连接并强制它们根据规则重新评估,但这通常不会这样做,因为很难以自动方式猜测应该删除哪些流 -并且仅将其全部清除会导致每个人通过路由器的连接出现不必要的中断,特别是因为同一个缓存还跟踪每个连接的 NAT 映射。)
说明必须连接到您用于过滤的 MAC 地址,因为您可能使用了计算机网络适配器的 MAC 地址。
但是,VPN 通过创建一个 与您的适配器具有不同 MAC 地址的虚拟网络适配器来工作。VPN 发起的连接仍然通过您主机的适配器进行,但 MAC 地址被伪装成来自另一台计算机。
这就是过滤器没有检测到来自虚拟适配器的连接与过滤器相关的原因。
当您关闭 VPN 时,任何打开它的尝试都需要通过主机适配器与 Cloudflare 服务器建立初始连接,而过滤器不允许这样做。因此,只要过滤器处于活动状态,您就无法再次连接到 VPN。