根据 RFC 4193,唯一的本地地址将始终具有前缀FD00::/8
.. 但根据维基百科:
块 fd00::/8 是为 /48 前缀定义的,通过将前缀的 40 个最低有效位设置为随机生成的位串来形成。
这是强制执行的,如果是,为什么?是什么阻止我使用/32
或/16
等前缀?
根据 RFC 4193,唯一的本地地址将始终具有前缀FD00::/8
.. 但根据维基百科:
块 fd00::/8 是为 /48 前缀定义的,通过将前缀的 40 个最低有效位设置为随机生成的位串来形成。
这是强制执行的,如果是,为什么?是什么阻止我使用/32
或/16
等前缀?
要求存在以防止冲突。这比大多数人认识到的要重要一点。
即使您的系统目前无法通过 Internet 与其他系统通信,您仍然需要您的地址在全球范围内唯一。您现在或将来可能需要添加一个可以与您的内部网络和 Internet 进行通信的主机。为了与该主机进行通信,它与之通信的 IP 地址必须是唯一的。
如果存在具有相同本地范围的两个内部网络,则主机可能最终需要与这两个网络进行通信,此时您必须对其中一个网络重新编号。如果您使用 VPN 连接并且客户端和服务器都在使用 RFC 4193 地址空间的网络上,则可能需要这种通信。
将来您可能最终需要与其他内部网络进行通信的另一种方式是,如果您的公司与另一家也使用内部网络的公司合并。
40 个随机位足以保证需要与多个内部网络通信的主机在看到第一次冲突之前可以预期到达大约一百万个不同的网络。
40 个随机位的要求并没有以任何方式强制执行,但是如果您不遵守它,您就会在将来发生碰撞时遇到问题。
当公司合并或建立外联网进行通信时,事实证明 IPv4 私有寻址很困难,因为公司经常使用相同或重叠的地址空间,这需要 NAT 的丑陋黑客来绕过,这可能会导致问题和中断许多协议。
这在开发 IPv6 ULA 时被确定为一个问题,其目标是允许公司拥有非 Internet 地址空间,但使用的空间很可能是唯一的。这是为了防止使用非 Internet 寻址的公司之间的合并或通信问题。IPv6 没有 NAT,IPv6 的目标是恢复因 IPv4 地址数量有限而需要 NAT 时丢失的 IP 端到端连接。
IPv6 ULA 空间的前半部分 ( fc00::/8
) 保留给(尚未命名的)全球权威机构分配,而 IPv6 ULA 空间的后半部分 ( fd00::/8
) 则是为了让公司可以分配高唯一性的概率。
根据 RFC 4193,唯一的本地地址将始终具有前缀
FD00::/8
那是不正确的。该 RFC 将 ULA 空间定义为fc00::/7
,但该空间有两个部分由第八位(“L”位)定义。
来自 RFC:
3.1. 格式
本地 IPv6 地址是使用伪随机分配的全局 ID 创建的。它们具有以下格式:
| 7 bits |1| 40 bits | 16 bits | 64 bits | +--------+-+------------+-----------+----------------------------+ | Prefix |L| Global ID | Subnet ID | Interface ID | +--------+-+------------+-----------+----------------------------+
这将 ULA 空间分为两个/8
空间:fc00::/8
用于全局分配的寻址和fd00::/8
用于本地分配的寻址。请注意 RFC 中的格式需要“一个伪随机分配的全局 ID”。进一步解释如下:
3.2. 全局 ID
全局 ID 的分配是伪随机 [ RANDOM ]。它们不得按顺序分配或使用众所周知的数字分配。这是为了确保分配之间没有任何关系,并有助于澄清这些前缀不打算全局路由。具体来说,这些前缀不是为了聚合而设计的。
本文档定义了一种特定的本地方法来分配全局 ID,通过将 L 位设置为 1 来表示。另一种方法,通过清除 L 位来表示,稍后可能会定义。除了分配方法之外,所有本地 IPv6 地址的行为和处理方式都相同。
本地分配是自生成的,不需要任何中央协调或分配,但具有极高的唯一性概率。
如您所见,您的问题的前提是 RFC 说 ULA 地址将始终具有前缀 offd00::/8
是不正确的。
这是强制执行的,如果是,为什么?是什么阻止我使用 /32 或 /16 等前缀?
没有实际的强制执行,就像您尝试在公共 Internet 上使用寻址一样。您的公司可以简单地在该空间中使用任何地址,在它想要的任何块中。您的企业在自己的网络上为寻址做什么完全取决于它,但从长远来看,不遵守标准可能会被证明是愚蠢和昂贵的。
例如,我知道一些公司在他们的网络中使用了“暗”IPv4 地址空间,但是后来暗地址空间开始在公共 Internet 上使用,并且这些公司无法与使用该地址的客户或供应商联系地址空间,在短期内需要一些丑陋的解决方案来解决这个问题,直到所有使用该地址空间的内部网络都被重新寻址。花了几年时间和很多钱来解决这些问题。
RFC 4193, Unique Local IPv6 Unicast Addresses是 IPv6 ULA 的定义,详细信息请参考:
一、介绍
本文档定义了一种全球唯一的 IPv6 单播地址格式,用于本地通信 [ IPV6 ]。这些地址称为唯一本地 IPv6 单播地址,在本文档中缩写为本地 IPv6 地址。预计它们在全球互联网上是不可路由的。它们可以在更有限的区域(例如站点)内路由。它们也可以在一组有限的站点之间路由。
本地IPv6单播地址具有以下特点:
全局唯一前缀(具有很高的唯一性概率)。
众所周知的前缀,可以在站点边界轻松过滤。
允许站点组合或私有互连,而不会产生任何地址冲突或需要使用这些前缀的接口重新编号。
独立于 Internet 服务提供商,可用于站点内部的通信,无需任何永久或间歇性 Internet 连接。
如果通过路由或 DNS 意外泄漏到站点之外,则不会与任何其他地址发生冲突。
在实践中,应用程序可能会将这些地址视为全局范围的地址。
本文档定义了本地 IPv6 地址的格式、如何分配它们以及使用注意事项,包括路由、站点边界路由器、DNS、应用程序支持、VPN 使用以及如何用于站点内部本地通信的指南。