直接用iptables放行国内IP地址,禁用所有的策略先不说性能如何。看到iptables -L -n返回的4-5千行都要吐了。查了查有两个方案解决:
一、是用iptables的ipset插件;
二、是用iptables的xtables-addons插件加geoip地址库。
本文使用了前者。ipset是iptables的扩展,它允许你创建 匹配整个地址集合的规则。而不像普通的iptables链只能单IP匹配, ip集合存储在带索引的数据结构中,这种结构即时集合比较大也可以进行高效的查找,除了一些常用的情况,比如阻止一些危险主机访问本机,从而减少系统资源占用或网络拥塞,IPsets也具备一些新防火墙设计方法,并简化了配置.官网:http://ipset.netfilter.org/
ipset安装和准备工作
停用Centos7的firewalld服务和安装iptables这里不再冗述,可以参考之前的文章。
1 | yum install ipset ipset-service |
创建ipset规则
1 | ipset -N cnip hash:net |
创建iptables规则
1 | iptables -A INPUT -p tcp -m set --match-set cnip src -j ACCEPT |