«

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

常见坑

  1. 只加规则不加 --permanent:当前能访问,但 firewalld 重载或服务器重启后规则丢失,这是最普遍的踩坑点。
  2. 加了 --permanent 却没 reload:永久配置已写入但运行时还没加载,必须执行 firewall-cmd --reload。
  3. 协议别写错:Web 端口是 tcp,写成 udp 无效。
  4. 云服务器还要在安全组放行:firewalld 只管系统内防火墙,阿里云、腾讯云等还要在控制台安全组里开放 80/443。
  5. 端口通了网站仍打不开:还要检查 Nginx/Apache 是否正常监听、SELinux 是否拦截。

总结

开放端口的标准顺序是:firewall-cmd --permanent --add-port=端口/协议 → firewall-cmd --reload → --list-ports 核对。记住“永久配置 + 重载”两步缺一不可,再配合云平台安全组,端口才能真正对外可达。

遇到问题加QQ23979811 协助处理

标签: 防火墙 firewalld CentOS7 开放端口 443端口