简绍

Firewalld是Linux系统上的一个强大的防火墙解决方案。它是Red Hat公司推出的一款用于替代iptables的新型防火墙软件,是CentOS 7和Fedora 18及以上版本的默认防火墙。它基于D-Bus进行通信,可动态管理网络连接并支持网络地址翻译(NAT)功能。使用firewalld可以轻松地管理网络通信的安全性,包括端口的开放和关闭。


要查看当前系统上已经开放的端口,可以使用firewall-cmd命令进行验证。
firewall-cmd --list-ports
# 输出如下
8080/tcp 5672/tcp
# 也可以添加--zone参数指定查看哪个区域(默认是public),例如:
firewall-cmd --zone=public --list-ports
开放端口
# 开放一个端口需要指定端口号和协议,可以使用以下命令:
firewall-cmd --zone=public --add-port=8080/tcp --permanent

–zone=public指定了这个规则所适用的区域(区域也可以被指定为其他的区域,例如"work","home"等),–add-port=8080/tcp指定了要开放的端口和协议,–permanent则是将这个规则添加到永久存储中,以便于开机后恢复。要应用这些规则,需要重新加载规则,使用以下命令:

firewall-cmd --reload
关闭端口
# 关闭一个端口,可以使用以下命令:
firewall-cmd --zone=public --remove-port=8080/tcp --permanent
# 重新加载规则
firewall-cmd --reload
查看规则
# 可以使用以下命令查看所有的规则,包括开放的端口、禁止的端口等:
firewall-cmd --list-all
如何配置 firewalld 允许特定应用程序通信

创建新的服务定义(如果需要)
首先,检查是否已经存在一个针对你的应用程序的服务定义。你可以使用以下命令列出所有已知的服务:

firewall-cmd --get-services

如果没有找到适用于你应用程序的服务定义,则需要创建一个新的。服务定义是位于 /etc/firewalld/services/ 目录下的 XML 文件。你可以复制一个现有的服务文件作为模板,然后根据需要进行修改。
例如,创建一个新的服务定义文件:

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/myapp.xml

编辑这个新文件 /etc/firewalld/services/myapp.xml,并调整 , , 等标签以匹配你的应用程序需求。
添加服务到 firewalld
如果你已经有了服务定义,或者刚刚创建了一个,接下来需要将其添加到 firewalld 中。

首先,重新加载 firewalld 使新的服务定义生效:

sudo firewall-cmd --reload

然后,添加服务到当前活动的区域(通常为 public 或者 trusted),可以使用如下命令:

sudo firewall-cmd --zone=public --add-service=myapp --permanent

这里,myapp 是你的服务名称,而 --permanent 参数表示此更改在重启后依然有效。
最后,再次重新加载 firewalld 使更改生效:

sudo firewall-cmd --reload

开放端口(可选)
如果应用程序没有特定的服务定义,或者你只是想开放某个端口而不是整个服务,可以直接开放端口。例如,开放 TCP 端口 8080:

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

验证配置
确保一切设置正确无误,可以使用下列命令来查看当前防火墙规则:

sudo firewall-cmd --list-all

这会显示当前激活区的所有规则,包括允许的服务和端口。
通过以上步骤,你应该能够成功配置 firewalld 来允许特定应用程序的通信。记得根据实际的应用程序要求调整端口和服务定义。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐