在部署Web服务、数据库或自定义应用时,开放防火墙端口是必不可少的一步。尤其是在使用 CentOS 系统(如 CentOS 7 和 CentOS 8)进行服务器配置时,正确管理防火墙规则直接关系到服务能否被外部正常访问。

本文将为你提供一份 2025年最新、最全、最实用的 CentOS 防火墙端口开放教程,涵盖 firewalld 和 iptables 两种主流防火墙工具的使用方法,并附带常见问题排查技巧,助你轻松搞定服务器网络配置。
CentOS 防火墙演变:从 iptables 到 firewalld
在 CentOS 7 发布之前,系统默认使用的是经典的 iptables 防火墙工具。但从 CentOS 7 开始,默认防火墙已切换为 firewalld,它提供了更动态、更友好的管理方式。
✅ CentOS 7 & 8 推荐使用:firewalld
⚠️ iptables 仍可使用,但需手动禁用 firewalld
📌 提示:本文将以
firewalld为主,iptables为辅,确保覆盖所有使用场景。
使用 firewalld 开放端口(推荐方式)
firewalld 是现代 CentOS 系统的标准防火墙管理工具,支持动态更新、区域(zone)管理和丰富的命令行接口。
1. 检查 firewalld 状态
首先确认防火墙是否已启用:
如果未运行,请启动并设置开机自启:
查看防火墙当前状态:
2. 开放指定端口(以 8080 为例)
要永久开放 TCP 8080 端口,请执行以下命令:
📌 参数说明:
--zone=public:作用域为公共网络(默认)--add-port=8080/tcp:添加 TCP 协议的 8080 端口--permanent:永久生效(重启后不丢失)
💡 若只想临时开放(重启失效),请去掉
--permanent参数。
3. 重新加载防火墙规则
添加规则后必须重新加载才能生效:
⚠️ 注意:--reload 不会断开现有连接,是生产环境推荐做法。
4. 验证端口是否已开放
查看当前所有开放的端口:
输出示例:
你也可以查看特定区域的所有规则:
5. 批量开放多个常用端口
例如开放 Web 常用的 80、443 和 SSH 的 22 端口:
6. 删除已开放的端口
若需关闭某个端口,使用 --remove-port:
使用 iptables 开放端口(传统方式)
尽管 firewalld 已成主流,但在某些场景下仍有人偏好使用 iptables。以下是其基本操作流程。
1. 安装并启用 iptables
❗ 重要提醒:如果你使用
iptables,请先禁用 firewalld,避免规则冲突:
2. 添加规则开放端口(如 8080)
📌 参数解释:
-I INPUT:插入到 INPUT 链-p tcp:指定 TCP 协议--dport 8080:目标端口为 8080-j ACCEPT:接受该流量
3. 保存规则(关键步骤!)
CentOS 7 及以下:
CentOS 8(无 service 命令):
4. 查看当前规则
输出将显示所有链的规则列表,便于排查问题。
常见问题与排查技巧
❓ Q1:端口已开放但无法访问?
请依次检查:
SELinux 是否限制服务?
使用sestatus查看 SELinux 状态,必要时临时关闭测试:云服务器安全组是否放行?
如阿里云、腾讯云、AWS 等平台需在控制台额外配置安全组规则。服务是否监听正确 IP?
检查服务是否绑定0.0.0.0而非127.0.0.1:
❓ Q2:如何开放 UDP 端口?
只需将协议改为 udp:
❓ Q3:如何开放端口范围?
例如开放 30000-40000 范围内的 TCP 端口:
最佳实践建议
| 项目 | 建议 |
|---|---|
| 🔐 安全性 | 仅开放必要的端口,避免全端口暴露 |
| 🔄 自动化 | 将防火墙脚本集成到部署流程中 |
| 📋 备份 | 定期备份 /etc/firewalld/ 或 /etc/sysconfig/iptables |
| 🧪 测试 | 每次修改后使用 telnet 或 nc 测试连通性 |
| 工具 | 适用版本 | 推荐度 | 特点 |
|---|---|---|---|
firewalld | CentOS 7+ | ⭐⭐⭐⭐⭐ | 动态更新、易于管理 |
iptables | 所有版本 | ⭐⭐⭐ | 灵活强大,但配置复杂 |
✅ 对于绝大多数用户,强烈推荐使用 firewalld 来管理 CentOS 防火墙。只需几条命令即可完成端口开放,且支持热重载,非常适合生产环境。





















