在自定义网络上的 Docker 容器中运行 OpenThread 边界路由器

在自定义网络上的 Docker 容器中运行 OpenThread 边界路由器

我正在尝试在我的 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"

相关内容