如何在 IPv4 网络中使用 IPv6 边缘路由器?

如何在 IPv4 网络中使用 IPv6 边缘路由器?

背景

我有以下设置:

在此处输入图片描述

我在传感器链路上使用 6LOWPAN(IEEE 802.15.4 中的 IPv6 实现),其 IPv6 地址(无状态)为 aaaa::xx/64

它使用 RaspberryPi (RPI) 作为边缘路由器(称为 6lbr),该路由器同时连接到 IEEE 802.15.4 和 IEEE 802.11(它在两个标准之间进行转换并路由数据包)。RPI 运行 Debian。

我的网络不支持 IPv6 广告 (RA),因此它只为 RPI 分配一个公共 IPv4。

最后,我将我的服务器代码(UDP 服务器/客户端)存储在具有公共 IPv4 和 IPv6 地址的 Debian 服务器上。

问题 我不知道如何从服务器端访问传感器节点。例如,我需要在SERVADDR下面输入什么目标地址来发送 UDP 单播?

inet_pton(AF_INET6, SERVADDR, &server_addr.sin6_addr);

它应该是 IPv4 还是 IPv6 UDP 单播?

我尝试使用 NAT64(一个名为 wrapsix 的开源项目),但无法访问它。我需要使用哪种隧道解决方案?您能否告诉我一个可以用于隧道或作为代理的开源项目名称?

第二个问题 如果我的接入点为 RPI 的 wlan0 接口分配了私有 IPv4 地址 (192.168.xx),我需要如何访问传感器网络 (aaaa::xx)?在这种情况下,我需要使用什么样的解决方案?

编辑1 参考@kasperd 的评论,我对 IPV6 隧道进行了更好的搜索。我无法使用 NAT64,因为它需要一个唯一的 IPv6 网络前缀,而我的情况是没有的。

我不能使用需要公共 IPv4 的 6to4(考虑到我的第二个问题)。

正如@kasperd 所建议的,我应该使用需要代理的 6in4。正如我在网上的建议中看到的,我可以使用 Hurricane Electric 或 SixXS。它们都声称是免费的,但我不明白主要区别是什么。据我所知,我不能在 IPv4 NAT 后面使用 Hurricane Electric 的解决方案,但 SixXS 有一个名为 AYIYA 的协议可以在 IPv4 NAT 后面使用。此解决方案的一个缺点是,如果我有多个类似的连接问题,我需要单独配置它们。其次,SixXS 允许将其用于商业目的,但是,由于它是免费的,它们依赖于其他组织,这些组织可能会停止提供在其项目中使用的 IPv6 地址。这会产生可靠性方面的考虑。另一个考虑因素是,一些防火墙可能不允许 6in4 隧道,这可能是一个问题。

此外,Ubuntu/Debian 有一个基于 Teredo 隧道(基于 UDP 数据包)的数据包,称为 Miredo。此解决方案可在 IPv4 NAT 后面使用。此外,由于它是基于 UDP 的通信,因此几乎所有防火墙都允许隧道。但是,据说 Teredo 是一个临时解决方案,当 IPv6 更加成熟时应该停用(Teredo 中继),以鼓励所有人使用原生 IPv6。

编辑2 SixXS.net 不接受任何新注册。我在 HE 上创建了一个帐户,但它有 5 个隧道限制。如果需要超过 5 个隧道,我想 Miredo 应该是更好的选择。我尝试了 HE 代理和接收 IPv6 的 Miredo,但我想我的路由规则有问题,我无法从远程 PC ping 该 IPv6。

相关内容