在firewalld中永久开放指定端口需先启用服务并确认默认zone,再执行--permanent添加端口或服务(如--add-port=8080/tcp或--add-service=https),最后必须--reload重载生效;临时命令不持久,且应优先用服务名、配合rich rule限制ip以保障安全。

在 Firewalld 中永久开放指定端口,核心是两步:写入永久规则 + 重载配置。临时命令(不带 --permanent)重启后失效,不能替代永久操作。
确认 firewalld 正常运行并明确作用域
Firewalld 按 zone 管理规则,默认 zone 通常是 public,但只对绑定到该 zone 的网卡生效:
- 检查状态:sudo systemctl status firewalld,未运行则执行 sudo systemctl start firewalld && sudo systemctl enable firewalld
- 查看默认 zone:sudo firewall-cmd --get-default-zone
- 如需操作其他 zone(如 internal),后续所有命令都必须显式加上 --zone=internal
永久添加端口并立即生效
必须同时完成“永久添加”和“重载”,缺一不可:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 开放单个 TCP 端口(如 8080):sudo firewall-cmd --permanent --add-port=8080/tcp
- 开放 UDP 端口(如 DNS 的 53):sudo firewall-cmd --permanent --add-port=53/udp
- 开放端口范围(如 8000–8010):sudo firewall-cmd --permanent --add-port=8000-8010/tcp
- 重载使规则生效:sudo firewall-cmd --reload
验证是否成功
重载后建议用以下命令交叉核对:
- 列出所有已开放的端口:sudo firewall-cmd --list-ports
- 查看完整规则(含服务、端口、富规则等):sudo firewall-cmd --list-all
- 若只查某端口是否在列表中,可加 grep:sudo firewall-cmd --list-ports | grep 8080
更推荐的方式:优先用服务名而非端口号
Firewalld 内置了 http、https、ssh、mysql 等标准服务定义,自动关联端口、协议及连接跟踪规则,比硬写端口更安全、易维护:
- 列出所有可用服务:sudo firewall-cmd --get-services
- 永久启用 HTTPS(即开放 443/tcp):sudo firewall-cmd --permanent --add-service=https
- 若服务监听非标端口(如 Nginx 在 8081),应创建自定义 service 文件,不建议直接开 8081 端口
- 验证服务是否启用:sudo firewall-cmd --list-services










