高效管理IP地址集合(Linux下ipset命令详解)

V5主机测评

在Linux系统中,ipset 是一个非常强大但常被忽视的工具。它允许你创建和管理IP地址、端口、MAC地址等的集合,并与 iptables 配合使用,从而大幅提升防火墙规则的效率和可维护性。本教程将从零开始,手把手教你掌握 ipset 的基本用法,即使你是Linux新手也能轻松上手。

高效管理IP地址集合(Linux下ipset命令详解)

一、什么是 ipset?

传统的 iptables 规则是逐条匹配的。如果你需要阻止成百上千个IP地址,就需要写成百上千条规则,这不仅繁琐,还会严重拖慢系统性能。

ipset 允许你将这些IP地址放入一个“集合”(set)中,然后在 iptables 中只用一条规则引用这个集合。这样,无论集合中有10个还是10万个IP,匹配速度几乎不变!这就是 Linux网络管理 中的性能优化利器。

二、安装 ipset

大多数现代Linux发行版默认不安装 ipset,但安装非常简单:

# Ubuntu/Debiansudo apt updatesudo apt install ipset# CentOS/RHEL/Fedorasudo yum install ipset# 或者(较新版本)sudo dnf install ipset

三、基本用法

1. 创建一个IP集合

首先,我们创建一个名为 blacklist 的集合,用于存储要禁止的IP地址:

sudo ipset create blacklist hash:ip

这里 hash:ip 表示这是一个基于哈希表的IP地址集合,查询效率极高。

2. 向集合中添加IP

sudo ipset add blacklist 192.168.1.100sudo ipset add blacklist 10.0.0.50

3. 查看集合内容

sudo ipset list blacklist

输出将显示集合中的所有IP。

4. 与 iptables 联动

现在,我们可以用一条 iptables 规则拒绝整个集合中的IP:

sudo iptables -A INPUT -m set --match-set blacklist src -j DROP

这条规则的意思是:如果数据包的源IP(src)在 blacklist 集合中,就丢弃(DROP)它。

四、高级技巧:支持网段和端口

ipset 不仅支持单个IP,还支持网段、端口甚至IP+端口组合:

  • 网段集合hash:net —— 用于添加如 192.168.0.0/24
  • IP+端口集合hash:ip,port —— 可精确控制某个IP访问特定端口

例如,创建一个阻止特定IP访问SSH端口的集合:

sudo ipset create ssh_blacklist hash:ip,portsudo ipset add ssh_blacklist 203.0.113.5,22sudo iptables -A INPUT -m set --match-set ssh_blacklist src,dst -j DROP

五、持久化保存规则

默认情况下,重启后 ipset 集合会丢失。为了持久化,可以导出并恢复:

# 保存当前所有集合到文件sudo ipset save > /etc/ipset.rules# 开机时恢复(可加入 /etc/rc.local 或 systemd 服务)sudo ipset restore < /etc/ipset.rules

六、总结

通过本教程,你应该已经掌握了 ipset教程 的核心内容。使用 ipset,你可以轻松实现大规模IP地址的高效管理,显著提升 防火墙优化 效果。无论是搭建安全网关、防止DDoS攻击,还是精细化流量控制,ipset 都是你不可或缺的工具。

记住:合理使用 IP地址集合,不仅能简化配置,还能让系统更安全、更高效!

文章版权声明:除非注明,否则均为V5主机测评网_性价比VPS_性价比云服务器_免费独立服务器原创文章,转载或复制请以超链接形式并注明出处。