使用iptables和ipset结合实现黑名单功能
来源:原创
时间:2024-10-01
作者:脚本小站
分类:Linux
使用 iptables 和 ipset 结合实现黑名单功能,可以更高效地管理大量 IP 地址。以下是一个简单的步骤,帮助你设置 iptables 和 ipset 来实现黑名单功能。
步骤
安装 ipset:
在大多数 Linux 发行版中,可以通过包管理器安装 ipset。
apt-get install ipset # Debian/Ubuntu yum install ipset # CentOS/RHEL
创建一个 ipset 集合:
创建一个名为 blacklist 的 ipset 集合,用于存储黑名单 IP。
ipset create blacklist hash:ip
将 IP 添加到黑名单:
可以逐个添加 IP 地址,也可以从文件批量添加。例如,添加单个 IP:
ipset add blacklist 192.168.1.100
批量添加(假设你有一个包含 IP 地址的文件 blacklist.txt):
while read ip; do sudo ipset add blacklist $ip; done < blacklist.txt
配置 iptables 使用 ipset:
使用 iptables 规则来阻止来自黑名单集合的 IP:
iptables -A INPUT -m set --match-set blacklist src -j DROP
保存 ipset 和 iptables 规则:
为了在系统重启后保留规则,可以使用以下命令保存它们:
对于 ipset:
导出:
ipset save > /etc/ipset.conf
导入:
ipset restore < /etc/ipset.conf
对于 iptables(不同发行版可能有所不同):
iptables-save > /etc/iptables/rules.v4
然后在系统启动时恢复这些规则,可以在 /etc/rc.local 或者创建一个 systemd 服务来实现。
查看黑名单:
查看当前的黑名单 IP:
ipset list blacklist
删除 IP:
如果需要从黑名单中移除某个 IP:
ipset del blacklist 192.168.1.100
注意事项:
使用 ipset 可以显著提高对大量 IP 地址的处理效率。
确保在添加和删除规则时,仔细检查,以防误操作影响正常流量。
定期更新和维护黑名单,以确保其有效性和准确性。
这样,你就可以通过 iptables 和 ipset 组合实现灵活且高效的黑名单功能。