最常见的原因通常不是日志文件大小限制,而是当前活动的防火墙配置文件(Domain、Private 或 Public)未启用“记录丢弃的数据包(Log dropped packets)”。 Windows Defender 防火墙的日志配置是按配置文件分别管理的,如果设备当前使用的网络配置文件与预期不一致,即使防火墙规则已经成功阻止流量,也不会在日志中记录相关条目。 建议使用 Get-NetConnectionProfile 确认当前活动配置文件,并在 wf.msc > Windows Defender Firewall Properties > 对应 Profile > Logging > Customize 中验证 Log dropped packets = Yes。
日志文件大小也可能导致历史记录缺失。 pfirewall.log 采用循环覆盖机制,当文件达到设置的最大容量后,旧记录会被新记录覆盖。 微软允许将日志大小配置到最大 32767 KB,而许多环境仍使用默认的 4096 KB,在网络活动较频繁的设备上很容易被快速覆盖。
另外,需要注意的是,并非所有被拒绝的连接都会写入 pfirewall.log。 该日志仅记录由 Windows Defender Firewall 过滤平台处理的流量。 如果连接是被第三方安全软件、EDR、IPS、WFP Callout Driver 或上游网络设备阻断,则即使通信被拒绝,防火墙日志中也可能没有任何记录。 此时建议同时检查 Event Viewer 中的 Windows Firewall With Advanced Security 日志以及 WFP 审核事件。
如果设备通过 GPO 进行管理,还应检查是否存在策略覆盖本地配置。 相关设置位于 Computer Configuration > Windows Settings > Security Settings > Windows Defender Firewall with Advanced Security。 对应注册表路径为 HKLM\SOFTWARE\Policies\Microsoft\WindowsFirewall\<Profile>\Logging,重点检查 LogDroppedPackets、LogFilePath 和 LogFileSize 等值。 域策略覆盖是导致不同计算机表现不一致的常见原因之一。
最佳实践是对比正常和异常设备上的 Get-NetFirewallProfile | Select Name, Enabled, LogBlocked, LogFileName, LogMaxSize 输出结果,确认活动网络配置文件、检查 %SystemRoot%\System32\LogFiles\Firewall\pfirewall.log 的写入权限,并临时提高日志容量后重新复现问题。 在实际案例中,大多数问题最终都归因于配置文件不匹配、GPO 覆盖或未启用丢弃数据包日志,而不是 Windows Firewall 本身的缺陷。