firewalld白名单核心是默认拒绝、精准放行,推荐用rich rule按ip+端口控制或新建zone绑定源ip再开放端口,所有--permanent操作后必须执行firewall-cmd --reload生效,且避免与全局端口放行混用。

确认 firewalld 已启用并运行
先确保服务在工作:
-
启动服务:
sudo systemctl start firewalld -
开机自启:
sudo systemctl enable firewalld -
检查状态:
sudo firewall-cmd --state(返回running才正常)
两种主流白名单方式选一种即可
方式一:按 IP 源 + 端口精细控制(推荐)
适合只开放特定端口给特定 IP(比如只让 192.168.1.5 访问 8080 端口):
- 允许单个 IP 访问指定 TCP 端口:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.5" port protocol="tcp" port="8080" accept' - 允许 IP 段(如 192.168.1.0/24)访问多个端口:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="8080-8090" accept' - 允许某个 IP 访问所有端口(谨慎使用):
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.10" accept'
方式二:按源 IP 绑定到 zone(适合内网多台互信主机)
新建一个专用区域,把白名单 IP 全加进去,再统一开放端口:
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
- 创建新 zone:
sudo firewall-cmd --permanent --new-zone=trusted-intranet - 添加白名单 IP:
sudo firewall-cmd --permanent --zone=trusted-intranet --add-source=192.168.10.10sudo firewall-cmd --permanent --zone=trusted-intranet --add-source=192.168.10.11 - 在该 zone 开放所需端口:
sudo firewall-cmd --permanent --zone=trusted-intranet --add-port=3306/tcpsudo firewall-cmd --permanent --zone=trusted-intranet --add-port=8080/tcp
必须执行的收尾动作
所有带 --permanent 的命令只是写入配置文件,不会立即生效:
-
重载规则:
sudo firewall-cmd --reload(这一步漏了就等于没配) -
验证是否生效:
sudo firewall-cmd --list-all或sudo firewall-cmd --list-rich-rules -
查已生效的源 IP 规则:
sudo firewall-cmd --zone=public --list-sources(如果用了--add-source方式)
特别注意几个坑
这些错误会导致白名单看似配了却无效:
-
别先全局开某端口再加 IP 限制:比如先执行
--add-port=8080/tcp,再加 rich rule,后者会被忽略——因为端口已对所有人开放 -
Docker 容器端口不受 firewalld 管控:若目标端口是 Docker 映射出来的(如 -p 8300:8300),默认规则不生效。需修改
/etc/docker/daemon.json加"iptables": false,再重启 docker - 不要用 public 区域直接设白名单 + 全局放通端口混用:容易冲突。建议用 rich rule 精确控制,或另建 zone 隔离策略










