我目前正在学习 IPv6,在测试期间,我尝试使用全局 IPv6 地址配置接口2002::
,但失败了,提示地址不正确。我注意到,如果我尝试使用以该地址开头的 IPv6 地址配置接口,则2002
必须高于该地址2002:0099::
,否则会提示无效。
因此,2000::
是有效的,2001::
是有效的,是有效的,但是和2002:100::
之间没有任何内容。这是为什么呢?2002::
2002:99::
答案1
https://www.google.de/?q=ipv6+address+2002::
或检查IPv6 全球单播地址分配看到 2002:0000::/16 是 6to4 地址范围。
答案2
该2002::/16
前缀用于 6to4,它要求接下来的 32 位(16 位前缀之后)是全球单播 IPv4 地址。
您说它必须高于,2002:0099::
这可能是因为您还没有完全理解 IPv6 地址表示法的十六进制部分。
2002:0099::
对应于 IPv4 地址0.153.0.0
,但0.255.255.255
也不是全球单播地址。因此2002:00ff::
也无法工作。
6to4 网关后面的 LAN 上的主机不需要了解 6to4。它们可以将分配给它们的 6to4 地址视为任何其他全球单播 IPv6 地址。因此,没有必要将其2002:0099::
作为无效地址拒绝,但是由于它永远不可能是有效地址,因此操作系统拒绝它是有道理的。
使用随机 6to4 地址进行测试绝对不是推荐的做法。如果您想尝试 IPv6,还有其他方法可以获取地址进行实验:
- 通过将 ISP 分配给您的 IP 附加到 6to4 前缀来构建真正的 6to4 前缀。如果您的 ISP 已分配
203.0.113.1
给您,则您需要将四个八位字节中的每一个转换为十六进制值cb
00
71
01
,并且您的 IPv6 前缀将是2002:cb00:7101::/48
。 - 通过隧道提供商获取隧道。
- 从您的 ISP 获取原生 IPv6。
- 使用 RFC 4193 地址。对于这些地址,第一个八位字节必须是
fd
,接下来的五个八位字节必须是随机的。您的前缀可以是fd2a:4b89:4d7d::/48
。这些只能在本地使用,因此如果您配置了这样的地址而没有其他 IPv6 地址,则存在软件尝试使用此本地 IPv6 地址而不是 IPv4 进行外部通信的风险。
上述选项并不唯一。配置每种地址中的一个或多个是完全有效的。对于测试和开发,分配多个地址以测试有趣的极端情况可能是一个好主意。对于生产环境,您应该知道,许多系统在决定使用哪个网关时不会考虑源地址,如果在路由器配置为丢弃具有意外源 IP 的数据包的设置中使用多个地址,则可能会导致故障。