firewalld防火墙配置最全实用命令指南
🖼️ 运维日常· 2026-08-10 22:42 · 7

firewalld防火墙配置最全实用命令指南

本文针对 CentOS 7、8、9 系统默认的 firewalld 防火墙工具,整理一套极简、实用、可直接复制使用的配置命令大全。涵盖防火墙状态查看、启停自启、端口放行/移除、服务放行、IP访问控制、规则查询等核心常用操作,附带常用端口对照表及常见问题排错方案,同时补充 CentOS 6 iptables 备用命令,适合服务器日常运维、建站环境配置、安全防护设置等场景,帮助运维人员快速完成防火墙配置,规避配置不生效、端口放行无效等常见问题。

目录

前言

在 CentOS 服务器运维中,防火墙是保障服务器网络安全的核心防线。CentOS 7 及以上版本(7/8/9)彻底摒弃了传统的 iptables,默认采用 firewalld 作为动态防火墙管理工具,支持动态规则更新,无需重启服务即可生效,操作更加便捷高效。

很多新手运维人员常遇到端口放行不生效、规则配置混乱、不知道永久/临时规则区别等问题。本文汇总生产环境最常用、最高频的 firewalld 命令,无冗余内容,全部可直接复制执行,适配日常服务器建站、项目部署、安全防护等所有场景。

注:CentOS 6 及更早版本默认使用 iptables,文末附备用命令,可按需查阅。

一、防火墙基础状态查看

日常运维中,配置防火墙前需先确认防火墙当前运行状态,避免重复操作或配置失效。

bash 复制代码
# 快速查看防火墙运行状态(running/not running)
firewall-cmd --state

# 查看防火墙详细状态(包含启动、自启、日志等完整信息)
systemctl status firewalld

二、防火墙启停、重启与开机自启配置

该组命令用于控制防火墙服务状态,区分临时关闭和永久关闭,适配不同运维场景需求。

bash 复制代码
# 启动防火墙
systemctl start firewalld

# 临时关闭防火墙(重启服务器后自动恢复开启状态)
systemctl stop firewalld

# 重启防火墙服务
systemctl restart firewalld

# 设置防火墙开机自启(服务器开机自动运行防火墙)
systemctl enable firewalld

# 关闭防火墙开机自启(永久关闭,重启后防火墙默认关闭)
systemctl disable firewalld

三、核心操作:端口放行(临时+永久)

端口放行是防火墙最常用操作,分为临时生效和永久生效两种模式,核心区别:临时规则服务器重启后失效,永久规则需重载生效、永久保存。

1. 临时开放端口(重启失效,临时测试使用)

bash 复制代码
# 单独开放80端口(HTTP服务)
firewall-cmd --add-port=80/tcp

# 单独开放443端口(HTTPS服务)
firewall-cmd --add-port=443/tcp

# 批量开放端口范围(1000‑2000所有TCP端口)
firewall-cmd --add-port=1000-2000/tcp

2. 永久开放端口(生产环境推荐,需重载生效)

bash 复制代码
# 永久开放SSH 22端口(远程连接必备)
firewall-cmd --permanent --add-port=22/tcp

# 永久开放网站常用80、443端口
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp

# 关键命令:重载防火墙,让永久规则立即生效
firewall-cmd --reload

四、端口移除关闭规则

当服务下线、端口不再使用时,可通过以下命令移除已放行的端口,同样区分临时和永久模式。

bash 复制代码
# 临时移除80端口放行
firewall-cmd --remove-port=80/tcp

# 永久移除80端口放行
firewall-cmd --permanent --remove-port=80/tcp

# 重载生效
firewall-cmd --reload

五、服务级放行(比端口更简洁高效)

firewalld 支持直接放行服务名称,无需记忆对应端口号,系统内置常用服务端口映射,配置更简单、不易出错,推荐优先使用。

bash 复制代码
# 放行HTTP网站服务(默认对应80端口)
firewall-cmd --permanent --add-service=http

# 放行HTTPS加密网站服务(默认对应443端口)
firewall-cmd --permanent --add-service=https

# 放行SSH远程连接服务(默认对应22端口)
firewall-cmd --permanent --add-service=ssh

# 移除HTTP服务放行
firewall-cmd --permanent --remove-service=http

# 重载使所有规则生效
firewall-cmd --reload

六、查看防火墙已配置所有规则

配置完成后,可通过以下命令核查规则是否配置成功,排查配置遗漏、错误等问题。

bash 复制代码
# 查看当前生效的所有防火墙规则
firewall-cmd --list-all

# 单独查看已放行的所有端口
firewall-cmd --list-ports

# 单独查看已放行的所有服务
firewall-cmd --list-services

# 查看所有永久保存的规则(重启不丢失)
firewall-cmd --permanent --list-all

七、IP精准访问控制(放行/禁止指定IP)

生产环境中为提升服务器安全性,可精准限制IP访问权限,仅允许内网/指定IP访问,禁止陌生IP连接服务器。

bash 复制代码
# 放行指定网段:允许192.168.1.0/24内网所有IP访问服务器全部端口
firewall-cmd --permanent --add-source=192.168.1.0/24

# 禁止指定IP:拒绝192.168.1.100访问服务器所有端口
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' reject"

# 重载规则生效
firewall-cmd --reload

八、服务器常用端口速查表

整理运维、建站常用服务端口,方便快速配置放行规则:

  • 22/tcp:SSH 远程连接服务(服务器登录必备)
  • 80/tcp:HTTP 明文网站服务
  • 443/tcp:HTTPS 加密网站服务
  • 3306/tcp:MySQL 数据库服务
  • 5432/tcp:PostgreSQL 数据库服务
  • 6379/tcp:Redis 缓存服务
  • 8080/tcp:Tomcat 服务、Web备用端口

九、常见问题快速排错

整理90%运维都会遇到的防火墙问题,快速定位解决:

  1. 规则修改后不生效:所有永久规则配置、修改、删除后,必须执行 firewall-cmd --reload 重载生效
  2. 永久规则不保存:需要长期生效的规则,必须添加 --permanent 参数,否则重启失效
  3. 端口放行后仍无法访问:
    • 检查服务器对应服务是否正常启动、监听端口
    • 云服务器(阿里云/腾讯云/华为云)需同步放行控制台安全组,防火墙放行+安全组放行双重生效

十、备用:CentOS 6 iptables 基础命令

CentOS 6 无 firewalld 工具,默认使用 iptables 防火墙,附上极简备用命令,适配老旧服务器维护:

bash 复制代码
# 查看所有防火墙规则
iptables -L -n

# 放行80端口TCP访问
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# 保存防火墙规则(防止重启失效)
service iptables save

# 启停防火墙服务
service iptables start
service iptables stop

总结

firewalld 作为 CentOS 新版系统的默认防火墙工具,操作简洁、动态灵活,是服务器安全运维的基础工具。日常配置优先使用 服务放行 替代端口放行,减少配置出错概率;生产环境务必使用 --permanent 永久规则+重载生效,同时配合云服务器安全组,双重保障服务器网络安全。本文所有命令均经过实战验证,可收藏留存,适配绝大多数 CentOS 服务器防火墙配置场景。