NDP 和链路本地地址是否消除了路由器拥有多个可路由 IP 地址的需要?

网络工程 路由 路由器 IPv6
2022-02-27 11:18:00

我正在尝试了解 IPv6。我偶然发现了一些让我感到惊讶的事情,我希望在网络方面更好地理解这一点:

链路本地地址是否消除了路由器拥有多个可路由 IP 地址的需要?

据我了解:IPv4 子网用于识别可以使用ARP找到的地址。除此之外,它们还用作路由 IP 地址的逻辑组,其中可以通过同一路由(下一跳)联系组中的所有 IP 地址。我见过的所有设置都为每个路由器提供了多个 IP 地址,每个子网都有一个 IP 地址。也就是说,每个物理子网都需要自己的逻辑 IP 子网,而连接到多个子网的路由器在每个子网中都需要一个 IP 地址。

然而,在 IPv6 下,ARP 消失了,取而代之的是NDP当我查看自己的虚拟机时,它甚至不知道它的子网到底有多大。它认为它在一个/64但实际上它在一个更大的子网中。整个/64子网专用于我的虚拟机,它的网关已经在它之外。

这向我表明,IP 子网在 IPv6 下略有不同。这表明,与 ARP 不同,NDP 可以检测物理连接的路由器,而无需路由器在同一子网上具有 IP。

我的问题实际上是这样的:如果物理子网完全由路由器组成,子网是否需要自己的 IPv6 子网,或者路由器是否可以/将只使用该子网的链接本地地址

Subnet-With-IP  <--Router-->  Subnet-no-IP  <--Router-->  Subnet-With-IP
2个回答

路由器只是网络上知道如何与其他网络通信的主机。主机需要在其网络上具有网关(路由器)才能与不同网络上的设备进行通信。

链路本地地址仍然是 IP 地址。IPv6 允许,甚至要求在单个接口上使用多个 IP 网络。路由器可以在任何或所有这些网络上。

是的,您可以仅使用链路本地地址连接路由器,但这确实使支持和故障排除变得复杂。例如,您无法 ping 一个仅具有来自不同网络的本地链路地址的路由器接口。

基于许多 IPv6 协议,您实际上应该只使用/64网络,点对点网络 ( /127) 和环回 ( /128) 除外。使用其他规模的网络会破坏 IPv6 中的某些内容。请参阅RFC 5375,IPv6 单播地址分配注意事项,附录 B。与 /64 不同的子网前缀的注意事项RFC 7421,IPv6 寻址中的 64 位边界分析以及其他来源。

tl;博士:取决于。

让我看看我能不能把它解析出来。

IPv4 子网用于识别可以使用 ARP 找到的地址。除此之外,它们还用作路由的逻辑 IP 组,其中组中的所有 IP 都可以通过相同的路由(下一跳)联系。

更准确地说,在 IPv4(子)网络中,所有主机都可以直接相互寻址,并且可以响应广播。可以通过网关访问子网之外的主机。地址的网络部分标识主机的拓扑位置。

当我查看自己的虚拟机时,它甚至不知道它的子网到底有多大。它认为它在 /64 上,但实际上它在一个更大的子网中。整个 /64 子网专用于我的虚拟机,它的网关已经在它之外。

如果确实如此,则说明您的 VM 配置错误。子网和网关在 IPv4 和 IPv6 上的工作方式相同。您的 VM 知道它在 /64 上,因为它是这样配置的(手动或其他方式)。网关地址在相同的/64 中。您在该子网上可能只有一个主机 (VM),也可能没有,但您可能有很多很多(准确地说是 2^64)。

如果物理子网完全由路由器组成,子网是否需要自己的 IPv6 子网,或者路由器是否可以/将只使用该子网的链接本地地址?

链接本地地址是 IPv6 地址——它们只是不是全球唯一的。并且由于所有的LL地址都在同一个子网中,它们是否可以用于路由取决于所使用的路由协议。对于某些(如 OSPFv3 或静态),您不需要全局唯一地址。对于 BGP,您可以这样做。IS-IS 无论如何都不使用第 3 层地址,因此问题不适用于它。