当我尝试 ping6 我的 VirtualBox 机器时,出现以下错误:
$ ping6 fe80::a00:27ff:fe1e:42d9
connect: Invalid argument
Run Code Online (Sandbox Code Playgroud)
当然,我已经用谷歌搜索过,发现我可以通过将接口名称附加到该 IPv6 地址本身来避免这种情况 - 事实上,它工作正常:
$ ping6 fe80::a00:27ff:fe1e:42d9%vboxnet0
PING fe80::a00:27ff:fe1e:42d9%vboxnet0(fe80::a00:27ff:fe1e:42d9) 56 data bytes
64 bytes from fe80::a00:27ff:fe1e:42d9: icmp_seq=1 ttl=64 time=0.239 ms
64 bytes from fe80::a00:27ff:fe1e:42d9: icmp_seq=2 ttl=64 time=0.272 ms
64 bytes from fe80::a00:27ff:fe1e:42d9: icmp_seq=3 ttl=64 time=0.283 ms
Run Code Online (Sandbox Code Playgroud)
但是,我对此感到不舒服。我该怎么做才能使它在本地网络中像“ping6 fe80::a00:27ff:fe1e:42d9”一样工作?
对于本地链路 IPv6 地址,您始终必须指定接口。原因是每个网络都使用相同的地址块(前缀),并且大多数系统都有多个网络接口(环回、以太网、wifi、虚拟机网络、一些加密狗等)。因此,系统无法仅根据地址知道该怎么做。该地址fe80::a00:27ff:fe1e:42d9仅在特定链接(接口)上是唯一的。在不同的链接上,相同的地址可能是一个完全不同的系统。
因此,链接本地地址对于手动使用通常不是很有用。每次使用它们时都必须指定接口,并且在不同的系统上,接口名称可能不同,因此您无法向某人发送带有地址的链接。你必须知道你发送给它的人/软件实际上连接到了正确的链接(你不能路由本地链接地址,它们只能在链接本身上使用),以及它的接口名称是什么链接在他们的系统上。
这并不意味着链接本地地址是无用的。它们对于在链接上运行的自动进程非常有用。例如 Neighbor Discovery(查找链路上的其他系统)、Router Advertisements(通信默认网关和网络设置)、DHCPv6(用于自动主机配置)、OSPFv3 等路由协议(用于与邻居通信)、mDNS(本地服务发现) ) 等等等等。但是它们对于手动使用不是很有用。许多浏览器也不能在 URL 中正确处理它们。
因此,您真正需要的是具有可以路由的全局范围的“真实”IPv6 地址。这样你系统的路由表就知道在什么地方使用了哪些地址,而你不必手动指定接口。有多种方法可以获取可路由的 IPv6 地址。
如果您有互联网提供商,那么他们通常会为您提供 IP 地址。对于 IPv4,它们通常为您提供一个全球唯一的地址(如果有的话,IPv4 地址已经用完,许多人必须共享以保持 IPv4 运行)。对于 IPv6,它们通常为您提供一个 /48(65536 个子网,每个子网由无限数量的 IPv6 地址组成)或一个 /56(356 个子网)。IPv6 背后的理念是,您总能得到比您需要的多得多的东西。
如果您是大型组织或互联网提供商,您可以从您的区域互联网注册中心 (RIR) 请求您自己的地址块。我现在会跳过这个,但如果你想了解更多,请随时提出后续问题!
最后一个选项,例如,如果您的互联网提供商没有为您提供 IPv6 地址(对他们感到羞耻,但仍有很多提供商生活在石器时代;)并且您不想将您的系统连接到互联网,然后您可以生成自己的私有 IPv6 地址。正如我所说,您将无法通过这些与互联网上的系统进行通信(您需要互联网提供商来连接您并为您提供地址),但它们非常适合测试和网络小岛。它们被称为 ULA(唯一本地地址),您可以自行生成它们。为了避免不同网络之间的冲突(ULA 不是全球可路由的,但也许您想为您的朋友设置 VPN 或类似的东西)您的系统之一的 MAC 地址通常用于生成 ULA 前缀。https://cd34.com/rfc4193/并输入 MAC 地址。它将为您进行计算并为您提供一组 IPv6 地址以供使用。
| 归档时间: |
|
| 查看次数: |
1095 次 |
| 最近记录: |