将iptables规则迁移至firewalld:配置ICMP白名单访问规则
解决firewalld下仅允许指定IP/子网ping的配置问题
我来帮你搞定这个规则迁移的事儿——其实你之前的问题大概率是没摸透firewalld富规则的匹配逻辑,咱们直接上可行的配置步骤:
核心思路
firewalld的规则是按顺序匹配的,咱们只需要先添加「允许指定来源发起ping请求」的规则,最后再添加「拒绝所有其他ICMP流量」的规则,就能实现你要的效果:阻止所有ICMP,仅放开指定IP/子网的ping。
具体配置步骤
注意:所有命令加上--permanent是让规则永久生效,避免重启firewalld后丢失;配置完记得重载规则。
允许IT子网发起ping请求
ping对应的是ICMP的echo-request类型,执行这条命令添加规则:firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" icmp-type name="echo-request" accept' --permanent允许监控服务器发起ping请求
同样针对echo-request,添加单独的富规则:firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.10.10.10" icmp-type name="echo-request" accept' --permanent拒绝所有其他ICMP流量
这条规则要放在最后,确保前面的允许规则先匹配到:firewall-cmd --add-rich-rule='rule family="ipv4" protocol value="icmp" reject' --permanent重载firewalld使规则生效
firewall-cmd --reload
后续新增指定IP的方法
如果之后要加新的允许IP,只需要重复步骤2的命令,替换成新的IP即可,比如:
firewall-cmd --add-rich-rule='rule family="ipv4" source address="172.16.1.5" icmp-type name="echo-request" accept' --permanent firewall-cmd --reload
验证配置是否生效
- 从IT子网内的机器ping服务器,应该能正常通
- 用监控服务器
10.10.10.10ping服务器,也能正常通 - 用其他未授权的IP ping,会收到「请求超时」或「拒绝连接」的反馈
内容的提问来源于stack exchange,提问作者RunThor
相关产品推荐
相关产品推荐

