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

Dav*_*gan 8 centos 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: 
Run Code Online (Sandbox Code Playgroud)

我知道我可以进入这些服务中的每一个的定义文件,以查看它们将哪些端口定义为开放端口,但似乎应该有一种单行方式来执行此操作,而我只是缺少它。

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

小智 13

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

for s in $(firewall-cmd --list-services); do firewall-cmd --permanent --service "$s" --get-ports; done;
Run Code Online (Sandbox Code Playgroud)

对于常规端口,只需使用

$ firewall-cmd --list-ports
Run Code Online (Sandbox Code Playgroud)

要不就

$ firewall-cmd --list-all
Run Code Online (Sandbox Code Playgroud)