我的防火墙上有一个面向本地的接口,它分配了多个 IP 地址(192.168.0.1 和 192.168.0.5)。来自这两个 IP 的数据包都会转发到 WAN 接口。但是,我想根据数据包在哪个本地 IP 上接收来应用不同的过滤规则。(想法是使用 192.168.0.5 作为限制访问无线接入点的网关,而使用 192.168.0.1 作为所有其他流量的网关)。我尝试使用接口别名来执行此操作,但这些别名不会传递到 iptables,而且似乎已被弃用。您将如何执行此操作?
(我可以在 INPUT 链中完成这种类型的过滤,只需使用目标 IP 地址,但我该如何在 FORWARD 链中做到这一点呢?)
这里的根本问题是,当您的系统转发流量(即充当网络上其他节点的路由器)时,它不知道其他节点使用哪个地址作为默认网关。无论您是否已在其他节点上设置
192.168.0.1
或192.168.0.5
作为默认网关,该过程都大致如下:这意味着当您的路由器接收到该出站数据包时,数据包中没有任何内容可以识别节点用于确定网关 MAC 地址的地址。
那么,你能做什么呢?
最简单的解决方案是确保“受限”网络上的所有节点都从不同于“非受限”网络的地址范围中分配地址。例如,如果您的网络是
192.168.0.0/24
,那么您可能从分配了非受限地址192.168.0.0/25
,从分配了受限地址192.168.0.128/25
。这将需要您的 DHCP 服务器进行一些工作——一种常见的配置是为受限网络上的已知主机创建静态条目,然后安排未知主机接收来自受限范围的地址。通过此配置,您可以在转发规则中使用连接的原始地址:
如果您有支持它的网络设备,您可以将受限网络移至单独的VLAN;这将允许您为受限主机提供完全独立的 DHCP 服务器,并允许您在过滤规则中使用源网络或源接口。