从 2024 年 6 月开始使用雷池 WAF 至今有快一年,见证了该产品的快速迭代更新,使用起来也越来越称手。近日有看到社区用户分享的 IP 库,则想把这些 IP 库添加到 WAF 中以增强拦截效果。由于数据量很大,需要分批添加,在添加过程中有被提醒添加太多 IP 组会出现性能严重下降的情况,想着反正访问量不大,性能下降就下降吧,也没啥重要影响,大不了再删除嘛,主要还想看看这些社区分享的 IP 库拦截效果如何,总之主打一个不听劝。
在添加了约 30 个 IP 组后,继续添加时会明显感觉到提交响应的速度变得异常缓慢,观察到 IO 有被占满的情况。出现了添加提交失败的情况,继续提交后进行查看出现了重复添加的情况,在对重复添加的 IP 组进行删除操作时发现无法删除,也不能进行编辑,但继续添加新的 IP 组则可以。
初步判断在添加失败后看到添加的 IP 组实际是没有成功的,导致无法对错误的 IP 组进行删除和编辑,第一时间想着通过脚本进行重启、修复,结果均无法解决。

再尝试直接在数据库中去删除,查找数据目录 /data/safeline/ 里的 mgt.db 和 luigi.db SQLite 数据库文件中均没有包含 IP 组数据。
次日雷池官方大佬出马进行远程协助排查,问题锁定在添加 IP 组时由于性能不够导致编译失败造成。解决办法是在 safeline-pg 容器连接到 PostgreSQL 手动删除 IP 组数据,以下是操作方法:
使用用户 safeline-ce 登录到 PostgreSQL
docker exec -it safeline-pg psql -U safeline-ce
列出所有 IP 组
select id, comment from mgt_ip_group order by id desc;
删除第 24 到 39 条 IP 组记录 (请根据列出的 IP 组实际情况进行调整需要删除的记录)
delete from mgt_ip_group where id >=24 and id <=39;
重启 safeline-mgt 容器
docker restart safeline-mgt