菜鸟科技网

Linux防火墙状态命令有哪些?

在Linux系统中,防火墙是保障服务器安全的重要组件,通过合理配置防火墙规则可以有效控制网络流量,防止未授权访问,要查看和管理防火墙状态,需要掌握一系列常用命令,这些命令因Linux发行版的不同而有所差异,主要分为iptables(传统工具)和firewalld(CentOS 7+、RHEL 7+等系统默认使用)两大类。

Linux防火墙状态命令有哪些?-图1
(图片来源网络,侵删)

对于使用iptables的系统,查看防火墙状态的基本命令是sudo iptables -L -n -v,其中-L表示列出规则链,-n以数字形式显示地址和端口(避免DNS解析延迟),-v显示详细信息(如数据包计数、网络接口等),若需查看特定链的规则,可添加链名参数,例如sudo iptables -L INPUT -n -v仅查看输入链规则。sudo iptables -S命令以可读性更高的格式显示规则,适合快速查看规则配置;sudo iptables -L --line-numbers则会为每条规则添加行号,方便后续修改或删除规则,要检查iptables服务是否运行,可使用sudo systemctl status iptablessudo service iptables status(根据系统初始化类型选择)。

对于采用firewalld的系统,命令操作更为直观,查看防火墙当前状态使用sudo firewall-cmd --state,若返回running则表示防火墙已启动,runningnotrunning则显示当前状态,查看详细配置信息需结合多个参数:sudo firewall-cmd --list-all会显示当前激活的zone、接口、服务、端口等完整配置;sudo firewall-cmd --list-services列出允许通过的服务(如ssh、http等);sudo firewall-cmd --list-ports则显示开放的端口号(如8080/tcp),若需查看所有区域(包括未激活区域)的配置,可添加--all-zones参数,例如sudo firewall-cmd --list-all --all-zones,firewalld还支持实时查看日志,通过sudo journalctl -u firewalld可查看防火墙服务的启动日志和错误信息。

以下是常用命令的对比总结:

防火墙工具 命令 功能说明
iptables sudo iptables -L -n -v 列出所有规则链的详细信息(IP、端口、计数等)
iptables sudo iptables -S 以简洁格式显示规则,适合快速查看
iptables sudo iptables -L INPUT --line-numbers 查看输入链规则并显示行号
iptables sudo systemctl status iptables 检查iptables服务运行状态
firewalld sudo firewall-cmd --state 查看防火墙是否运行(返回running/notrunning)
firewalld sudo firewall-cmd --list-all 显示当前激活区域的完整配置
firewalld sudo firewall-cmd --list-services 列出允许通过的服务名称
firewalld sudo firewall-cmd --list-ports 列出开放的端口号(格式如8080/tcp)
firewalld sudo firewall-cmd --list-all --all-zones 显示所有区域的配置信息

在实际操作中,若需临时关闭防火墙(仅用于测试环境),iptables系统可使用sudo iptables -F(清空规则)或sudo systemctl stop iptables(停止服务),firewalld系统则通过sudo firewall-cmd --state确认状态后,执行sudo systemctl stop firewalld,但需注意,生产环境关闭防火墙会极大增加安全风险,建议仅在必要时修改规则而非完全关闭。

Linux防火墙状态命令有哪些?-图2
(图片来源网络,侵删)

相关问答FAQs

Q1: 如何判断当前系统使用的是iptables还是firewalld?
A: 可通过以下方法判断:① 执行sudo systemctl status iptablessudo systemctl status firewalld,查看哪个服务处于激活状态;② 使用which iptableswhich firewall-cmd检查命令是否可用;③ 查看配置文件,如CentOS 7+默认使用firewalld,其规则通常位于/etc/firewalld/目录下,而iptables规则位于/etc/sysconfig/iptables

Q2: 为什么执行sudo iptables -L时显示规则为空,但防火墙状态显示已运行?
A: 可能的原因有两个:① 防火墙规则策略默认为“拒绝所有”,但未配置允许规则,此时-L会显示规则链为空但状态为运行;② 使用了firewalld但误用iptables命令,firewalld底层使用iptables,但直接操作iptables可能导致规则不同步,建议先确认防火墙工具类型,若使用firewalld,应通过sudo firewall-cmd --list-all查看规则,避免命令混用。

Linux防火墙状态命令有哪些?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇