900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > iptables结合ipset禁止国外IP进行访问

iptables结合ipset禁止国外IP进行访问

时间:2023-12-10 23:06:20

相关推荐

iptables结合ipset禁止国外IP进行访问

0x01 ipset

可以使用iptables对访问地址进行一定的限制,但是当受限地址数量过多时,维护管理起来就不太方便,而且数量过多的iptables条目也会影响设备的性能。此时就可以使用ipset工具来解决此种问题。

ipset理解起来比较容易,理解为地址组就好,具有相同作用的地址段存放在一个集合里面,当使用策略时,策略会对集合里面的所有地址段都生效。提高了策略的部署效率和减少了维护管理的工作量。

这里以centos7为例,要是没有ipset工具的话通过yum安装就可以yum -y install ipset,安装好了后,先创建一个空的set

ipset create testip hash:net #这里的testip是ipset的名字

除了hashipset还可以用bitmap或者list方式存储地址,可以按需求来进行设置

如果是等同大小的段可以使用bitmap,不同大小段一般使用hash较多,至于list只是用一个列表来进行存放信息。

可以使用list来进行查看ipset情况

root@debian-pve:~# ipset list testip Name: testipType: hash:netRevision: 7Header: family inet hashsize 1024 maxelem 65536 bucketsize 12 initval 0xe08d3b99#这里的hashsize当存储满时会自动翻倍增长,下一次就是2048,再下次就是4096#maxelem可以改大一些,代表着最大存储的条目。Size in memory: 456References: 0Number of entries: 0Members:

在创建完ipset后,可以通过adddeltest等指令进行操作

root@debian-pve:~# ipset add testip 10.1.1.0/24

还可以进行测试地址段是否已经加入到ipset

最后需要注意的是ipsetiptables一样,需要单独保存,配置重启后会丢失。

ipset save testip > testip.ipset #保存文件ipset restore < testip.ipset #恢复文件

0x02 iptables结合ipset禁止国外IP进行访问

先下载国内IP地址的网段量,可以在/进行查找所需要的数据,接着将这些数据加入到ipset中,这里使用脚本简单处理下

[root@localhost ~]# cat ipset_cn.sh wget /ipblocks/data/countries/cn.zoneipset create cnip hash:net maxelem 1000000for i in `cat cn.zone`doipset add cnip $idone#可以看到此时大概有8000+条的IP段[root@localhost ~]# ipset list cnip |wc -l8647

接着根据业务情况,配置合理的iptables条目,这里是禁止所有地址访问,只允许国内IP访问来实现效果。

iptables -I INPUT -m set --match-set cnip src -p tcp --dport 80 -j ACCEPT

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。