如何获取属于预配置的firewall-cmd服务的端口列表?

如何获取属于预配置的firewall-cmd服务的端口列表?

我想在 CentOS 7 防火墙中打开以下端口:

UDP 137 (NetBIOS Name Service)
UDP 138 (NetBIOS Datagram Service)
TCP 139 (NetBIOS Session Service)
TCP 445 (SMB)

我可以猜测服务名称包括sambaTCP 445,但我不知道其他端口是否预先配置了服务名称。

我可以列出支持的服务:

$ firewall-cmd --get-services

但这并没有告诉我哪些端口配置了服务。

有没有一种方法可以列出哪些端口属于这些服务,以便我可以 grep 找到我需要的端口?

答案1

您可以找到存储此信息的 xml 文件/usr/lib/firewalld/services/(对于发行版管理的服务)和/或/etc/firewalld/services/您自己的用户定义的服务。

例如,samba.xml读取(在我的centos7上):

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Samba</short>
  <description>This option allows you to access and participate in Windows file and printer sharing networks. You need the samba package installed for this option to be useful.</description>
  <port protocol="udp" port="137"/>
  <port protocol="udp" port="138"/>
  <port protocol="tcp" port="139"/>
  <port protocol="tcp" port="445"/>
  <module name="nf_conntrack_netbios_ns"/>
</service>

因此很容易发现该服务启用了哪些端口。

相关内容