015-OpenWRT通过iptables进行MAC过滤 (上网黑-白名单)

转载于:https://www.xzcblog.com/post-248.html

白名单策略:

  • 1、使用 INPUT链 控制是否接入内部网路(局域网)
  • 2、使用 FORWARD链 控制是否接入外部网路(互联网)

1.1 首先允许白名单用户连接路由器:

iptables -I INPUT -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT

1.2 然后禁止非白名单用户连接路由器

iptables -I INPUT -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP

上面的MAC地址可以随便填,起含义为除了非MAC地址位xx:xx:xx;xx:xx:xx的流量一律丢弃,这样除了之前的白名单其他用户一律连接不了路由器.

2.1还是先允许白名单用户连接互联网

iptables -I FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT

2.2然后依旧是非白名单用户禁止联网:

iptables -I FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP

好了现在非白名单用户就上不了网了,如果要添加白名单就这样:

iptables -I INPUT -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT
iptables -I FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT

把上面的MAC地址改成要添加的用户的MAC地址。

黑名单策略:

黑名单的使用就方便了很多直接添加以下规则:

iptables -I INPUT -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP
iptables -I FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP

把上面的MAC地址改一下就可以了。

不过使用黑名单的话安全性不如白名单,还是推荐大家使用白名单。

ps:如果不保存规则的话添加的MAC过滤会在重启后失效,推荐大家把规则写入到/etc/firewall.user中

如果MAC过多可以使用脚本解决:

for mac in $(cat mac);do
        iptables -I FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP
        iptables -I INPUT -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP
        iptables -I FORWARD -m mac --mac-source $mac -j ACCEPT
        iptables -I INPUT -m mac --mac-source $mac -j ACCEPT
done

这个脚本开机的时候执行一次就可以了,如果要临时添加的话最后手动添加,不然会导致iptables中规则重复。

ps:删除iptables规则,首先我们执行

iptables -L --line-number

这时会在规则前面显示序号,然后执行

iptables -D INPUT 1

就可以删除规则了,上面命令中的1就是规则的序号,替换成你要删除的规则的序号就行了。

个人总结

想要简单就使用黑名单模式

此命令可以接入网络但无法数据通信(外网-FORWARD链)

iptables -I FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP

此命令直接无法接入内部局域网络 (内网-INPUT链路)

iptables -I INPUT -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP 

你可能感兴趣的:(015-OpenWRT通过iptables进行MAC过滤 (上网黑-白名单))