如何判断哪条 Windows 防火墙规则阻止了流量

如何判断哪条 Windows 防火墙规则阻止了流量

我正在尝试设置一台计算机以接受所有传入流量,但仅允许传出到特定 IP 的流量。我已为传入设置了允许所有规则,并设置了允许规则,该规则指定 IP 地址作为唯一可接受的传出地址。我还设置了拒绝所有传出规则,假设另一条规则优先。

我遇到的问题是所有流量都被阻止,甚至是发往我指定允许的 IP 的流量。

我正在寻找一种方法来跟踪通过防火墙的流量,并确切了解哪些规则阻止了流量。防火墙监控生成的日志告诉我流量被丢弃了,但没有告诉我是哪条规则阻止了它。

答案1

(注意:此方法至少在 Windows 7、10 Pro、Server 2012 R2、11 上有效)

以下步骤将引导您找到阻止连接的规则:

  • 打开 Windows 控制台(具有管理权限)以输入命令
  • 启用Windows过滤平台(WFP)的审核:
  • 运行命令:
    auditpol /set /subcategory:"Filtering Platform Packet Drop" /success:enable /failure:enable
  • 运行命令:
    auditpol /set /subcategory:"Filtering Platform Connection" /success:enable /failure:enable
  • (这可能会让您淹没在事件日志数据中 - 仅启用失败审核,并且可能只有连接失败才会减少日志条目的数量。请选择您真正需要的内容)
  • 重现问题
  • 运行命令:(netsh wfp show state这将在当前文件夹中创建一个 XML 文件)
  • 打开事件查看器:运行(Windows+ R)>eventvwr.msc
  • 转到“Windows 日志”>“安全”
  • 在列表中,找到丢弃数据包日志(提示:使用右侧菜单上的搜索功能,搜索与您的问题相关的项目(源 IP、目标端口等))
  • 在日志详细信息中,向下滚动并记下用于阻止数据包的过滤器 ID
  • 打开生成的 XML 文件:
  • 搜索记下的 filterID,并查看规则名称(相应 XML 节点上的元素“displayData > name”)

这将为你找到阻止规则提供一个良好的开端。

当你完成后,不要忘记关闭审核

  • 运行命令:
    auditpol /set /subcategory:"Filtering Platform Packet Drop" /success:disable /failure:disable
  • 运行命令:
    auditpol /set /subcategory:"Filtering Platform Connection" /success:disable /failure:disable

笔记:根据您的 Windows 语言设置,审计服务可能会使用不同的非英语名称。要查找子类别名称,请运行命令:auditpol /get /category:*并查找与系统语言中的“过滤平台数据包丢弃”和“过滤平台连接”相对应的子类别。

答案2

我也遇到了规则被忽略的情况,规则是通过 Windows 防火墙 .msc 添加的。只需重新启动 Windows 即可。

Windows 10 专业版 20H2 / 10.0.19042

编辑

但这在其他 Windows 设置(相同版本)上不起作用。这似乎是因为允许主题以某种方式成为了以下主题:为 Windows 服务强化添加的规则,该规则具有更高的优先级。

相关内容