让 firewalld 允许 ping 请求

use*_*152 5 linux ping centos-7 firewalld

在 CentOS 7 上,我安装并设置了 firewalld,如下所示:

  1. 将 ssh 服务永久添加到 drop zone ( sudo firewall-cmd --zone=drop --permanent --add-service=ssh)
  2. 将 drop zone 设为默认 zone,以便丢弃所有非 ssh 请求 ( sudo firewall-cmd --set-default-zone=drop)

我采用了上述方法,因为我想删除除我配置的请求(ssh、http 等)之外的所有传入请求。但是,我发现我无法再 ping CentOS 服务器,我相信这是因为默认区域被删除。

我的问题很简单。任何人都可以说明我如何编辑拖放区的配置,以便它允许我从外部 ping 服务器?

非常感谢。我是防火墙、网络等方面的新手,但我希望这对某人来说是一个容易回答的问题:)

小智 9

我意识到这已经存在了一段时间了,但我发现了它,其他人也可能发现了,所以我将添加我认为更清晰的答案。红帽有一篇关于此的好文章:管理 icmp 请求

将目标切换到 DROP 后,我将点击此处使用的基本命令:

firewall-cmd --permanent --add-icmp-block-inversion
firewall-cmd --permanent --add-icmp-block=echo-reply
firewall-cmd --permanent --add-icmp-block=echo-request
firewall-cmd --reload
Run Code Online (Sandbox Code Playgroud)

第一个命令将 icmp-block 的含义更改为 icmp-allow。之后,您只需列出您想要允许的 icmp 类型。您可以通过以下方式获取所有类型的列表:

firewall-cmd --get-icmptypes
Run Code Online (Sandbox Code Playgroud)

您可能还希望允许其他一些事情(特别是对于 IPv6)。

对于跟踪路由:

firewall-cmd --permanent --add-icmp-block=time-exceeded
firewall-cmd --permanent --add-icmp-block=port-unreachable
Run Code Online (Sandbox Code Playgroud)

对于 mtu 发现:

firewall-cmd --permanent --add-icmp-block=fragmentation-needed
firewall-cmd --permanent --add-icmp-block=packet-too-big
Run Code Online (Sandbox Code Playgroud)

对于动态 IPv6 环境:

firewall-cmd --permanent --add-icmp-block=neighbour-solicitation
firewall-cmd --permanent --add-icmp-block=neighbour-advertisement
firewall-cmd --permanent --add-icmp-block=router-advertisement
firewall-cmd --permanent --add-icmp-block=router-solicitation
Run Code Online (Sandbox Code Playgroud)


use*_*152 6

将以下“iptables”规则添加到 firewalld

firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p icmp -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
sudo systemctl restart firewalld.service
Run Code Online (Sandbox Code Playgroud)