背景
我有以下设置:
在我的传感器链路上使用IPv6地址(无状态)的6LOWPAN(IEEE 802.15.4中的IPv6实现)作为aaaa :: xx / 64
它使用RaspberryPi(RPI)作为边缘路由器(称为6lbr),它既连接到IEEE 802.15.4和IEEE 802.11(它在两个标准之间进行转换并路由分组)。 RPI运行Debian。
我的networking不支持IPv6广告(RA),所以它只分配一个公共IPv4给RPI。
最后,我将我的服务器代码(UDP服务器/客户端)存储在具有公共IPv4和IPv6地址的Debian服务器上。
问题我无法弄清楚如何从服务器端访问传感器节点。 举例来说,我需要在下面的SERVADDR中input什么目标地址才能发送UDP单播?
inet_pton(AF_INET6, SERVADDR, &server_addr.sin6_addr);
它是否假设是IPv4或IPv6 UDP单播?
我试图使用NAT64(一个名为wrapsix的开源项目),但无法访问它。 我需要使用什么样的隧道解决scheme? 你还可以说明一个开源项目名称,我可以使用隧道或作为经纪人?
第二个问题如果我的接入点为RPI的wlan0接口分配了一个私有IPv4地址(192.168.xx),那么我将如何访问传感器networking(aaaa :: xx)? 在那种情况下,我需要使用什么样的解决scheme?
编辑1指@ kasperd的评论,我做了一个更好的searchIPV6 tunelling。 我不能使用NAT64,因为它需要一个独特的IPv6networking前缀,我没有它在我的情况下。
我不能使用需要公共IPv4的6to4(考虑我的第二个问题)。
作为@ kasperdbuild议,我应该使用需要经纪人的6in4。 正如我在networking上看到的build议,我可以使用Hurricane Electric或SixXS。 他们都声称是自由的,但不明白什么是主要区别。 据我所知,我不能使用Hurricane Electric的IPv4 NAT背后的解决scheme,但是SixXS有一个名为AYIYA的协议,可以在IPv4 NAT之后使用。 这个解决scheme的缺点是,如果我有多个类似的连接问题,我需要单独configuration它们。 其次,SixXS允许使用它的商业目的,但是,由于它是免费的,他们转发到其他组织可能会停止提供使用在他/她的项目上使用的IPv6地址。 它创build了一个可靠性考虑。 另一个考虑是可能是一些防火墙可能不允许6in4隧道的问题。
此外,Ubuntu / Debian还有一个基于Teredo隧道(基于UDP数据包)的名为Miredo的数据包。 这个解决scheme可以在IPv4 NAT之后使用。 而且,由于是基于UDP的通信,所以几乎所有的防火墙都允许隧道。 然而,据说Teredo是一个临时解决scheme,当IPv6更成熟时应该停用(Teredo中继),以鼓励所有人使用本地IPv6。
编辑2 SixXS.net不接受任何新的注册。 我在HE上创build了一个帐号,但是有5个隧道限制。 如果需要超过5个隧道,我想Miredo应该是更好的select。 我试过接收IPv6的HE Broker和Miredo,但是我想我的路由规则有问题,无法从远程PC ping通IPv6。