Firewalld - 允许自定义区域中的 ICMP(centos 7 / redhat 7)

Firewalld - 允许自定义区域中的 ICMP(centos 7 / redhat 7)

我想在源定义的区域中启用 ICMP 回显答复。

我有一个区域 MONITORING,我想在其中允许某些服务,例如 mysql 和 echo-r​​eply。允许 mysql 等服务很简单,但我不知道如何在不使用直接规则的情况下启用 echo-r​​eply。这可能吗?

主接口使用 BLOCK 区域,因此当数据包不属于 MONITORING 区域时,将使用 icmp-host-prohibited 拒绝数据包。

谢谢

答案1

为了帮助那些遇到同样问题的人,我使用以下命令:

firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p icmp -s X.X.X.X -j ACCEPT

它添加了一条规则,如果源是 XXXX,则允许 ICMP 协议

答案2

您可以通过在监控区域中允许 ICMP 回显答复来实现这一点:

firewall-cmd --zone MONITORING --add-icmp-block echo-reply
firewall-cmd --zone MONITORING --add-icmp-block-inversion

即使主接口使用拒绝 ICMP 数据包的区域,此方法也能奏效,因为数据包在基于接口的区域之前先由基于源的区域匹配。您可以通过查看 INPUT iptables 链来看到这一点:

# iptables -nL INPUT
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
INPUT_direct  all  --  0.0.0.0/0            0.0.0.0/0           
INPUT_ZONES_SOURCE  all  --  0.0.0.0/0            0.0.0.0/0           
INPUT_ZONES  all  --  0.0.0.0/0            0.0.0.0/0           
DROP       all  --  0.0.0.0/0            0.0.0.0/0            ctstate INVALID
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

答案3

您可能不想启用全部ICMP 协议,您不必这样做。

添加--icmp-type 8仅启用 ICMP 回显答复。

完整命令如下:

firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p icmp -m icmp --icmp-type 8 -s X.X.X.X -j ACCEPT

相关内容