cmd如何查看防火墙状态
在 Windows 系统中,可通过 `netsh advfirewall show allprofiles` 命令全面查看防火墙各配置文件(域、专用、公用)的当前启用状态与规则摘要;而在 CentOS 7 及更新版本中,则统一使用 `firewall-cmd --state` 获取底层 firewalld 服务的运行状态。前者直接反映系统级安全策略的实际生效情况,后者则精准反馈守护进程是否活跃——两类命令均源自各自操作系统的官方管理框架,参数设计严谨,执行结果稳定可复现。实际应用中,建议优先以管理员权限运行 CMD 或 root 权限调用终端,确保输出信息完整无截断,避免因权限不足导致状态误判。
一、Windows 系统下查看防火墙状态的完整操作流程
以管理员身份运行命令提示符是前提,点击“开始”菜单,搜索“cmd”,右键选择“以管理员身份运行”。输入 `netsh advfirewall show allprofiles` 后回车,系统将逐项列出域配置文件、专用配置文件、公用配置文件的当前状态(开启/关闭)、所启用的规则集数量、默认入站/出站操作,以及是否启用通知。若需进一步确认某类配置文件的详细规则,可执行 `netsh advfirewall firewall show rule name=all`,该命令会输出全部已启用和已禁用的防火墙规则名称、方向、协议、端口及操作动作,便于排查特定服务是否被拦截。注意:`netsh firewall` 命令在 Windows 10 及以后版本中已被弃用,仅兼容旧版脚本,实际诊断中务必使用 `netsh advfirewall` 子命令,否则可能返回“命令未识别”的错误提示。
二、Linux(CentOS/RHEL 7+)中 firewalld 状态核查方法
在 root 权限终端中,首先执行 `firewall-cmd --state`,返回 “running” 表示 firewalld 服务正在运行,“not running” 则说明服务已停止。为验证实际策略是否生效,需补充执行 `firewall-cmd --get-active-zones` 查看当前激活的网络区域(如 public、home),再通过 `firewall-cmd --zone=public --list-all` 获取该区域的接口绑定、服务白名单、端口开放列表及富规则详情。若需检查是否加载了自定义 icmptype 或端口转发配置,可追加 `--list-icmptypes` 或 `--list-forward-ports` 参数。所有命令均基于 systemd 与 firewalld 的官方接口规范,输出内容与图形化工具 firewall-config 完全一致,具备强一致性与可审计性。
三、跨平台状态验证的实用建议
建议将两类命令组合使用:在双系统或混合运维环境中,先用 `systemctl is-active firewalld`(Linux)与 `sc query mpssvc`(Windows)分别确认底层服务进程状态,再调用上述高级命令获取策略层信息。每次执行后应记录返回值,例如 Windows 下若显示 “State: ON” 但某端口仍不通,需进一步检查应用层规则优先级;Linux 下若 `--state` 返回 running 但 `--list-all` 为空,则说明当前区域未配置任何规则,默认拒绝所有流量——这属于正常安全基线,而非异常现象。
综上,掌握命令语义与执行上下文,比单纯记忆指令更重要。




