根据指南,作者使用以下行允许 IPtables 进行 IGMP 流量:
sudo iptables -I INPUT -p igmp -j ACCEPT
但我的老板希望我用 Firewalld 来做这件事。
答案1
作为直接规则的替代方案,IGMP 流量也可以通过以下任一方式接受--add-protocol=igmp
(如果您的firewall-cmd
版本已经支持)或借助丰富的规则。
对于firewall-cmd
已经支持的版本--add-protocol=protocol
:
firewall-cmd --permanent \
--zone=YOUR-ZONE \
--add-protocol=igmp
firewall-cmd --reload
实际上,这将行添加<protocol value="igmp"/>
到.也可以看看。/etc/firewalld/zones/YOUR-ZONE
man 5 firewalld.zone
firewall-cmd
对于不支持的以前版本--add-protocol=protocol
:
firewall-cmd --permanent \
--zone=YOUR-ZONE \
--add-rich-rule='rule protocol value="igmp" accept'
firewall-cmd --reload
这会产生以下 iptables/netfiler 规则:
-A IN_YOUR-ZONE_allow -p igmp -m conntrack --ctstate NEW -j ACCEPT
答案2
因此,我一直在追寻这个完全相同的问题,并且偶然发现了一份针对 firewalld 提交的错误报告,用于在应用程序安装期间启用 IGMP。 (此处归功于OP:https://bugzilla.redhat.com/show_bug.cgi?id=1048947)
作者很友善地提供了一种解决方法来满足我们的需要:
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p igmp -j ACCEPT
直到(或如果)添加以另一种方式启用 IGMP 通信的功能之前,Direct 接口似乎是应用此类规则更改的最佳方式。
直接接口官方文档: https://fedoraproject.org/wiki/FirewallD#Direct_options