IPset 是 iptables 的扩展,它允许你创建匹配整个地址集合的规则,而不像普通的 iptables 链只能单IP或单网段匹配。
ipset 规则中的IP地址集合存储在带索引的数据结构中,这种结构即时集合比较大也可以进行高效的查找,从而减少系统资源占用或网络拥塞。IP sets 也具备一些新防火墙设计方法,并简化了配置。ipset 的官网:https://ipset.netfilter.org/
下面我们以一个实际场景为样例,介绍如何在Debian系统中,使用 ipset 将单个国家的左右 IP段 加入黑名单。
#### 准备工作:安装 ipset、或者网段列表
sudo apt-get -y install ipset
wget -P . http://www.ipdeny.com/ipblocks/data/countries/cn.zone #下载国家IP段,这里以cn为例
sudo ipset -N cnip hash:net
for i in $(cat ./cn.zone ); do sudo ipset -A cnip $i; done #将IP段添加到cnip规则中
#### 创建 iptables 规则
`sudo iptables -A OUTPUT -p tcp -m state --state NEW -m set --match-set cnip dst -j REJECT`
将以上规则配置为系统重启后,依然生效。
ipset save cnip -f /etc/iptables/ipset.conf #保存
iptables-save > /etc/iptables/iptables.conf #保存后请检查是否含有 -A OUTPUT -p tcp -m state --state NEW -m set --match-set cnip dst -j REJECT
#### 添加自动启动脚本
vim /etc/rc.local
#在exit 0之前添加以下两行,保存退出
sudo ipset restore -f /etc/iptables/ipset.conf
sudo iptables-restore < /etc/iptables/iptables.conf
然后重启系统,大功告成。
下一篇:DNSCrypt简明教程
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码`
- 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传