我正在嘗試使用樹莓派設備和嵌入式系統來建立 6lowpan 網路。我在兩個樹莓派設備中啟用了bluetooth_6lowpan(modprobe bluetooth_6lowpan
和echo 1 > /sys/kernel/debug/bluetooth/6lowpan_enable
),其中一個安裝了radvd並配置為
interface bt0
{
AdvSendAdvert on;
prefix 2001:db8::/64
{
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
};
};
我將其他樹莓派(Pi 4,核心版本 5.4.83-v7l+)和嵌入式裝置連接到該路由器(Pi W 核心版本 5.4.79+)。我可以從兩側的裝置和路由器之間 ping 通,但無法透過路由器 ping 一個樹莓派到另一台嵌入式裝置。另外,我無法打開路由器和樹莓派設備之間的套接字(我可以從嵌入式設備打開套接字,它可以發送資料但不能接收資料)。這看起來樹莓派沒有將任何資料包轉送到 bt0 介面。
ip -6 route
來自兩個樹莓派的資訊如下:
裝置
::1 dev lo proto kernel metric 256 pref medium
2001:db8::/64 dev bt0 proto kernel metric 256 expires 86263sec pref medium
fe80::/64 dev bt0 proto kernel metric 256 pref medium
default via fe80::b827:ebff:fe0e:8ee dev bt0 proto ra metric 1024 expires 1663sec hoplimit 64 pref medium
路由器
::1 dev lo proto kernel metric 256 pref medium
2001:db8::/64 dev bt0 proto kernel metric 256 pref medium
fe80::/64 dev wlan0 proto kernel metric 256 pref medium
fe80::/64 dev bt0 proto kernel metric 256 pref medium
編輯1
與指南相比(https://jan.newmarch.name/IoT/LinuxJournal/Routing/,為什麼我們需要一個lowpan介面route -A inet6
! [::]。這是問題所在嗎?我該如何解決這個問題?
我嘗試了以下方法
sudo ip r a 2001:db8::/64 dev bt0
sudo ip r a default via 2100:db8::1
RTNETLINK answers: No route to host
路線 -A inet6 輸出沒有任何變化,即
Kernel IPv6 routing table Destination Next Hop Flag Met Ref Use If localhost/128 [::] U 256 1 0 lo
2001:db8::/64 [::] U 256 2 0 bt0
2001:db8::/64 [::] U 1024 1 0 bt0
fe80::/64 [::] U 256 2 0 wlan0
fe80::/64 [::] U 256 2 0 bt0
[::]/0 [::] !n -1 1 0 lo
localhost/128 [::] Un 0 3 0 lo
2001:db8::/128 [::] Un 0 3 0 bt0
2001:db8::1/128 [::] Un 0 4 0 bt0
fe80::/128 [::] Un 0 4 0 wlan0
fe80::/128 [::] Un 0 3 0 bt0
fe80::98d4:d9d4:4e46:dc6a/128 [::] Un 0 3 0 wlan0
fe80::b827:ebff:fe0e:8ee/128 [::] Un 0 3 0 bt0
ff00::/8 [::] U 256 4 0 wlan0
ff00::/8 [::] U 256 2 0 bt0
[::]/0 [::] !n -1 1 0 lo