Linux 使用 firewalld :开放端口与常用操作指南
目录
一、firewalld 服务管理 (systemctl)
二、管理端口开放
开放端口 (永久生效)
关闭端口 (永久生效):
重新加载防火墙规则 (应用更改):
三、查看防火墙信息
查询特定端口是否在指定区域开放:
查看当前区域 (public 为例) 开放的所有端口:
查看当前区域 (public 为例) 允许的服务:
一、firewalld 服务管理 (systemctl
)
启动防火墙服务:systemctl start firewalld.service
停止防火墙服务:systemctl stop firewalld.service
重启防火墙服务:systemctl restart firewalld.service
查看防火墙服务状态:systemctl status firewalld.service
设置防火墙开机自动启动:systemctl enable firewalld.service
禁止防火墙开机自动启动:systemctl disable firewalld.service
检查防火墙服务是否设置为开机启动:systemctl is-enabled firewalld.service
查看系统中所有已启用的服务:systemctl list-unit-files | grep enabled
查看启动失败的服务:systemctl --failed
二、管理端口开放
-
开放端口 (永久生效)
firewall-cmd --zone=public --add-port=端口号/协议 --permanent
--zone=public
: 指定规则应用的区域(常用public
区域)。
--add-port=80/tcp
: 示例,开放 TCP 协议的 80 端口。替换80
为你的实际端口号,tcp
为udp
或tcp
。
--permanent
: 关键参数,使规则在防火墙重启或系统重启后依然有效。省略此参数,规则将在下次重载防火墙或重启服务时丢失。
-
关闭端口 (永久生效):
firewall-cmd --zone=public --remove-port=端口号/协议 --permanent
-
重新加载防火墙规则 (应用更改):
firewall-cmd --reload
重要提示: 在添加或移除规则(特别是使用了
--permanent
参数后),必须执行此命令才能使更改生效(立即生效但不会中断现有连接)。
三、查看防火墙信息
-
查询特定端口是否在指定区域开放:
firewall-cmd --zone=public --query-port=端口号/协议
-
返回
yes
表示开放,no
表示未开放。
-
-
查看当前区域 (
public
为例) 开放的所有端口:firewall-cmd --zone=public --list-ports
-
查看当前区域 (
public
为例) 允许的服务:firewall-cmd --zone=public --list-services
每个预定义服务(如
ssh
,http
,https
)对应/usr/lib/firewalld/services/
目录下的一个 XML 文件,通常包含一个或多个端口/协议定义。使用服务名比直接管理端口更规范。