Я пытаюсь создать сеть 6lowpan с устройством(ами) raspberry pi и встроенными системами. Я включил bluetooth_6lowpan ( modprobe bluetooth_6lowpan
и echo 1 > /sys/kernel/debug/bluetooth/6lowpan_enable
) на обоих устройствах raspberry pi, где одно установлено с radvd и настроено как
interface bt0
{
AdvSendAdvert on;
prefix 2001:db8::/64
{
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
};
};
Я подключил другой Raspberry Pi (Pi 4, с версией ядра 5.4.83-v7l+) и встроенное устройство к этому маршрутизатору (Pi W Kernel ver 5.4.79+). Я могу пинговать между устройствами и маршрутизатором с обеих сторон, но не могу пинговать один Raspberry Pi на другое встроенное устройство через маршрутизатор. Также я не могу открыть сокет между маршрутизатором и устройством Raspberry Pi (я могу открыть сокет из встроенного устройства, и оно может отправлять данные, но не получать). Похоже, что Raspberry Pi не пересылает пакеты на интерфейс bt0.
ip -6 route
Ниже приведены пакеты с обоих Raspberry Pi:
устройство
::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
) [::]/0 — это адрес маршрутизатора, fe80::1 в руководстве, но в моем случае вся следующая надежда — [::]. В этом ли проблема? Как мне ее решить?
Я попробовал следующее
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