我需要在服务器和Intranet上的客户端之间build立一个防火墙,以通过FORWARD链上的MAC来过滤访问。
服务器有一个网卡(在子网10.0.0.0/29上),防火墙有两个网卡(一个在子网10.0.0.0/29上,另一个在子网192.100.100.0/23上),客户端有一个网卡(在子网上192.100.100.0/23)
我的目标是能够仅转发来自less数MAC的stream量,然后放弃剩下的stream量。
现在我的iptables设置如下:
iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP iptables -A FORWARD -m mac --mac-source 00:00:00:00:00:00 -j ACCEPT
当我检查iptables,我可以看到有规则的stream量,但我发送的ping是没有答复。
有任何想法吗? 提前致谢。
问题是,当你允许从客户端到服务器的数据包时,从服务器返回到客户端的数据包将被丢弃。 它们不是由netfilter自动处理的,需要被明确地允许。
通常情况下,在一个限制性的防火墙,你只允许某些数据包,其余的你可以使用连接跟踪来接受已知连接的返回/相关数据包:
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
请注意,netfilter的mac匹配中没有--mac-destination选项 – 很可能是因为netfilter不知道传出数据包的目标机器的MAC地址,因为它在较低的networking层(第2层; netfilter运行在层3和更高)。