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 内置了一些常用服务的规则,例如 http
、https
、ssh
、mysql
、samba
等:
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 |
发表回复