今天遇到了防火墙不生效的问题,检查后发现firewalld服务启动失败,重装firewalld不管用,因为firewalld只是一个iptables的前端控制器,它提供了命令行与图形界面。

由于firewalld启动失败导致防火墙规则不生效,所有端口都将暴露在公网上,这将造成安全隐患,所以说该问题的解决刻不容缓,本文将记录笔者是如何重置firewalld的。

观前提醒

如果你无法在防火墙端口全部关闭的情况下操作你的服务器,重置firewalld后你将永远无法连接到服务器,因为防火墙重置后默认不开放任何端口。

请确保你能使用VNC或显示器直接登录到服务器后台

清除规则

首先需要删除firewalld下的zones文件夹。

执行rm -rf /etc/firewalld/zones命令,或者rm -rf /usr/etc/firewalld/zones

这取决于你的操作系统,请先确认该文件夹的位置。

然后输入以下命令

iptables -X
iptables -F
iptables -Z

最后重新启动firewalld

systemctl restart firewalld

一般来说这样操作后你将获得一个崭新的防火墙规则和区域。

如果firewalld启动时卡住,则你可以尝试以下命令。

强制关闭firewalld

pkill -f firewalld

启动firewalld并检查状态

firewall-cmd --state
systemctl start firewalld
firewall-cmd --state

至此,防火墙重置完毕,关于如何添加防火墙规则请移步这篇文章:https://www.hash070.top/archives/firewalld-note.html

Q.E.D.