欢迎来到 IPv6 过渡的混乱世界。
IPv4 和 IPv6 是两个独立的协议,不能直接互操作。
IPv6 支持者的想法是我们都将转向双栈,在过渡期间并行运行 IPv4 和 IPv6。然后一旦 IPv6 无处不在,就可以关闭 IPv4。
不幸的是,部署双堆栈意味着在未来某个不确定的时间立即为收益增加成本。不出所料,在世界没有双栈的情况下,使用速度非常慢,而且 IPv4 耗尽。
现在大多数 IP 传输提供商都将提供双栈,但对于移动和宽带 ISP,情况往往不那么乐观。
所以无论如何回到互操作的问题。由于很明显在现实世界中 IPv4 不会很快消失,因此已经设计了各种机制来尝试弥合差距。
第一个也是最简单的就是点对点隧道,这样的隧道非常可靠,并且使用正确的隧道技术可以在 NAT 后面工作。问题当然是隧道必须在某个地方终止。存在免费的隧道提供商,但他们在性能和/或限制方面并非没有问题。
接下来是6to4。具有非自然 IPv4 连接的主机或网络可以从其公共 IPv4 IP 生成 IPv6 /48。来自 6to4 客户端的数据包封装在 IPv4 中,可以发送到其他 6to4 客户端或中继任播地址。不幸的是它在 NAT 后面不起作用
接下来要提到的是teredo。Teredo 尝试使用 NAT 穿越技术向 NAT 后面的客户端提供 IPv6 地址。不幸的是,它非常脆弱,经常失败。同样由于 teredo 查找中继的方式,它只有在 IPv6 主机响应 ping 时才能工作。
此外,ISP 似乎大多没有采取措施并在其网络中部署 6to4 和 teredo 中继,因此 6to4 和 teredo 流量最终会通过少数为互联网提供中继的网络之一。这通常最终会限制性能。
Teredo 和 6to4 在很大程度上未能实现支持 ipv6 的客户群的增长。很明显,虽然 IPv6 部署正在增长,但那些希望运行纯 IPv6 网络的人将不得不承担互操作性的负担。
这让我们了解他们如何做到这一点。客户端最常用的方法可能是 NAT64/DNS64。网络将 DNS A 响应转换为指向一系列 IPv6 地址的 AAAA 响应,这些地址被路由到有状态的 NAT64 框。NAT64 盒将流量从 IPv6 转换为 IPv4,允许客户端访问 IPv4 互联网上的服务器。对此的扩展是 464XLAT,其中客户端具有无状态 NAT46,允许仅 IPv4 的应用程序通过 NAT64 发送请求。
在服务器端,基于 NAT 的方法也是可能的,但它们存在的问题是您仍然需要为每个服务器提供一个 IPv4 地址,这使运行仅 IPv6 的网络失去了大部分意义。另一种选择是反向代理,它可以根据应用层标头引导流量。
不幸的是,尝试在您的蜂窝调制解调器上运行服务很可能是一种沮丧的练习。正如您所说,它没有 IPv4 地址,虽然它可能确实有公共 IPv6 地址,但您可能仍然会发现存在防火墙并且 IPv6 地址不是很稳定。
一般来说,我发现管理处于未知网络情况的设备的最佳方法是使用 VPN。在公共互联网上拥有一台服务器(最好是双栈),您的所有设备都可以连接到该服务器,然后使用它们的 VPN IP 地址访问设备。