宝塔面板自带防火墙打不开,常见原因是系统里已经有一个叫 firewalld 的服务在运行。两个防火墙同时要控 netfilter 规则,就会互相打架,面板自然起不来。我们需要把系统自带的 firewalld 停掉并卸载,再交给宝塔管理。

为什么 firewalld 会和宝塔防火墙冲突
firewalld 是 CentOS 等系统默认带的动态防火墙管理器。宝塔面板防火墙也是基于 iptables 或 nftables 做的封装。当 firewalld 处于 active 状态时,它会持有规则表的修改权,宝塔调用接口就会被拒绝或超时,表现为按钮点了没反应。
检查当前 firewalld 状态
先用 ssh 登录服务器,执行下面命令看服务是不是在跑:
# 查看 firewalld 运行状态 systemctl status firewalld # 如果看到 active (running) 说明正在运行,需要处理后停掉
停止并禁用 firewalld 服务
确认在运行后,依次执行以下命令,停掉服务并禁止开机启动:
# 停止 firewalld 服务 systemctl stop firewalld # 禁止开机自动启动 systemctl disable firewalld # 再次确认状态,应为 inactive systemctl status firewalld
彻底卸载 firewalld
只是停掉还不够,有些环境更新或重启后可能又被依赖拉起。用包管理器卸载更干净:
# CentOS 系卸载命令 yum remove firewalld -y # Ubuntu/Debian 系卸载命令 apt-get remove firewalld -y # 清理可能残留的配置 rm -rf /etc/firewalld
在宝塔面板中启动防火墙
回到宝塔面板,进入安全菜单,点击防火墙开关。此时系统层已经没有冲突服务,通常可以直接变成已开启状态。如果还不行,可重启服务器一次再试。
用命令确认宝塔防火墙生效
面板开启后,可以用 iptables 看规则是否被写入:
# 查看当前规则链,有 bt_ 开头说明宝塔接管了 iptables -L -n | head -20
常见问题处理
- 执行 yum 提示没有权限:请使用 root 用户或在命令前加 sudo。
- 卸载后服务器连不上:说明原先依赖 firewalld 放了端口,需在宝塔里重新放行 SSH 等端口。
- 面板仍报错:尝试在宝塔终端执行
bt然后选修复面板。
注意:操作前最好给服务器打快照,避免误删规则导致无法远程登录。
小结
宝塔防火墙起不来,核心就是系统 firewalld 没让位。按上面的步骤停服务、禁启动、卸载并清配置,再开面板防火墙就能解决。平时不建议两个防火墙同时开,选一个管好就行。