使用Ipset和Iptables进行MAC地址过滤

我在我的Linux路由器上使用MAC地址过滤。 这是我所做的:

iptables -A INPUT -i eth5 -m mac --mac-source 00:07:e9:84:2b:99 -j RETURN #User: Someuser iptables -A INPUT -i eth5 -j DROP 

但是,iptables规则列表是巨大的,超过400个条目。 最近我读到了在这里使用iptables的Ipset的优点。 但是我没有发现任何有关MAC过滤的做法。 那么如何使用Ipset进行MAC过滤,以减小Iptables规则表的大小。

基本上这样的东西,但你必须关联一个IP与MAC,纯MAC集似乎并不存在:

 # ipset --create test macipmap --network 10.0.0.0/16 # ipset --add test 10.0.0.1,00:11:22:33:44:55 # iptables -A INPUT -i eth5 -m set --match-set test src -j ACCEPT 

在这里,你看到了映射的内容和引用这个集合的iptables规则的引用计数器:

 # ipset -L test Name: test Type: macipmap References: 1 Header: from: 10.0.0.0 to: 10.0.255.255 Members: 10.0.0.1,00:11:22:33:44:55 

有一些事情要考虑:

  • 这种types的技术在技术上限制为64k连续地址(不确定是否必须“子网alignment”),在这里find它
  • 你的内核必须支持ipset,不幸的是,大多数普通的标准分发内核不支持
  • 您可以select静态ARP
  • MAC地址很容易被欺骗