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

Jos*_*osh 28 networking windows firewall

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

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

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

Bob*_*Bob 46

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

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

  • 打开 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:*并在系统语言中查找与“过滤平台数据包丢弃”和“过滤平台连接”对应的子类别。

  • 如果您在 Windows 防火墙中启用了出站过滤,这将无济于事,因为这样,所有没有明确允许规则的程序将默认被阻止。因此,您的程序可能根本不会被防火墙规则阻止。 (2认同)
  • 这适用于 Windows Server 2012 R2。 (2认同)