iptables 和控制子网上主机之间的流量

iptables 和控制子网上主机之间的流量

最近我在 TP-LINK 路由器上安装了 OpenWrt。现在我想控制同一子网上某些主机之间的流量。由于基于 OpenWrt 的路由器上有 iptables,我认为这应该是一件小事。我使用的是 OpenWrt Chaos Calmer 15.05.1。

我第一次尝试时只是想在网络/防火墙/流量规则中添加一条新规则。例如,我想根据主机 A 的 MAC 地址和主机 B 的 IP 阻止主机 A 与主机 B 通信:

Any traffic
From any host in lan with source MAC AA:AA:AA:AA:AA:AA (host A)
To IP W.X.Y.Z in lan (host B)
Discard forward

此规则已使用 OpenWrts 的内置向导设置。由于此部分称为“流量规则”,我认为 OpenWrts 会负责正确添加/插入规则。但是,主机 A 仍然能够与主机 B 通信。

在我的下一次尝试中,我手动将 iptables 规则添加到“自定义规则”部分,该规则在默认规则之后立即加载:

iptables -A FORWARD -p ALL -m mac --mac-source AA:AA:AA:AA:AA:AA -d W.X.Y.Z -j DROP

到目前为止,我还没能让它工作。对此有什么想法吗?此外,有人能告诉我一个解决方案,让主机 B 仍然能够与主机 A 通信吗?我的方法(如果有效的话)将关闭任何通信。

谢谢

答案1

您必须将主机 A 和主机 B 放在不同的子网上,并在它们之间放置路由器。如果它们在同一个子网上,它们将直接相互通信,路由器甚至看不到它们正在交换的 IP 数据包。更准确地说,当我说“直接”时,我的意思是它们在第 2 层(数据链路)上相互通信,以太网帧可能会也可能不会通过 TP-LINK,但它充当第 2 层交换机。

相关内容