Firewalld的富规则,ip段好像只支持掩模形式,例如 firewall-cmd --add-rich-rule="rule family=ipv4 source address=1.1.1.1/24 accept"
问题我如果想加100.0.0.1-100.0.0.3这类相对任意的外网ip段呢?
原来iptables很简单: iptables -A INPUT -p tcp -m iprange --src-range 100.0.0.1-100.0.0.3 --dport 1234 --sport 1024:65534 -j ACCEPT
现在的Firewalld要变成3条富规则分别加入吗? firewall-cmd --add-rich-rule="rule family=ipv4 source address=100.0.0.1 accept" firewall-cmd --add-rich-rule="rule family=ipv4 source address=100.0.0.2 accept" firewall-cmd --add-rich-rule="rule family=ipv4 source address=100.0.0.3 accept"
有没有更好的方法,因为以前iptables只需要几百条,现在用firewalld分拆后变成几十万条富规则了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
Firewalld 的确更倾向于使用子网掩码(CIDR)来定义IP地址范围,这使得处理连续的大IP段时不如iptables的iprange模块灵活。但是,对于您希望添加的特定连续IP地址范围,如100.0.0.1至100.0.0.3,如果直接转换为多条规则确实会变得非常繁琐且低效。
虽然Firewalld没有直接等同于--src-range的选项,但您可以考虑使用一个变通的方法:创建一个自定义服务或者直接利用地址组(address set)功能来管理这类复杂规则。
地址组允许您定义一组IP地址,并可以在规则中引用这个组,这样可以简化管理大量IP地址的情况。以下是步骤:
创建地址组:
firewall-cmd --permanent --new-ipset=MyIPRange
向地址组中添加IP地址:
firewall-cmd --permanent --ipset=MyIPRange --add-entry=100.0.0.1
firewall-cmd --permanent --ipset=MyIPRange --add-entry=100.0.0.2
firewall-cmd --permanent --ipset=MyIPRange --add-entry=100.0.0.3
应用更改并重载防火墙配置:
firewall-cmd --reload
创建富规则引用地址组:
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address-set=MyIPRange accept'
最后,再次重载以应用新规则:
firewall-cmd --reload
通过这种方式,即使将来需要添加或删除IP地址,也只需修改地址组内容,而无需逐条调整规则,大大提高了管理效率。虽然这仍然需要为每个IP地址执行一次命令,但它提供了一个集中管理和更新的机制,比直接写多条规则要灵活和高效得多。