
У меня Ubuntu 12.04 установлена в виртуальной машине VirtualBox на хост-компьютере Windows 8. В Windows 8 была размещенная (беспроводная) сеть, к которой я мог подключиться с моего телефона Android. Интерфейс eth0 моей виртуальной машины подключен к сети Windows с помощью мостового адаптера.
Кроме того, беспроводная 6LoWPAN (маломощная беспроводная персональная сеть через IPv6 с использованием 802.15.4) подключена к интерфейсу usb0 моей виртуальной машины с помощью донгла. В этой сети несколько узлов Zigduino. Теперь мне нужно отправить пинг с моего телефона на эти сенсорные узлы.
phone ---802.11--- eth0 Ubuntu usb0 ---802.15.4--- sensor node
Проблема в том, что я уже потратил на это часы, но все еще не могу этого сделать. Я назначил eth0 статический адрес IPv6 aaaa::xxxx:xxxx:xxxx:xxxx
и делаю объявления маршрутизатора с этого интерфейса с префиксом, aaaa::/64
используя radvd (так что мой телефон также получает aaaa::xxxx:xxxx:xxxx:xxxx
адрес). IP-адрес моего донгла и узлов датчика также примерно такой aaaa::xxxx:xxxx:xxxx:xxxx
. Во время пингования я отслеживал трафик с помощью wireshark. Я заметил, что eth0 получает запросы маршрутизатора с моего телефона, но они не доходят до usb0. Похоже, они не пересылаются на интерфейс usb0, поэтому моя виртуальная машина не знает, что делать с этими сообщениями, и пинг не проходит.
Переадресация IPv6 и все такое уже включены, и я понимаю, что этого будет достаточно из того, что я прочитал в интернете. Есть идеи, что я делаю не так?
решение1
Два комментария: вам следует использовать адреса ULA вместо aaaa:
, но для вашей проблемы это не имеет значения.
Причина, по которой ваш мост не работает, заключается в том, что 6LoWPAN несовместим с ethernet, поэтому вы не можете организовать мост между ними. Мост только копирует кадры между интерфейсами, но 6LoWPAN использует другой формат кадра с другими адресами уровня 2 (MAC), чем ethernet.
Решением было бы использовать одну /64
подсеть для вашей сети Ethernet и отдельную /64
для вашей сети 6LoWPAN. Тогда вам действительно нужно включить пересылку IPv6, чтобы ваш ящик пересылал пакеты между сетями. Если ваш ящик является шлюзом по умолчанию для обеих сетей, то он будет пересылать пакеты между ними. Если это не так, то вам нужно настроить маршрутизацию, чтобы другие шлюзы/маршрутизаторы знали, куда отправлять пакеты для этих сетей.
решение2
Оказывается, это ошибка в драйверах Wi-Fi VirtualBox. Ничего не поделаешь. Теперь я использую маршрутизатор/точку доступа IPv6, подключенный к моему компьютеру через Ethernet.