如何在 Firewalld 中允许 IGMP 流量?

Ala*_*any 5 firewalld

按照指南,作者允许 IGMP-traffic 与 IPtables 与以下行:

sudo iptables -I INPUT -p igmp -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

但是我的老板想让我用 Firewalld 来做这件事。

小智 6

作为直接规则的替代方案,IGMP 流量也可以通过任一--add-protocol=igmp(如果您的firewall-cmd版本已经支持)或在丰富规则的帮助下被接受。

对于firewall-cmd已经支持的版本--add-protocol=protocol:

firewall-cmd --permanent \
             --zone=YOUR-ZONE \
             --add-protocol=igmp

firewall-cmd --reload
Run Code Online (Sandbox Code Playgroud)

实际上,这将行添加<protocol value="igmp"/>到. 也可以看看。/etc/firewalld/zones/YOUR-ZONEman 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
Run Code Online (Sandbox Code Playgroud)

这会产生以下 iptables/netfiler 规则:

-A IN_YOUR-ZONE_allow -p igmp -m conntrack --ctstate NEW -j ACCEPT
Run Code Online (Sandbox Code Playgroud)


Rou*_*tor 4

因此,我一直在追寻这个完全相同的问题,并且偶然发现了一份针对 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
Run Code Online (Sandbox Code Playgroud)

直到(或者如果)添加以另一种方式启用 IGMP 通信的功能之前,Direct 接口似乎是应用此类规则更改的最佳方式。

直接接口的官方文档: https ://fedoraproject.org/wiki/FirewallD#Direct_options