/64 路由至已分配的 IPv6 地址吗?

/64 路由至已分配的 IPv6 地址吗?

因此,我有一个 Linux 服务器的 VPS 提供商,其网站上的网络仪表板上显示了以下内容:

2607:f840:0044:0022:0000:0000:0000:0000/64 被路由到此服务器 (2607:f840:0:3f:0:0:0:eaa)

2607:f840:0:3f:0:0:0:eaa/64 是分配给 eth0 接口的地址,旁边写着 GLOBAL。

我对 IPv6 了解不多。每个地址长度为 128 位,以十六进制形式书写,通过省略前导零或使用 :: 一次来缩短。我不明白将 2607:f840:44:22::/64 “路由”到我的 IPv6 分配地址 2607:f840:0:3f:0:0:0:eaa/64 意味着什么。

所以我无法改变2607:f840:0:3f:0:0:0:eaa 中的单个位,但我可以选择从 2607:f840:44:22:0000:0000:0000:0000 到 2607:f840:44:22:FFFF:FFFF:FFFF:FFFF 中的任何一个?这样我就有 2^64 个可能的地址可以使用,但目的是什么呢?

希望这个问题不是太模糊或偏离主题,感谢您的见解。

答案1

欢迎来到拥有多得数不清的 IP 地址的奇妙世界。(您的 VPS 提供商做得对,为您分配了 /64 而不是更小的地址,很多误入歧途的提供商似乎都在这样做……)

你可能已经猜到了,其中一个目的是没有人会用完 IP 地址,.或者至少不是很长一段时间...

因此,它对你的工作方式如下:

  1. 您分配给eth0接口的 IP 地址是2607:f840:0:3f::eaa。这位于上游提供商的/64。当数据包进入你的子网2607:f840:44:22::/64,您的上游提供商将它们路由到您的eth0接口。

  2. 数据包到达后如何处理完全由您决定。由于您使用的是 VPS,因此您可能不需要大量地址,因此您可以直接将它们分配...::1给现有eth0接口。

    例如:

    ip addr add 2607:f840:44:22::1/64 dev eth0
    ip addr add 2607:f840:44:22::2/64 dev eth0
    ip addr add 2607:f840:44:22::3/64 dev eth0
    ip addr add 2607:f840:44:22::deca:fbad/64 dev eth0
    ip addr add 2607:f840:44:22:feed:face:dead:beef/64 dev eth0
    

    如果您进一步将 VPS 划分为容器(例如 OpenVZ 或 LXC),那么您可以将其路由/64到为容器提供服务的网络桥接器,并为容器分配地址。

另请参阅密切相关的问题,IPv6 子网划分如何工作?它与 IPv4 子网划分有何不同?

答案2

让我引用RFC 5375:IPv6 单播地址分配注意事项

使用 /64 以外的子网前缀长度将破坏 IPv6 的许多功能,其中包括邻居发现 (ND)、安全邻居发现 (SEND) [RFC3971]、隐私扩展 [RFC4941]、移动 IPv6 的部分 [RFC4866]、带嵌入式 RP 的 PIM-SM [RFC3956] 和 SHIM6 [SHIM6]。目前正在开发或正在提议的许多其他功能也依赖于 /64 子网前缀。

您的提供商只是坚持安全标准。您获得了巨大的地址空间,但这是一件好事。它使事情面向未来。

答案3

我不明白将 2607:f840:44:22::/64 '路由'到我的 IPv6 分配地址 2607:f840:0:3f:0:0:0:eaa/64 意味着什么。

这意味着他们将您的服务器视为路由器。

当设备想要发送数据包时,它会在其路由表中查找目的地。

路由可以仅指向一个接口。子网掩码创建的隐式路由就是一个例子,但至少在 Linux 上也可以显式添加此类路由。在这种情况下,目标 IP 地址将被视为下一跳 IP 地址。

或者,路由可以指向接口和下一跳 IP 地址的组合。在这种情况下,使用指定的下一跳 IP 地址

对于 IPv6 6,下一跳 IP 地址使用邻居发现解析为 MAC 地址(IPV4 使用 ARP)。

所以这意味着当提供商的路由器在 2607:f840:44:22::/64 中查找任何地址时,它将对 2607:f840:0:3f:0:0:0:eaa 进行邻居发现,并将数据包发送到它找到的 MAC 地址。

相关内容