两个防火墙都开启了吗?

准备查看下centos服务器是用的那个防火墙管理工具,结果发现了问题

firewall是开启状态


但是这样看,firewall却是关闭状态,iptables是开启的

到底哪个是开启的,那个是关闭的啊?
新手,求帮助

阅读 1.4k
avatarAI BotBETA

您的问题是关于如何确定 CentOS 服务器上防火墙的状态。根据您提供的截图,这里有两种可能的解释:

首先,第一张图显示 firewalld 是开启状态。firewall-cmd --state 命令返回 running,这表示 firewalld 服务正在运行。

第二张图显示 iptables 规则存在,但这并不直接表示 iptables 防火墙服务本身是开启的。iptables 规则的存在仅仅说明有防火墙规则被定义,但并不一定意味着 iptables 服务正在运行。在 CentOS 中,iptables 通常通过 init.d 脚本或 systemd 服务管理,并且其状态可能与 firewalld 不同。

要确定 iptables 服务是否正在运行,您可以尝试以下命令:

systemctl status iptables

或者,对于 CentOS 7 及以上版本,您可能需要查看 firewalld 是否管理 iptables 规则(因为 firewalld 在后台可以使用 iptablesnftables)。

综上所述,根据第一张图,firewalld 是开启的。至于 iptables,您需要运行上述命令来确认其服务状态。如果 iptables 服务没有运行,那么即使规则存在,它也不会是活跃的防火墙。

如果您的 CentOS 服务器同时安装了 firewalld 和管理 iptables 规则的其他工具(如 iptables-services),则可能存在配置冲突。在这种情况下,您应该决定使用哪一个防火墙管理工具,并相应地配置和启用它,同时确保禁用其他工具以避免潜在的冲突。

一般来说,推荐的做法是:

  1. 如果您的系统安装了 firewalld,则使用 firewall-cmd 来管理防火墙规则,并确保 firewalld 服务正在运行。
  2. 如果您选择不使用 firewalld,而是想直接管理 iptables 规则,那么确保 iptables 服务正在运行,并通过相应的工具或脚本管理规则。

最后,请确保不要同时启用两个防火墙管理工具,因为它们可能会相互干扰并导致不可预测的行为。

2 个回答

systemctl list-unit-files --type=service 这个命令是查看服务是否设置了开机自启, 与当前服务状态无关,你以service firewalld status 显示的为准

查看命令文档man systemctl:

list-unit-files [PATTERN...]

       List installed unit files and their enablement state (as reported by is-enabled). If one or more PATTERNs are specified,
       only units whose filename (just the last component of the path) matches one of them are shown.

这里的list-unit-files展示的状态是服务是否开机自启,systemctl status展示的是当前服务的状态,这两个状态是不一样的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题