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

Zhr*_*hro 6 firewall centos systemd firewalld

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

UDP 137 (NetBIOS Name Service)
UDP 138 (NetBIOS Datagram Service)
TCP 139 (NetBIOS Session Service)
TCP 445 (SMB)
Run Code Online (Sandbox Code Playgroud)

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

我可以列出支持的服务:

$ firewall-cmd --get-services
Run Code Online (Sandbox Code Playgroud)

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

有没有办法列出属于这些服务的端口,以便我可以搜索我需要的端口?

Ulr*_*arz 6

您可以找到存储此信息的 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>
Run Code Online (Sandbox Code Playgroud)

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