我的目的是让防火墙允许连接到我在 Centos 上新安装的服务/服务器/守护进程。
我创建/etc/firewalld/services/myservice.xml
文件,然后重新加载防火墙,然后执行:
firewall-cmd --permanent --zone=public --add-service=myservice
返回:
success
myservice
但是在扫描服务器的端口时我仍然看不到端口,直到我这样做:
firewall-cmd --permanent --zone=public --add-port=###/tcp
其中 ### 是我的服务的默认端口。
另一方面,我可以添加端口而不添加服务,我的服务将立即可访问。有人可以向我解释设置防火墙服务(除了端口)的目的吗?(或者(可能)解释我做错了)。
答案1
你可能会困惑服务在 Linux 操作系统和网络意义上都是如此。您安装的是操作系统服务,但需要的firewall-cmd
是网络服务。
您所需的网络服务是分配给为与实现该服务的软件通信而保留的端口号的名称,例如,Web 主机将监听 HTTP 服务端口 80,任何需要访问 Web 主机的浏览器都将通过 Web 主机正在运行的计算机上的此端口进行通信。
要在此计算机上设置 HTTP 防火墙,您可以使用:
firewall-cmd --permanent --zone=public --add-service=http
换句话说,您使用的是网络服务名称,而不是操作系统服务名称,两者没有任何关系。如果您安装的操作系统服务实现了标准网络服务,那么您可以使用 中的网络服务名称--add-service=
;如果它不是标准服务,那么您只能使用数字--add-port=
形式。
您可以找到识别以下项的网络服务firewall-cmd
:
firewall-cmd --list-services
有关港口和服务的更多信息,请参见这里。