在安装某些应用程序或使用其他设备访问系统内部服务时,我们可能需要打开网络端口。端口是由软件层定义的通信端点,用于标识和访问特定的进程或网络服务类型。例如,SSH(Secure Shell Protocol)服务的默认端口是 22,我们可以通过它远程控制任何特定计算机。同样,CPanel、NextCloud、Apache 等各种工具和软件都有自己的端口号。然而,如果您安装了防火墙,那么大多数端口默认会被阻止,我们需要先打开它们才能进行通信。假设您想在 AlmaLinux 8 上打开 80 或 443 端口,以下是如何操作的教程。安装和启动 firewalld
确保 firewalld 已安装并正在运行是打开和关闭端口之前的重要步骤。检查 firewalld 是否运行
sudo systemctl status firewalld
如果未运行,请使用以下命令启动并启用 firewalld:sudo systemctl start firewalldsudo systemctl enable firewalld
如果尚未安装 firewalld,可以运行以下命令进行安装:sudo dnf updatesudo dnf install firewalld
列出所有已打开的端口和服务
在打开特定端口之前,最好确认它尚未在 firewalld 中激活,并且未被允许通过公共连接访问。运行以下命令:sudo firewall-cmd --list-all
此命令将列出当前防火墙配置中的所有开放端口和服务,以及允许通过公共网络访问的规则。如果某个端口或服务未列出,则表示它未被开放。打开端口或服务
firewalld 提供了一些预配置的服务,这些服务的端口默认允许公共通信。例如,SSH、Plex、Cockpit 等。您可以使用以下命令查看所有此类服务的列表:firewall-cmd --get-services
要打开一个预定义的服务(如 HTTP 或 OpenVPN),请使用以下命令语法,将service-name替换为您要打开的服务名称:sudo firewall-cmd --zone=public --permanent--add-service=service-name
sudo firewall-cmd --zone=public --permanent--add-service=openvpn
如果要打开的端口未预先定义在 firewalld 中,您可以手动打开它们。将type-port-number替换为您要打开的端口号,并根据需要将 TCP 替换为 UDP:sudo firewall-cmd --zone=public --permanent--add-port=type-port-number/tcp
sudo firewall-cmd --zone=public --permanent--add-port=3602/tcp
重新加载防火墙配置
虽然重新加载防火墙配置并非绝对必要,但为了确保防火墙已成功刷新之前的设置并识别新添加的服务或端口,建议重新加载防火墙服务:sudo firewall-cmd --reload
您可以通过列出所有开放的端口和服务来检查端口或服务是否已成功激活:关闭或阻止端口/服务
要关闭或阻止已打开的端口或服务,可以使用与打开它们时相同的命令,只是将add替换为remove。列出所有开放的端口和服务
sudo firewall-cmd --list-all
关闭端口
要关闭特定端口,使用以下命令语法,将type-number替换为您要关闭的端口号:sudo firewall-cmd --zone=public --permanent--remove-port=type-number/tcp
sudo firewall-cmd --zone=public --permanent--remove-port=443/tcp
阻止服务
要阻止特定服务,使用以下命令语法,将service-name替换为您要阻止的服务名称:sudo firewall-cmd --zone=public --permanent--remove-service=service-name
sudo firewall-cmd --zone=public --permanent--remove-service=ssh
重新加载防火墙配置
sudo firewall-cmd --reload
通过上述步骤,您不仅可以检查 AlmaLinux(包括 Rocky、CentOS 或 RHEL 8)上已打开的端口和服务,还可以根据需要允许或阻止它们与外部通信。firewalld 提供了强大的功能来管理防火墙规则,确保您的系统安全。