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