我想在源定义的区域中启用 ICMP 回显答复。
我有一个区域 MONITORING,我想在其中允许某些服务,例如 mysql 和 echo-reply。允许 mysql 等服务很简单,但我不知道如何在不使用直接规则的情况下启用 echo-reply。这可能吗?
主接口使用 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