在 CentOS7 中使用 firewalld 显示开放端口列表

在 CentOS7 中使用 firewalld 显示开放端口列表

有没有一种简单的方法来显示已使用打开的所有端口的完整列表firewalld

我知道该命令firewall-cmd --list-all,但它只显示服务名称,而不显示这些服务定义为打开的端口。

例如:

[root@myserver log]# firewall-cmd --list-all
  dmz (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources: 
  services: ssh squid my-icap 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

我知道我可以进入每个服务的定义文件来查看它们定义为开放的端口,但似乎应该有一种单行方法来执行此操作,而我只是错过了它。

我不是在寻找netstat:这会告诉我是否有东西正在侦听端口,这与该端口是否可以从另一个主机访问是不同的问题。

答案1

我也一直在寻找这个,目前我想出了这个 bash oneliner

for s in $(firewall-cmd --list-services); do firewall-cmd --permanent --service "$s" --get-ports; done;

对于常规端口,只需使用

$ firewall-cmd --list-ports

要不就

$ firewall-cmd --list-all

答案2

这一行应该适用于直接接口服务和丰富的语言规则,并显示服务名称及其端口号、协议等。

firewall-cmd --list-all | egrep "services|service.*accept" | sed -e 's/.*="\(.*\)".*/\1/g' | sed -e 's/\s\+services:\s\+//g' | tr ' ' '\n' | xargs -I '{}' firewall-cmd --info-service={}

如果您只是想要一些容易记住的东西,即席查找服务的端口定义,那么:

防火墙-cmd --info-service=服务名称

相关内容