openwrt禁止设备联网
一、代码操作
把mac地址换成要禁用的设备mac地址,加到自定义防火墙最后,记得最后重启防火墙生效 /etc/init.d/firewall restart

iptables -I INPUT -m mac --mac-source B8:C7:4A:7A:66:2E -j DROP iptables -I FORWARD -m mac --mac-source B8:C7:4A:7A:66:2E -j DROP
iptables参数定义: -I #插入到指定链顶部 -A #插入到指定链末尾 INPUT #数据流入链 FORWARD #数据转发链 OUTPUT #数据流出链 -m mac #指定匹配为mac地址 --mac-source #匹配源mac地址 -j DROP #丢弃数据包 -j REJECT #拒绝请求,返回拒绝回应给客户端 -j ACCEPT #允许请求
二、手动操作
找到:网络,防火墙,流量规则

往下翻找到“新建转发规则”,“源区域”选 LAN ,“目标区域”选 WAN ,然后点击“添加并编辑”

“源 MAC 地址”选你要禁止联网的设备,“操作”选择“丢弃”或“拒绝”,然后“保存&应用”就好了

三、拓展内容
白名单策略
允许白名单用户连接路由器:
iptables -I INPUT -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT
禁止非白名单用户连接路由器:
iptables -A INPUT -m mac --mac-source ! xx:xx:xx:xx:xx:xx -j DROP
上面的MAC地址可以随便填,其含义为除了非MAC地址为xx:xx:xx;xx:xx:xx的流量一律丢弃,这样除了之前的白名单其他用户一律连接不了路由器。
上面已经禁止非白名单用户连上路由,还可以进一步禁止上网:
还是先允许白名单用户:
iptables -I FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT
然后依旧是非白名单用户禁止联网:
iptables -A FORWARD -m mac --mac-source ! xx:xx:xx:xx:xx:xx -j DROP
现在非白名单用户就上不了网了,如果要添加白名单就添加 ACCEPT 规则,DROP 规则只需要一条就可以了。
黑名单策略
黑名单就是指定MAC地址来源就drop掉,也就是这样:
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地址就失效了,所以建议使用白名单规则,将自己的设备MAC地址收集好,添加到路由器的防火墙规则中。
在OpenWrt系统防火墙中,一般都会有个 自定义规则,将上文规则一行行添加其中,就像是这样:
# ===just allow mac list in /etc/firewall.user===
#添加MAC白名单ACCEPT规则,有多少个设备就添加多少组
iptables -I INPUT -m mac --mac-source a0:aa:bb:cc:dd:2b -j ACCEPT
iptables -I FORWARD -m mac --mac-source a0:aa:bb:cc:dd:2b -j ACCEPT
#禁止非白名单连接路由器&禁止联网
iptables -A INPUT -m mac --mac-source ! a0:aa:bb:cc:dd:2b -j DROP
iptables -A FORWARD -m mac --mac-source ! a0:aa:bb:cc:dd:2b -j DROP
# === mac list end===
如果路由器后台界面上无编辑保存入口,可以SSH或者TTYD终端登录路由系统,编辑对应文件 /etc/firewall.user ,保存后重启防火墙。
这里注意,很多教程都写了 iptables -I 添加规则,但又没告诉你 -I 方法默认是压栈添加,第一条添加的会推到规则末尾,而 iptables 执行是自上而下的,如果 drop 规则放在第一条,最后造成无效或者连不上设备。
iptables 命令的管理控制选项解释:
- -A 在指定链的末尾添加(append)一条新的规则
- -D 删除(delete)指定链中的某一条规则,可以按规则序号和内容删除
- -I 在指定链中插入(insert)一条新的规则,默认在第一行添加
- -R 修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换
- -L 列出(list)指定链中所有的规则进行查看
- -E 重命名用户定义的链,不改变链本身
- -F 清空(flush)
本文来自博客园,作者:jevan,转载请注明原文链接:https://www.cnblogs.com/DoNetCShap/p/18801200

浙公网安备 33010602011771号