我在 Windows 8 主机上的 VirtualBox VM 中安装了 Ubuntu 12.04。Windows 8 有一个托管(无线)网络,我可以用我的 Android 手机连接到该网络。我的 VM 的 eth0 接口使用桥接适配器连接到 Windows 网络。
此外,无线 6LoWPAN(使用 802.15.4 的 IPv6 低功耗无线个人局域网)使用加密狗连接到我的虚拟机的 usb0 接口。此网络中有多个 Zigduino 节点。现在,我需要从我的手机 ping 到这些传感器节点。
phone ---802.11--- eth0 Ubuntu usb0 ---802.15.4--- sensor node
现在的问题是,我已经花了几个小时,但我仍然无法做到这一点。我为 eth0 提供了一个静态 IPv6 地址,aaaa::xxxx:xxxx:xxxx:xxxx
并使用 radvd 从这个接口以前缀进行路由器广告aaaa::/64
(因此我的手机也获得了一个aaaa::xxxx:xxxx:xxxx:xxxx
地址)。我的加密狗和传感器节点的 IP 地址也类似于aaaa::xxxx:xxxx:xxxx:xxxx
。在 ping 时,我使用 wireshark 监控流量。我注意到 eth0 从我的手机获取路由器请求,但这些请求没有到达 usb0。看起来它们没有被转发到 usb0 接口,所以我的虚拟机不知道如何处理这些消息,并且 ping 失败。
IPv6 转发和所有功能都已启用,根据我在互联网上看到的信息,我知道这已经足够了。您知道我做错了什么吗?
答案1
两条评论:您应该使用 ULA 地址而不是aaaa:
,但这对您的问题并不重要。
您的桥接器无法工作的原因是 6LoWPAN 与以太网不兼容,因此您无法在它们之间桥接。桥接仅在接口之间复制帧,但 6LoWPAN 使用与以太网不同的帧格式,其第 2 层 (MAC) 地址也不同。
一种解决方案是使用一个/64
子网作为以太网网络,另一个子网/64
作为 6LoWPAN 网络。然后您确实需要启用 IPv6 转发,以便您的盒子可以在网络之间转发数据包。如果您的盒子是两个网络的默认网关,那么它将在它们之间转发数据包。如果不是,那么您需要设置一些路由,以便其他网关/路由器知道将这些网络的数据包发送到哪里。
答案2
原来是 VirtualBox 的 Wi-Fi 驱动程序中的一个错误。没办法了。我现在使用通过以太网连接到我的计算机的 IPv6 路由器/AP。