在CentOS 7里,默认启用的防火墙工具就是firewalld。要做白名单,得走它自己的原生命令这条路:要么用--add-rich-rule把源IP和端口绑定起来,要么新建自定义zone,加入source后再放行业务所需服务。反过来说,直接手动改iptables文件,或者临时执行iptables命令,基本都不靠谱,因为firewalld会动态接管并覆盖这些规则。

CentOS 7怎么设置防火墙白名单

firewalld 是 CentOS 7 默认启用的防火墙管理工具,直接用 iptables 命令或编辑 /etc/sysconfig/iptables 文件**大概率失效**——因为 firewalld 会动态接管规则链,手动写的 iptables 规则在 reload 或重启后会被覆盖或清空。 所以,设置白名单必须走 firewalld 的原生路径,否则白名单形同虚设。

firewalld rich rule 白名单:只允特定 IP 访问指定端口

这是最常用、也最安全的白名单方式。核心是用 --add-rich-rule 显式绑定源地址 + 协议 + 端口,避免全局开放端口后再加限制(那种写法无效)。

firewalld zone + source 白名单:按 IP 段划分信任区域

适合内网多台机器统一授信场景。把白名单 IP 归入一个自定义 zone(比如 trusted),再给该 zone 开放服务,比逐条写 rich rule 更易维护。

误用 iptables 导致白名单失效的典型现象

很多人改完 /etc/sysconfig/iptablessystemctl restart iptables,却发现规则没生效,甚至 SSH 都连不上。根本原因不是语法错,而是冲突:

验证白名单是否真正生效

别只信 firewall-cmd --list-all 输出里有 rich rule 就算成功。真实验证要分两步:

真正起作用的白名单,从来不是“加一条规则”就完事。它依赖规则顺序、zone 绑定、服务依赖关系,以及是否和其他网络组件(Docker、keepalived、ipvs)产生隐式冲突。最稳妥的做法,是只用 firewalld 原生命令管理,全程避免混用 iptables 命令或直接编辑规则文件。
本文转载于:https://www.php.cn/faq/2977503.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。