我是否必须交换 IP 集,或者可以动态添加/删除吗?

我是否必须交换 IP 集,或者可以动态添加/删除吗?

我想知道的语义ipset(8)

是否可以添加与集合匹配的规则iptables,然后操作该集合,或者我只能创建一个集合并将其交换为旧的集合,以便将其应用于与iptables名称匹配的规则?即,我可以临时添加或删除 IP 集吗?或者我可以在 IP 集处于活动使用状态时交换整个集吗?


我问的原因如下。假设我创建了一个集合

ipset create PCs hash:ip
ipset add PCs 1.1.1.1
ipset add PCs 2.2.2.2

...等等。以及允许访问 HTTP 的规则:

iptables -A INPUT -p tcp --dport 80 -m set --set PCs src -j ACCEPT

当我跑步时会发生什么:

ipset add PCs 3.3.3.3

iptables规则现在也会立即对 IP 3.3.3.3 生效吗?

我发现可以使用规则-j SET --add-set ...内的临时 IP 集进行操作iptables。这让我认为在任何给定点操作一个集合都应该可行。

然而,该ipset项目网站似乎表明,将新的(调整后的)集合替换为另一个集合是更好的选择。无论是通过ipset swap还是通过ipset restore -!

谁能阐明这一点?

答案1

您可以在已定义的集合中动态添加和删除 IP。这是 IPsets 背后的想法之一:如果这是不可能的,set那么整个扩展iptables就没有多大意义。

其主要目标ipset是使您能够定义(也是动态的)匹配类别(例如,动态地将恶意主机列入黑名单,而无需为每个主机神奇地添加一条规则)。

摘自ipset主页

  • 存储多个IP地址或端口号并与iptables的集合一次性匹配
  • 根据 IP 地址或端口动态更新 iptables 规则,而不会影响性能
  • 使用单个 iptables 规则表达复杂的 IP 地址和基于端口的规则集,并受益于 IP 集的速度

相关内容