首先确认firewalld服务是否处于运行状态,这是防火墙功能正常的基础。使用以下命令查看服务状态:
sudo systemctl status firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
通过以下命令查看当前生效的防火墙配置(包括开放端口、允许的服务、区域设置等),确认是否符合预期:
sudo firewall-cmd --list-all
重点检查:
public)是否正确;http、https、ssh)。若业务无法访问,需检查目标端口是否被防火墙阻挡。使用以下命令查看指定端口是否开放:
sudo firewall-cmd --query-port=<端口号>/<协议> # 如--query-port=80/tcp
sudo firewall-cmd --permanent --add-port=80/tcp # 永久生效
sudo firewall-cmd --reload # 重新加载配置使更改生效
SELinux(安全增强型Linux)可能与防火墙冲突,导致合法流量被拦截。使用以下命令查看SELinux状态:
getenforce
sudo setenforce 0
/etc/selinux/config),将SELINUX=enforcing改为SELINUX=permissive,并重启系统使更改永久生效。防火墙规则正确但业务仍无法访问,需确认业务服务本身是否运行正常。使用以下命令检查服务状态(以SSH为例):
sudo systemctl status sshd
sudo systemctl start sshd
sudo systemctl enable sshd
若以上步骤无法解决故障,可通过系统日志获取详细错误信息。使用以下命令查看firewalld日志:
sudo journalctl -u firewalld
或查看特定服务日志(如SSH):
sudo journalctl -u sshd
日志中会记录防火墙拦截的具体原因(如端口被拒绝、规则冲突等),帮助进一步排查。
firewalld的正常运行依赖于dbus和polkit服务。使用以下命令检查依赖服务状态:
sudo systemctl status dbus
sudo systemctl status polkitd
sudo systemctl start dbus
sudo systemctl start polkitd
sudo systemctl enable dbus
sudo systemctl enable polkitd
若防火墙服务持续异常(如无法启动、规则无法应用),可尝试重新安装firewalld:
sudo yum remove -y firewalld # 卸载现有防火墙
sudo yum install -y firewalld # 重新安装
sudo systemctl start firewalld # 启动服务
sudo systemctl enable firewalld # 设置开机自启
重新安装前建议备份重要配置(如/etc/firewalld/目录下的自定义规则)。