怎么利用IPSet配合防火墙实现百万级黑名单高效封禁实战

胖涛君_2464

胖涛君_2464

2026-04-21

802人浏览

原创

用ipset可实现百万级黑名单高效封禁,核心是采用hash:ip或hash:net配合maxelem/hashsize调优、restore批量导入、-m set精准引用、swap原子切换,达成o(1)查表与零丢包更新。

怎么利用ipset配合防火墙实现百万级黑名单高效封禁实战

用 ipset 配合防火墙实现百万级黑名单高效封禁,核心是避开 iptables 线性匹配的性能陷阱,转而依赖内核级哈希查表(O(1)),让封禁 100 个 IP 和封禁 100 万个 IP 的开销几乎一致。关键不在“能不能加”,而在“怎么建、怎么引、怎么换、怎么稳”。

选对集合类型和参数,避免运行时溢出

百万级规模必须显式设定容量与结构,否则默认 65536 元素会很快报错 ipset v7.6: Error in line 1: set is full:

  • 纯 IPv4 单 IP 封禁:用 hash:ip,例如 ipset create blackv4 hash:ip maxelem 1200000 hashsize 16384
  • 含大量 /24、/23 等网段(如扫描器常用):改用 hash:net,更省内存且减少哈希冲突,命令为 ipset create blackv4 hash:net maxelem 1200000 hashsize 8192
  • hashsize 建议设为略大于 maxelem 的 2 的幂(如 8192、16384),可降低碰撞率;maxelem 必须 ≥ 实际最大条目数,留 10–20% 余量

批量导入不卡壳,优先用 restore 而非循环 add

逐行执行 ipset add 在 shell 层启动上万次进程,耗时长、易中断、难回滚。正确做法是生成标准 restore 格式文件再一次性加载:

灵动AI
灵动AI

灵动AI是一款AI电商图片工具,专业的 AI 商品图生成工具。

下载
  • 准备文本 blacklist.ipset,内容形如:
    create blackv4 hash:net maxelem 1200000<br>add blackv4 192.168.1.0/24<br>add blackv4 203.0.113.42<br>add blackv4 198.51.100.128/25
  • 执行 ipset restore -f blacklist.ipset,秒级完成百万条导入
  • 若源数据是纯 IP 列表(每行一个),可用 awk '{print "add blackv4 " $1}' blacklist.txt > blacklist.ipset 快速转换

iptables 引用要精准,位置和模块缺一不可

规则写错会导致集合完全不生效,常见失效点:

  • 必须加载 -m set 模块:iptables -I INPUT -m set --match-set blackv4 src -j DROP,漏掉 -m set 会报错 No chain/target/match by that name
  • 规则必须插入链首(-I INPUT),不能追加(-A INPUT);若已有 -j ACCEPT 在前,后续的 DROP 规则将永远不触发
  • 确认 IP 版本匹配:IPv4 集合(hash:ip 或 hash:net)无法拦截 IPv6 流量,需另建 blackv6 hash:ip6 并加对应规则

动态更新零丢包,用 swap 实现原子切换

直接 ipset flush blackv4 && ipset restore -f new.ipset 会在清空瞬间放行全部黑名单 IP,造成安全窗口。安全做法是双集+swap:

  • 维护两个同类型集合:blackv4(线上生效)和 blackv4_new(后台构建)
  • 新名单生成后,执行 ipset swap blackv4 blackv4_new ——毫秒级完成,旧集合变空,新集合立即生效
  • 立刻执行 ipset destroy blackv4_new 释放内存,防止残留空集合长期占用内核资源
  • swap 前务必确认两集合类型、family(inet/inet6)完全一致,否则报错 Set cannot be swapped: different types

整套流程跑通后,你面对的是一个可承载百万级条目的、热更新无感知、CPU 开销恒定的黑名单系统。它不依赖外部服务,不增加用户态延迟,纯粹靠内核数据结构兑现性能承诺。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

防火墙 黑名单

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

920

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2852

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

956

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

849

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

434

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2576

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4812

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

767

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
零基础精通 PS 视频教程
零基础精通 PS 视频教程

共268课时 | 119.6万人学习

前端工程师必备技能—PS切图
前端工程师必备技能—PS切图

共11课时 | 2.2万人学习

麦子学院Photoshop切片视频教程
麦子学院Photoshop切片视频教程

共13课时 | 4.3万人学习