«

CentOS7 firewalld开放80、443端口永久生效命令

时间:2026-10-5 07:23     作者:emer     分类: 无


前言

刚装好 CentOS7 服务器,部署完 Nginx 网站后,外网却访问不了?十有八九是防火墙没放行端口。CentOS7 默认用 firewalld 代替了旧版的 iptables,很多刚接触的朋友不太熟悉操作。本文就详细讲解如何在 CentOS7 上永久开放 80、443 等常用端口,以及操作中容易踩的坑。

操作步骤

1. 检查 firewalld 运行状态

首先确认防火墙服务是否正在运行:

systemctl status firewalld

如果显示 active (running) 说明防火墙已启动。如果没启动,先启动它:

systemctl start firewalld
systemctl enable firewalld

2. 查看当前已开放的端口

firewall-cmd --list-ports

这个命令会列出当前防火墙放行的所有端口。

3. 永久开放 80 端口

firewall-cmd --permanent --add-port=80/tcp

参数说明:

4. 永久开放 443 端口

firewall-cmd --permanent --add-port=443/tcp

5. 同时开放多个端口

如果需要一次性开放多个端口,可以这样写:

firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcp --add-port=8080/tcp

6. 开放端口范围

如果要开放一整段端口,比如 3000 到 4000:

firewall-cmd --permanent --add-port=3000-4000/tcp

7. 重载防火墙使配置生效

修改完规则后,必须重载才能生效:

firewall-cmd --reload

8. 验证端口是否开放成功

firewall-cmd --list-ports

如果输出里能看到 80/tcp 443/tcp 就说明开放成功了。

9. 移除开放的端口(如果需要)

firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --reload

常见坑

坑1:忘了加 --permanent 参数

很多朋友执行了 firewall-cmd --add-port=80/tcp,当时测试是通的,但重启服务器或者重启防火墙后就又不通了。原因就是没加 --permanent,这种方式只是临时生效,重启后规则丢失。

解决: 开放端口时一定要加 --permanent 参数,然后执行 firewall-cmd --reload 重载配置。

坑2:改完规则忘了 reload

执行完 --add-port 后,规则只是写入了配置文件,还没有真正生效。必须执行 firewall-cmd --reload 才能让新规则生效。

坑3:以为开放了端口就一定能访问

防火墙只是第一道关卡。如果网站还是访问不了,还要检查:

  1. Nginx/Apache 是否启动并监听了对应端口
  2. 安全组(云服务器)是否也放行了端口
  3. 服务器内部的应用是否正常运行

坑4:用了 iptables 命令却不生效

CentOS7 默认是 firewalld 管理防火墙,如果你用 iptables 命令添加规则,firewalld 重启后会把规则覆盖掉。要么用 firewalld 命令,要么先关掉 firewalld 再用 iptables。

总结

CentOS7 开放端口的核心命令就是三步:

  1. firewall-cmd --permanent --add-port=端口号/tcp 添加规则
  2. firewall-cmd --reload 重载生效
  3. firewall-cmd --list-ports 验证结果

记住 --permanent 和 --reload 这两个关键点,90% 的问题都能解决。

遇到问题加QQ23979811 协助处理

标签: firewalld CentOS7 开放端口 80端口 443端口