如何丢弃源 IP 在阻止列表 ipset 上的流量,除非源 IP 在防火墙中的允许列表 ipset 上?

如何丢弃源 IP 在阻止列表 ipset 上的流量,除非源 IP 在防火墙中的允许列表 ipset 上?

我有 2 个 ipset:(friends允许列表)和enemies(阻止列表)。

我的默认区域(public)会丢弃所​​有流量,但某些服务除外(例如http)。

我已经编辑了blockfirewalld附带的区域以添加ipset:enemies为源。

firewall-cmd --permanent --new-ipset=enemies --type='hash:net'
firewall-cmd --permanent --zone=drop --add-source=ipset:enemies

Firewalld 按字母顺序查看区域,并且block位于之前public,因此将首先考虑。

如果源 IP 匹配,则将其 DROP。很好。

但我还想有一个friends包含永远不应被阻止的地址的列表。所以我想我需要类似的东西:

firewall-cmd --permanent --zone=drop --add-source=NOT ipset:friends

我尝试过的事情。

我认为答案可能是“丰富规则”,因为您可以在其中指定 NOT 作为源。但我不知道“元素”或“动作”应该是什么。

我在博客等上读到的答案建议创建新区域,例如a_zone_before_block使用--add-source=ipset:friends--set-target=ACCEPT。但是,我不想从这个允许列表中全面接受流量;我仍然希望它使用我public区域中的规则。

我可以通过将 中的所有细节复制到public中来解决这个问题,a_zone_before_block但要添加source=ipset:friends,但这感觉很乱 - 重复会带来两者不同步的问题。所以我希望有更好的方法。

所以我想要的是:

  • block如果流量的来源位于 ipset:enemies 中,则应将其放入该区域除非其来源在ipset:friends。

    或者

  • 一种方法是说如果流量在block区域中但其来源在ipset:friends则将区域更改为public

    或者

  • 000_first一种创建匹配区域的方法ipset:friends,如果匹配,它会传递下去public,跳过第二个区域block

    或者

  • 在区域声明中使用继承的方法。

相关内容