在 OpenEuler 中使用 firewalld
开放指定端口的操作步骤如下,需区分临时开放(重启后失效)和永久开放(重启后保留)两种场景:
一、查询端口当前状态
首先确认端口是否已开放,避免重复配置:
# 格式:firewall-cmd --query-port=端口号/协议(tcp/udp)
firewall-cmd --query-port=8080/tcp # 示例:查询8080端口(TCP协议)
- 返回
yes
表示已开放,no
表示未开放。
二、临时开放端口(即时生效,重启后失效)
适用于临时测试场景,无需重启防火墙,但重启 firewalld
服务或服务器后规则会丢失:
# 格式:firewall-cmd --zone=public --add-port=端口号/协议
firewall-cmd --zone=public --add-port=8080/tcp # 示例:临时开放8080端口(TCP)
--zone=public
:指定作用域为公共区域(默认常用区域,可省略)。- 如需开放 UDP 端口,将
tcp
替换为udp
即可(如8080/udp
)。
三、永久开放端口(需重载生效,重启后保留)
适用于生产环境,规则会保存到配置文件,重启后不丢失,但需要手动重载配置才能立即生效:
# 格式:firewall-cmd --zone=public --add-port=端口号/协议 --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent # 示例:永久开放8080端口(TCP)
关键步骤:重载配置使永久规则生效
永久配置添加后,必须执行以下命令让规则立即生效:
firewall-cmd --reload # 重载防火墙配置
四、验证端口是否成功开放
# 再次查询端口状态
firewall-cmd --query-port=8080/tcp # 应返回 yes# 或列出所有已开放的端口(包括临时和永久生效的)
firewall-cmd --list-ports
五、额外操作:开放端口范围 / 移除端口
开放端口范围(如开放 1000-2000 之间的所有 TCP 端口):
# 临时开放 firewall-cmd --add-port=1000-2000/tcp # 永久开放(需重载) firewall-cmd --add-port=1000-2000/tcp --permanent && firewall-cmd --reload
移除已开放的端口:
# 移除临时开放的端口 firewall-cmd --remove-port=8080/tcp # 移除永久开放的端口(需重载) firewall-cmd --remove-port=8080/tcp --permanent && firewall-cmd --reload
核心要点总结
firewalld
区分运行时配置(临时,--permanent
不加)和永久配置(--permanent
加)。- 永久配置必须通过
firewall-cmd --reload
重载后才会生效。 - 操作后务必通过
--query-port
或--list-ports
验证结果,避免配置遗漏。