事前設定された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

/usr/lib/firewalld/services/この情報(配布管理サービスの場合)および/または/etc/firewalld/services/独自のカスタムサービスを格納するxmlファイルを見つけることができます。

たとえば、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>

これにより、サービスでどのポートを有効にしたかを簡単に見つけることができます。

関連情報