OpenWrt系统路由只允许指定MAC地址可以连接使用
条评论前言
很久前刷的OpenWrt,到现在梯子客户端版本也太老了,有些新特性用不上甚至连不上,抽出斗地主的时间准备把路由器重新刷一把。
其实折腾久了各种固件,自己的需求很简单:稳定,不需要乱七八糟的功能,能架个梯子,屏蔽个小广告,能带动我那82年的打印机。
恩山无线上翻了半天,也下了几个刷了把,总是满足不了自己的需求,有一个还可以但无线还不能自启动。
不得已现学现用,用大佬们的教程按自己的需求编译了一个固件,其他都挺好,但以前的MAC过滤不知道怎么编译,只好使用iptables规则。
MAC过滤原理
利用iptables的规则过滤,指定MAC来源accept,其他drop掉。
白名单策略
允许白名单用户连接路由器:
1 | iptables -I INPUT -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT |
禁止非白名单用户连接路由器:
1 | iptables -A INPUT -m mac --mac-source ! xx:xx:xx:xx:xx:xx -j DROP |
上面的MAC地址可以随便填,其含义为除了非MAC地址为xx:xx:xx;xx:xx:xx的流量一律丢弃,这样除了之前的白名单其他用户一律连接不了路由器。
上面已经禁止非白名单用户连上路由,还可以进一步禁止上网:
还是先允许白名单用户:
1 | iptables -I FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT |
然后依旧是非白名单用户禁止联网:
1 | iptables -A FORWARD -m mac --mac-source ! xx:xx:xx:xx:xx:xx -j DROP |
现在非白名单用户就上不了网了,如果要添加白名单就添加 ACCEPT
规则,DROP
规则只需要一条就可以了。
黑名单策略
黑名单就是指定MAC地址来源就drop掉,也就是这样:
1 | iptables -I INPUT -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP |
路由防火墙应用
黑名单规则就是加一个禁一个,黑名单规则越加越多,而且被禁的设备改变MAC地址就失效了,所以建议使用白名单规则,将自己的设备MAC地址收集好,添加到路由器的防火墙规则中。
在OpenWrt系统防火墙中,一般都会有个 自定义规则
,将上文规则一行行添加其中,就像是这样:
1 | # ===just allow mac list in /etc/firewall.user=== |
如果路由器后台界面上无编辑保存入口,可以SSH或者TTYD终端登录路由系统,编辑对应文件 /etc/firewall.user
,保存后重启防火墙。
这里注意,很多教程都写了 iptables -I
添加规则,但又没告诉你 -I
方法默认是压栈添加,第一条添加的会推到规则末尾,而 iptables
执行是自上而下的,如果 drop
规则放在第一条,最后造成无效或者连不上设备。
iptables
命令的管理控制选项解释:
- -A 在指定链的末尾添加(append)一条新的规则
- -D 删除(delete)指定链中的某一条规则,可以按规则序号和内容删除
- -I 在指定链中插入(insert)一条新的规则,默认在第一行添加
- -R 修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换
- -L 列出(list)指定链中所有的规则进行查看
- -E 重命名用户定义的链,不改变链本身
- -F 清空(flush)
后记
以上方法在当固件不带MAC过滤插件时,用防火墙规则替代实现,通用性更高。如果方法不奏效,同样可以利用防火墙的 通信规则/流量规则
来实现,见本站下一篇教程:利用防火墙通信规则实现MAC白名单上网。
参考文档
本文标题:OpenWrt系统路由只允许指定MAC地址可以连接使用
文章作者:凹凸曼
发布时间:2022-04-01
最后更新:2022-04-01
原始链接:https://sobaigu.com/iptables-mac-whitelist-in-openwrt.html
版权声明:转载请务必保留本文链接和注明内容来源,并自负版权等法律责任。