单个 iptable 规则匹配 /32 并跳转

单个 iptable 规则匹配 /32 并跳转

我们需要安装一个与每个源 /32 用户 IP 匹配的单个 iptables 规则并跳转到“用户链”:

iptables -A INPUT -s "EVERY_USER-IP/32" -j "USER_IP/32_CHAIN"

因为我们有数百个用户,所以我们需要/希望避免使用大量的用户 ip/32 规则,例如:

iptables -A INPUT -s "USER-IP1/32" -j "USER_IP1/32_CHAIN"

iptables -A INPUT -s "USER-IP2/32" -j "USER_IP2/32_CHAIN"

...

答案1

如果您希望每个用户 IP 都有不同的防火墙规则集,则需要为每个用户 IP 创建一个链。然后,您需要用正确的规则填充每个链。

除非您告诉我们您的规则集以及是否真的有必要为每个用户 IP 设置一套完全不同的规则,否则我们无法建议更好的方法。

如果您担心 iptables 处理大型规则集的能力,我有一个包含 +60,000 条规则的工作防火墙。

答案2

你的问题的前半部分听起来像是ipset

您可以使用 iptables 规则集管理 ip 地址集合ipset,并在 iptables 规则集中引用该集合,而不是单个 ip 地址。这样可以使您的规则库小得多,性能也会更好。

ipset create our-users hash:net hashsize 4096

将 IP 地址添加到新集合中:

ipset add our-users 192.168.0.5 
ipset add our-users 192.168.0.100 

然后,当源 IP 地址出现在该集合中时,执行一些有用的操作:

iptables -I INPUT  -m set --match-set our-users src -j ALLOW 

但您当前问题的第二部分似乎暗示,对于每个已知源 IP 地址,您都有(一些)自定义规则,这些规则位于一个唯一的链中。如果情况确实如此,那么您最终确实会得到很多规则。

相关内容