ipset是iptables的扩展,它允许你创建/匹配整个地址集合的规则。而不像普通的iptables链只能单IP匹配, ip集合存储在带索引的数据结构中,这种结构即使集合比较大也可以进行高效的查找,除了一些常用的情况,比如阻止一些危险主机访问本机,从而减少系统资源占用或网络拥塞,ipset也具备一些新防火墙设计方法,并简化了配置。官网:http://ipset.netfilter.org/
1、ipset安装
$ sudo yum install ipset
2、创建ipset
$ sudo ipset create xxx hash:net
其他的存储类型:
hash:ip 表示存储IP段或IP地址
hash:ip,port 表示存储的是ip地址和端口,如果没有注明协议,默认就是TCP协议,例如:
$ sudo ipset blacklist 12.34.56.78,80
$ sudo ipset blacklist 12.34.56.78,udp:53
ipset默认可以存储65536个元素,可以通过maxelem 修改可以存储的最大元素数量:
$ sudo ipset create blacklist hash:net maxelem 100000
查看已经创建的ipset:
$ ipset list
3、将指定IP加入名单:
$ sudo ipset blacklist 12.34.56.78
将指定IP段加入名单:
$ sudo ipset blacklist 12.34.56.78/24
4、从名单中去除一个IP
$ sudo ipset del blacklist 12.34.56.78
5、创建iptables规则
(1)使ipset列表中的ip的nat流量均被转发到1080端口
$ sudo iptables -t nat -A PREROUTING -p tcp -m set --match-set blacklist dst -j REDIRECT --to-port 1080
(2)使ipset列表中的ip的本机发出的流量均被转发到1080端口
$ sudo iptables -t nat -A OUTPUT -p tcp -m set --match-set blacklist dst -j REDIRECT --to-port 1080
6、将ipset规则保存到文件
$ sudo ipset save blacklist -f blacklist.txt
7、从文件中导入ipset规则
$ sudo ipset restore -f blacklist.txt
8、删除ipset规则列表
$ sudo ipset destroy blacklist
9、其他
ipset 支持 timeout 参数,这就意味着,如果一个集合是作为黑名单使用,通过 timeout 参数,就可以到期自动从黑名单里删除内容。
$ sudo ipset add blacklist 2.2.2.2 timeout 60
ipset的一个优势是集合可以动态的修改,即使ipset的iptables规则目前已经启动,新加入ipset的ip也生效。
参考
https://www.cnblogs.com/vijayfly/p/7205559.html
http://blog.chinaunix.net/uid-25518484-id-5697721.html
No comments:
Post a Comment