高效管理IP集合利器ipset
🚀为什么需要ipset
在 Linux 防火墙管理中,当需要处理大量 IP 地址时,传统的 iptables 会面临性能瓶颈。例如,封禁 10,000 个 IP 需要创建 10,000 条 iptables 规则,导致:
- ❌ 规则匹配效率低下
- ❌ 内存占用巨大
- ❌ 管理维护困难
ipset 应运而生,它将多个 IP
/端口
/MAC
地址存储在高效的集合结构中,通过单条 iptables 规则即可匹配整个集合,性能提升 10-100 倍!
🚀ipset核心优势
1. 性能对比
场景 | iptables | ipset | 提升倍数 |
---|---|---|---|
10,000个IP封禁 | 10,000条规则 | 1条规则 + 1个集合 | 100倍 |
内存占用 | 300MB+ | 5-10MB | 30-60倍 |
规则匹配 | O(n) 线性扫描 | O(1) 哈希查找 | 指数级 |
2. 适用场景
DDoS防护
:快速封禁攻击源 IP地理封锁
:批量管理国家 IP 段安全组
:动态 IP 白名单/黑名单负载均衡
:后端服务器集合管理网络审计
:流量监控 IP 集合
🚀基础安装与配置
1. 安装ipset
1 | # Ubuntu/Debian |
2. 内核模块加载
1 | # 检查支持的内核模块 |
🚀常用实战案例
1. 案例1:IP黑名单管理
1 | # 1. 创建黑名单集合(30分钟自动过期) |
2. 案例2:国家IP段封锁
1 | # 1. 创建国家IP集合 |
3. 案例3:动态端口白名单
1 | # 1. 创建IP+端口集合 |
4. 案例4:DDoS防护自动封禁
1 |
|
🚀与iptables高级集成
1. 多重条件匹配
1 | ipset create src_ips hash:ip |
2. 连接状态+ipset组合
1 | # 只对新连接应用ipset规则 |
🚀持久化与备份
1. 保存ipset配置
1 | # 保存所有集合到文件 |
2. 恢复ipset配置
1 | # 从文件恢复 |
🚀性能优化技巧
1. 合理设置哈希表大小
1 | # 根据元素数量预估hashsize(通常为maxelem的1/4) |
2. 使用网络位图优化小范围IP
1 | # 适用于连续IP段(如192.168.1.0/24) |
3. 超时机制避免集合膨胀
1 | # 自动清理过期元素 |
🚀核心管理命令
1. 集合生命周期管理
命令 | 功能 | 示例 |
---|---|---|
create |
创建新集合 | ipset create blacklist hash:ip |
destroy |
删除集合 | ipset destroy blacklist |
flush |
清空集合元素 | ipset flush blacklist |
rename |
重命名集合 | ipset rename blacklist blocklist |
2. 元素操作命令
命令 | 功能 | 示例 |
---|---|---|
add |
添加元素 | ipset add blacklist 192.168.1.100 |
del |
删除元素 | ipset del blacklist 192.168.1.100 |
test |
检查元素存在 | ipset test blacklist 192.168.1.100 |
3. 信息查询命令
命令 | 功能 | 示例 |
---|---|---|
list |
显示集合内容 | ipset list 或 ipset list blacklist |
save |
保存到文件 | ipset save > ipset.rules |
restore |
从文件恢复 | ipset restore < ipset.rules |
🚀常用参数总结
1. 集合创建参数
1 | # 基础语法 |
2. 集合类型快速参考
类型 | 语法 | 存储格式 | 典型用途 |
---|---|---|---|
hash:ip |
hash:ip |
单个IP地址 | IP黑名单 |
hash:net |
hash:net |
IP网段 | 国家封锁 |
hash:ip,port |
hash:ip,port |
IP+端口组合 | 服务访问控制 |
hash:net,port |
hash:net,port |
网段+端口 | 部门策略 |
bitmap:ip |
bitmap:ip range x.x.x.x/y |
IP范围位图 | 局域网管理 |
list:set |
list:set |
集合的集合 | 复杂策略组合 |
3. 元素添加参数
1 | # 超时设置 |
4. 高级匹配参数
1 | # 端口范围 |