在将 IP 条件推送至防火墙(如 ipset、nftables)时,可能会设定多个过滤条件:
- 国家/地区
- 运营商
- 省份
- ASN
- 自定义 IP 列表
- ...
冗余问题
当多个条件组合使用时,容易出现数据冗余的情况,例如:
- 国家/地区条件中包含
10.0.0.0/16 - ASN 条件中包含
10.0.1.0/24 - 自定义 IP 列表中包含
10.0.1.100
此外,还需要考虑白名单的存在:
- 白名单 IP 通常比黑名单范围小很多。
- 如果处理不当,防火墙不仅要处理大量冗余数据,还可能无法正确放行白名单 IP 。
- 这可能会导致防火墙性能下降。
当前思路
目前考虑的优化方案:
-
定义优先级:
- 较大的 CIDR (例如
/16)优先级高于较小的 CIDR (如/24或单个 IP )。 - 白名单优先于黑名单。
- 较大的 CIDR (例如
后续还需要接入 IP 威胁情报库(主要是大量的单个 IP ),想想就头大!大家有没有一些比较好的思路来处理这些或者可以牺牲一些体验呢?