我有一个子网 /24(256 个公共 IP 地址)。目前,我将 IP .255 分配给 LXD 容器(ubuntu),它似乎运行正常。我想知道如果有人通过互联网向 IP 为 .255 的主机发送 UDP 消息,该消息是否会广播到我的所有其他 IP?
答案1
你需要了解一些事情。
首先,主机只知道有限广播地址 ( 255.255.255.255
) 和其自己的网络广播地址(由主机上配置的网络掩码定义的网络中的最后一个地址)。发送到这两个地址的数据包不会超出其发送的网络范围。
对于主机网络之外的任何地址,主机都不知道该地址是主机、网络还是广播地址。主机只知道它是 IPv4 地址(IPv6 没有广播)。例如,目标/23
(或较小的)网络将具有有效.0
和.255
主机地址。
路径中的最终路由器直接连接到目标网络,并且知道目标网络掩码,因此它将确定目标地址是广播地址还是网络地址。默认情况下,这样的路由器将丢弃发送到直接连接网络的网络或广播地址的数据包。路由器可以配置为允许广播目标(定向广播),但这样做很愚蠢,因为它会促进网络上的 DoS 攻击(广播会中断网络上的每个主机,被认为是浪费和过时的,这就是它们在 IPv6 中被淘汰的原因)。
答案2
.255 作为 IPv4 广播地址的概念仅存在于其所属的 /24 网络中。全球互联网不知道或关心该地址是否恰好是目标网络的广播地址。因此,发送到该地址的 IP 数据包将正常路由,直到它到达负责最终交付到该地址范围的路由器,即直接连接到承载 /24 网络的 L2 网络或具有将其转换为不同目标地址的 NAT 规则的路由器。
接下来发生的情况取决于该路由器的配置。
- 如果目标路由器直接连接到承载相关 /24 IPv4 网络的以太网段,并配置为将定向广播转发到该段,并且不执行 NAT,那么是的,数据包将被广播到该段上的所有主机。(请注意,它将不是被广播到所有 IP 地址,正如您的问题所暗示的那样。它将被发送到广播 MAC 地址,但带有其原始的 .255 目标 IP 地址。这将导致该网段上的所有网络接口都接收它,但每个接收主机都会看到它是发送到广播 IP 地址,而不是其单播地址,因此可以自由地忽略它。)
- 然而,在大多数情况下,目标路由器将配置为丢弃发往定向广播地址的数据包。这是默认设置,因为RFC2644。
- 公共 IPv4 地址通常会在通过 NAT 传递之前转换为私有地址。在这种情况下,.255 地址的处理方式与其他地址没有区别。它会在 NAT 表中查找,并替换为在那里找到的实际目标地址。不会发生广播。因此,在这种情况下,.255 地址不被视为广播地址。
这些是最常见的情况。其他情况也有可能,但可以按照同样的思路解决。