firewall-cmd 是 Linux 系统(尤其是基于 RHEL / CentOS / Fedora / Rocky / AlmaLinux 等)中用于管理 firewalld 防火墙 的命令行工具。
下面详细介绍 如何使用 firewall-cmd 开放端口 以及相关命令示例👇


🔥 一、查看防火墙状态

# 查看 firewalld 是否正在运行
sudo systemctl status firewalld

# 启动防火墙
sudo systemctl start firewalld

# 设置开机自启
sudo systemctl enable firewalld


🚪 二、开放端口命令格式

sudo firewall-cmd --zone=public --add-port=<端口号>/<协议> --permanent

  • --zone=public:指定防火墙区域(默认是 public)
  • --add-port=8080/tcp:开放端口号和协议(可选 tcp / udp)
  • --permanent:永久生效(不加该参数则只在当前会话生效)

✅ 三、开放单个端口

例如开放 80(HTTP)端口:

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

开放 443(HTTPS)端口:

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


🔄 四、开放后必须重新加载防火墙

sudo firewall-cmd --reload

否则刚刚添加的规则不会立即生效。


🧱 五、查看当前已开放的端口

sudo firewall-cmd --zone=public --list-ports

输出示例:

80/tcp 443/tcp 8080/tcp


🎯 六、开放一段端口范围

如果你的应用需要连续端口(比如游戏服务器、视频流服务等):

sudo firewall-cmd --zone=public --add-port=3000-3010/tcp --permanent

这会一次性开放 3000 到 3010 的 TCP 端口。


❌ 七、关闭(删除)端口

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


🌐 八、开放常见服务(推荐方式)

firewalld 内置了一些常用服务的规则,例如 httphttpssshmysqlsamba 等:

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload

查看所有可用服务:

sudo firewall-cmd --get-services


🧩 九、查看所有规则(调试用)

sudo firewall-cmd --list-all

输出类似:

public (active)
  target: default
  services: ssh dhcpv6-client http https
  ports: 8080/tcp
  protocols:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:


⚙️ 十、快速总结

操作命令示例
开放端口firewall-cmd --add-port=8080/tcp --permanent
删除端口firewall-cmd --remove-port=8080/tcp --permanent
查看端口firewall-cmd --list-ports
开放服务firewall-cmd --add-service=http --permanent
重载规则firewall-cmd --reload
查看所有规则firewall-cmd --list-all