这个问题具体与 ICMPv4 时间戳请求(类型 13)消息有关。
当我有 Windows 防火墙时已禁用我可以从主机发送时间戳请求,客户端将接收该请求并使用时间戳回复(类型 14)进行响应。
当我有 Windows 防火墙时已启用我可以从主机发送时间戳请求,客户端将收到请求,但永远不会响应时间戳回复。我假设这是因为防火墙阻止了请求。但是,我没有看到任何特定的规则设置,这表明情况确实如此。我在网上也找不到任何文档来帮助我了解此特定消息是否默认被阻止(如 ICMP Echo)。
有人知道 Windows 防火墙是否默认阻止此消息吗? 有没有什么地方可以查看/配置此默认设置? 有没有我错过的文档?
我正在使用 Nping 发送消息并使用 Wireshark 观察数据包的来来去去。
答案1
Windows 防火墙阻止一切默认情况下。完整的处理顺序已记录在案在 TechNet 上,但为了简单起见,您可以将其视为“1)处理所有‘拒绝’规则,2)处理所有‘允许’规则,3)根据配置文件设置拒绝或允许其他所有内容”。
打开防火墙配置工具(通过运行wf.msc
或打开“高级安全 Windows 防火墙”应用程序,或单击控制面板中的“ ”链接),您将看到此屏幕:
默认情况下,这条消息表示“不符合规则的入站连接将被阻止”,这实际上适用于全部与现有状态无关的数据包,包括 ICMP 请求。如果您没有找到与时间戳请求相关的任何特定规则,则意味着它们将按照默认配置被拒绝。
因此,为了允许特定的 ICMP 类型,您当然应该在“入站规则”下创建规则,或启用已存在的规则。例如,“文件和打印机共享”组有内置规则来允许传入的 ICMP“回显请求”:
每条规则的具体 ICMP 类型可在“协议和端口 → ICMP 设置:自定义”下选择。(为了允许时间戳请求,您必须创建自定义规则;对于内置规则,列表是只读的)。
最后,请注意,即使防火墙允许数据包通过后,并不意味着操作系统实际上会支持特定 ICMP 请求类型。由于 ICMPv4“时间戳请求”相当罕见(罕见到在 Windows 防火墙中没有内置规则,并且在 ICMPv6 中根本没有等效规则),因此无法真正保证未来的 Windows 版本不会“弃用”并删除用于响应此类请求的代码……