Linux iptables根据mac地址丢弃stream量

我正在做一些testing在我的linux虚拟机与一nic,我想用它作为某种防火墙,可以阻止一些客户端的基于MAC地址的stream量。

客户端本身将虚拟机作为默认网关(.254),虚​​拟机本身具有(.1实际路由器)作为默认网关。

这是我目前使用的iptable脚本。 我在我的客户端有互联网,但是.14仍然是互联网,使用mac地址时,没有任何阻止。

我错过了什么吗?

# Generated by iptables-save v1.4.14 on Sun Feb 23 12:16:26 2014 *filter :INPUT ACCEPT [869:78983] :FORWARD ACCEPT [1183:197765] :OUTPUT ACCEPT [644:128360] # Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0 -A INPUT -i lo -j ACCEPT -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT # log iptables denied calls (access via 'dmesg' command) -P FORWARD DROP -F FORWARD -A FORWARD -i eth0 -m mac --mac-source 64:20:0c:ac:f4:49 -j DROP -A FORWARD -i eth0 -s 192.168.1.14 -j DROP -A FORWARD -i eth0 -j ACCEPT # Reject all other inbound - default deny unless explicitly allowed policy: -A INPUT -j REJECT -A FORWARD -j REJECT COMMIT # Completed on Sun Feb 23 12:16:26 2014 

您需要将这些规则放在.144所使用的网关.254上。

如果需要在.1网关级别阻塞.14,则需要确保数据包到达的地址是.14的MAC地址,如果数据包是通过NAT转发的.254,则这些数据包将被重新打包.254 mac地址。

我build议你为客户端创build一个子网.14不能直接连接到.1网关。

MAC地址过滤需要在PREROUTING链中进行,当数据包到达FORWARD链时,MAC地址已经被重写为(内部)iptables桥的MAC地址。

有关更详细的解释,请参阅http://ebtables.sourceforge.net/br_fw_ia/br_fw_ia.html#section8的第9段。

在设置默认策略(-F FORWARD行)之后,你也刷新FORWARD链,我怀疑你想这样做(它恢复默认的ACCEPT策略)。

我不明白为什么“-A FORWARD -i eth0 -s 192.168.1.14 -j DROP”没有阻塞该源IP,但无论如何你不应该在那里需要“-i eth0”。 你确定1.14使用254作为默认的gw吗?

这也将有助于发布iptables -L -v的输出来查看实际加载的内容。