我正在尝试在我的 Raspberry Pi 上设置 OpenThread 边界路由器 (OTBR)。当按照官方指南Google Home 或其他应用程序无法连接到它。
使用以下命令启动 docker 容器:
docker run --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" -p 8080:80 --dns=127.0.0.1 -it --volume /dev/ttyACM0:/dev/ttyACM0 --privileged openthread/otbr --radio-url spinel+hdlc+uart:///dev/ttyACM0
没有应用程序可以连接到边界路由器。但是,如果我事先在主机上执行以下命令:
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=0
sudo sysctl -w net.ipv4.conf.all.forwarding=1
sudo sysctl -w net.ipv6.conf.all.forwarding=1
然后像这样启动容器
docker run --net=host --dns=127.0.0.1 -it --volume /dev/ttyACM0:/dev/ttyACM0 --privileged openthread/otbr --radio-url spinel+hdlc+uart:///dev/ttyACM0
一切都按预期运行,应用程序可以连接到边界路由器。因为我的主机上已经有一个使用端口 80 的容器,所以我想使用自定义 docker 网络。我不太清楚如何做到这一点,因为线程通信至少需要 IPv6 和 UDP 数据包来进行 DNS 发现。你对此有什么想法吗?
答案1
您可以尝试使用 macvlan 网络将其连接到您的家庭局域网。例如:
services:
openthread-border-router:
image: openthread/otbr
command: --radio-url spinel+hdlc+uart:///dev/ttyUSB0?uart-baudrate=460800
devices:
- /dev/serial/by-id/usb-Nabu_Casa_SkyConnect_v1.0_48a8c509fbe1ed11a357ec5162c613ac-if00-port0:/dev/ttyUSB0
restart: unless-stopped
sysctls:
- net.ipv6.conf.all.disable_ipv6=0
- net.ipv4.conf.all.forwarding=1
- net.ipv6.conf.all.forwarding=1
stdin_open: true
tty: true
privileged: true
dns:
- "127.0.0.1"
networks:
name-of-network:
ipv4_address: 192.168.1.71
networks:
name-of-network:
name: name-of-network
driver: macvlan
driver_opts:
parent: interface-name-like-en0-or-something
ipam:
config:
- subnet: "192.168.1.0/24"
gateway: "192.168.1.1"
ip_range: "192.168.1.64/27"