使用 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 组合实现灵活且高效的黑名单功能。