CentOS7 firewalld开放80 443端口永久生效命令
时间:2026-11-14 07:39 作者:emer 分类: 无
CentOS7 默认使用 firewalld 作为防火墙管理工具,相比老版本的 iptables 服务,它把端口管理拆成了“永久配置(permanent)”和“当前生效(runtime)”两层。很多新手只加了规则却没加 --permanent,重启后端口又被封掉,这就是“开放端口不生效”的最常见原因。本文给出一套可直接复制的完整命令。
一、查看 firewalld 状态
先确认防火墙是否在运行:
systemctl status firewalld
firewall-cmd --state
输出 running 表示正在运行;如果是 not running,先启动并设置开机自启:
systemctl start firewalld
systemctl enable firewalld
二、开放 80、443 端口(永久生效)
推荐用 --permanent 写入永久规则,再 reload 让其立即生效:
# 开放单个端口
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
# 重载规则,使永久配置立即生效
firewall-cmd --reload
也可以一次性开放多个端口:
firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcp
firewall-cmd --reload
三、通过服务名开放(更简洁)
firewalld 内置了 http、https 服务定义,可以直接按服务开放:
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
四、查看已开放的端口和服务
# 查看永久配置里开放的端口
firewall-cmd --permanent --list-ports
# 查看永久配置里开放的服务
firewall-cmd --permanent --list-services
# 查看当前运行时生效的全部规则
firewall-cmd --list-all
五、移除端口(不需要时)
firewall-cmd --permanent --remove-port=443/tcp
firewall-cmd --reload
常见坑
- 只加规则不加 --permanent:当前能访问,但 firewalld 重载或服务器重启后规则丢失,这是最普遍的踩坑点。
- 加了 --permanent 却没 reload:永久配置已写入但运行时还没加载,必须执行 firewall-cmd --reload。
- 协议别写错:Web 端口是 tcp,写成 udp 无效。
- 云服务器还要在安全组放行:firewalld 只管系统内防火墙,阿里云、腾讯云等还要在控制台安全组里开放 80/443。
- 端口通了网站仍打不开:还要检查 Nginx/Apache 是否正常监听、SELinux 是否拦截。
总结
开放端口的标准顺序是:firewall-cmd --permanent --add-port=端口/协议 → firewall-cmd --reload → --list-ports 核对。记住“永久配置 + 重载”两步缺一不可,再配合云平台安全组,端口才能真正对外可达。
遇到问题加QQ23979811 协助处理