CentOS 7 Firewalld 基础:端口开放与 IP 白名单配置
在 CentOS 7 系统中,firewalld 是默认的动态防火墙管理器。相比传统的 iptables,它提供了更友好的命令行接口和更灵活的服务管理方式。下面整理了一些日常运维中常用的高频命令,帮助你快速上手。
服务状态与管理
首先确认防火墙是否正在运行,这是排查问题的第一步。
# 查看 firewalld.service 服务状态
systemctl status firewalld
# 查看 firewall 运行状态
firewall-cmd --state
如果服务未启动或需要重置,可以使用以下 systemctl 命令进行控制:
# 启动服务
systemctl start firewalld
# 重启服务
systemctl restart firewalld
# 停止服务
systemctl stop firewalld
查询当前规则
在修改之前,先看看当前的配置情况,避免重复添加或冲突。
# 查看当前所有规则(包含区域、端口、服务等)
firewall-cmd --list-all
# 单独查看端口白名单列表
firewall-cmd --zone=public --list-ports
端口开放与移除
开放端口是最常见的需求。注意区分临时规则和永久规则:不加 --permanent 参数的规则重启后会失效,生产环境务必加上。
# 查询指定端口是否已开放
firewall-cmd --query-port=8080/tcp
# 新建永久规则,开放 8080 端口(TCP 协议),允许任意 IP 访问
firewall-cmd --permanent --add-port=8080/tcp
# 移除上述规则
firewall-cmd --permanent --remove-port=8080/tcp
# 批量开放一段端口(例如 9001 到 9100)
firewall-cmd --permanent --add-port=9001-9100/tcp
重要提示: 添加或删除规则后,必须重新加载防火墙配置才能生效。
# 重新加载配置(推荐,无需中断现有连接)
firewall-cmd --reload
IP 白名单与网段控制
有时候我们需要限制特定来源的访问,比如只允许内网 IP 连接数据库。
# 开放单个源 IP 的访问
firewall-cmd --permanent --add-source=192.168.1.1
# 开放整个源 IP 段(CIDR 格式)
firewall-cmd --permanent --add-source=192.168.1.0/24
# 移除特定 IP 的白名单
firewall-cmd --permanent --remove-source=192.168.1.1
系统服务开放
除了端口,firewalld 也支持预定义的服务名称,这样更直观。
# 开放 http 服务
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --remove-service=http

