前言
如果你的路由器获取到了公网IPv4那么你是幸运的,但拥有公网IPv4也并非那么的美好。
公网v4地址基本上每天都会遭到扫描,扫描一个v4地址全部65535个端口仅仅只需要30s左右,如果开启 SYN-flood防御的话会扫描起来慢一些,但这些都是治标不治本。
所以制作一个允许访问的IP白名单就显得比较重要了,但是IPv4地址不像IPv6那样几乎取之不尽,每个城市都有固定的前缀,建立本市三大运营商的IPv6白名单仅仅6行的规则。具体如下图博主所在城市的IPv6前缀白名单:
如果你要用这种方法录入IPv4规则的话,那么光是一个市的IPv4地址数量网段数量就是上千条,一条一条录入的话是不太现实的。
还好openwrt可以通过引入IP集合的方式实现地址白名单。
openwrt通过IP集合设置IP白名单
博主演示的openwrt固件来自Kiddin大佬的在线编译固件。分支23.05.5,Linux内核版本5.15.162,并且安装了IPset和Firewall4插件。
首先先到github找到我们想要的城市IP地址分配列表,访问地址。找到自己对应的城市或者省份的地址表下载保存成txt文件,尽量不使用中文名称。
来到网络→防火墙→IP集合界面,点击添加。
名称随意,族选择IPv4,数据包字段匹配选择sec_net:源(子)网,上传我们从github上下载的地区地址规则txt文件,后点击保存即可。
下面来到接口→防火墙→端口转发,添加一个规则进行验证。
点击高级设置找到选择使用IP集选择我们刚刚建立好的IP集合,其余默认,点击保存。
验证是否可用
进入openwrt的SSH输入以下代码验证防火墙设置是否右报错。如果有报错请删除建立的IP集合,再添加重试。
/etc/init.d/firewall reload
使用端口扫描工具nmap进行验证,是否在所在地区可以成功访问,不在白名单地区的是否不能访问。
nmap -sS 地址 -Pn -p端口
使用广东的云服务器进行扫描结果:端口是关闭的。
然后连接手机热点访问,能访问了就表示成功了。
结尾
怎么说呢,虽然这功能ikuai上实现比较简单,但是ikuai的话单个集合只能有1000个网段,尽管可以添加好几个组的网段,要添加整个省的地址就显得比较的麻烦。
最后,用什么系统都不重要,最重要的是大家能折腾得开心,开心的折腾。
参考:openwrt IP set examples。
END