
我在 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。