为什么 224.0.0.1 流量会被 Linux 主机过滤?

djo*_*ect 6 multicast icmp linux-kernel ipv4

当向目标地址(例如 )发送 ICMPv4 echo 请求时224.0.0.1,接收请求的 Linux 主机会忽略该请求。使用的目标 MAC 地址是01:00:5e:00:00:01

让这些 Linux 主机应答的唯一方法是将 Kernel 参数设置net.ipv4.icmp_echo_ignore_broadcasts为 value 0。这将指示内核响应多播和广播 ICMPv4 请求,并为广播安全威胁打开大门。

为什么组播流量通过该参数过滤?有任何攻击可以证明其合理性吗?

使用 ICMPv6 和等效目标地址(如 )ff02::1,流量不会被 Linux 主机过滤。未来是否存在被过滤的风险?ICMPv4 是否存在 ICMPv6 不存在的威胁?

Linux 主机:

  • Linux 发行版:Ubuntu 20.04.1 LTS Focal
  • Linux内核:5.4.0

Bin*_*rus 6

我理解您的问题,因此由于可能的广播安全威胁,您希望阻止广播处理,但不阻止多播处理。

这就引出了一个问题:为什么您认为广播比多播更危险。毕竟,多播地址224.0.0.1意味着“该子网上的所有主机”(参考资料)。这或多或少与广播相同,广播也发送到子网的所有主机。

更进一步,您甚至可以认为多播比广播更危险,因为它是可路由的。至少,部分多播地址范围是可路由的(有关不完整的快速概述,请参阅此处),这意味着您的子网之外的某人可以将多播流量发送到您子网中的所有主机。(注意:通常,只有子网中感兴趣的主机才会处理此类数据,但这不会改变问题的本质)。

为了避免误解,该地址224.0.0.1不可路由,因此不存在来自外部的危险。但它仍然寻址子网的所有主机。

鉴于此,Linux 在内核级别没有提供单独的参数来忽略 IPv4 的广播和多播也并非完全没有道理。

由于上述原因,我在内核级别启用广播和多播处理,但在防火墙级别阻止多播。我不需要,也永远不会,而且我对基于它的“零信任”废话深感不信任。作为一个题外话,它在 Windows 中是相同的(我在防火墙级别阻止它)。