Uruchom Dockera OTBR

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Wyświetl źródło na GitHubie

Połączenie z OpenThread Border Router (OTBR) wymaga węzła Thread RCP, aby dołączyć do sieci Thread. Docker OTBR obsługuje zarówno fizyczny klucz RCP (OpenThread), jak i symulowany RCP.

Jeśli chcesz podłączyć stację dokującą OTBR do innych fizycznych urządzeń Thread, użyj fizycznego RCP. Jeśli chcesz przetestować routing graniczny z symulowaną siecią Thread, użyj symulowanego RCP.

RCP (fizycznie)

Użyj obsługiwanej platformy OpenThread na potrzeby fizycznego RCP. Więcej informacji znajdziesz w przewodniku Build and Flash RCP (Tworzenie i Flash RCP) w przewodniku konfiguracji i konfiguracji routera OpenThread Border.

Dołącz RCP

  1. Po skompilowaniu i miganiu podłącz urządzenie RCP do komputera z uruchomionym Dockerem OTBR przez USB.
  2. Aby określić nazwę portu szeregowego urządzenia RCP, sprawdź /dev:
    ls /dev/tty*
    /dev/ttyACMO
    

Uruchamianie kontenera Dockera OTBR

W nowym oknie terminala uruchom Docker OTBR, podając port szeregowy RCP&#39. Jeśli na przykład RCP jest zamontowane w systemie /dev/ttyACM0:

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

Poowoc powinien powstać taki wynik:

WARNING: Localhost DNS setting (--dns=127.0.0.1) may fail in containers.
RADIO_URL: spinel+hdlc+uart:///dev/ttyACM0
TUN_INTERFACE_NAME: wpan0
NAT64_PREFIX: 64:ff9b::/96
AUTO_PREFIX_ROUTE: true
AUTO_PREFIX_SLAAC: true
Current platform is ubuntu
* Applying /etc/sysctl.d/10-console-messages.conf ...
kernel.printk = 4 4 1 7
* Applying /etc/sysctl.d/10-ipv6-privacy.conf ...
net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.default.use_tempaddr = 2
* Applying /etc/sysctl.d/10-kernel-hardening.conf ...
kernel.kptr_restrict = 1
* Applying /etc/sysctl.d/10-link-restrictions.conf ...
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
* Applying /etc/sysctl.d/10-magic-sysrq.conf ...
kernel.sysrq = 176
* Applying /etc/sysctl.d/10-network-security.conf ...
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1
* Applying /etc/sysctl.d/10-ptrace.conf ...
kernel.yama.ptrace_scope = 1
* Applying /etc/sysctl.d/10-zeropage.conf ...
vm.mmap_min_addr = 65536
* Applying /etc/sysctl.d/60-otbr-ip-forward.conf ...
net.ipv6.conf.all.forwarding = 1
net.ipv4.ip_forward = 1
* Applying /etc/sysctl.conf ...
 * Starting userspace NAT64 tayga             [ OK ]
/usr/sbin/service
 * Starting domain name service... bind9      [ OK ]
/usr/sbin/service
 * dbus is not running
 * Starting system message bus dbus           [ OK ]
   ...fail!
otWeb[155]: border router web started on wpan0
otbr-agent[224]: Thread interface wpan0
otbr-agent[224]: Thread is down
otbr-agent[224]: Check if Thread is up: OK
otbr-agent[224]: Stop publishing service
otbr-agent[224]: PSKc is not initialized
otbr-agent[224]: Check if PSKc is initialized: OK
otbr-agent[224]: Initialize OpenThread Border Router Agent: OK
otbr-agent[224]: Border router agent started.

Platforma OTBR Docker jest teraz uruchomiona. Zostaw otwarte okno terminala w tle. Jeśli zakończysz proces lub zamkniesz okno, Docker OTBR nie będzie działać.

Aby kontynuować konfigurację Dockera OTBR, przejdź do opcji Testuj połączenia.

Symulowany RCP

Użyć symulowanej kompilacji OpenThread RCP dla symulowanego RCP. Jest to przydatne, gdy chcesz przetestować routing obramowania z symulowaną siecią Thread na jednym komputerze.

Tworzenie symulowanej aplikacji RCP

  1. Skopiuj repozytorium OpenThread:

    cd ~
    git clone https://github.com/openthread/openthread
    

  2. Rozrusznik i utwórz symulowaną aplikację:

    cd openthread
    ./bootstrap
    ./script/cmake-build simulation
    

Konfigurowanie dwukierunkowego strumienia danych

Użyj narzędzia wiersza poleceń socat do utworzenia dwukierunkowego strumienia danych, aby przesłać dane między symulowanym RCP i dockerem OTBR.

  1. Aby uruchomić ten proces, otwórz nowe okno terminala, ponieważ musi ono pozostać uruchomione, gdy uruchomiony jest Docker OTBR.

  2. Zainstaluj aplikację socat:

    sudo apt-get install socat
    

  3. Rozpocznij: socat

    socat -d -d pty,raw,echo=0 pty,raw,echo=0
    2018/09/06 09:58:29 socat[242994] N PTY is /dev/pts/2
    2018/09/06 09:58:29 socat[242994] N PTY is /dev/pts/7
    2018/09/06 09:58:29 socat[242994] N starting data transfer loop with FDs [5,5] and [7,7]
    

Zanotuj dwa porty szeregowe pogrubione w danych wyjściowych. Pierwsze z nich obsługuje symulowany protokół RCP, a drugi – Docker Dook. W przykładowych danych wyjściowych powyżej:

  • /dev/pts/2 = symulowany port RCP
  • /dev/pts/7 = Docker OTBR

Zostaw otwarte okno terminala w tle.

Uruchom symulowany RCP

  1. Otwórz nowe okno terminala, aby uruchomić symulowany RCP, ponieważ musi on pozostawać uruchomiony w trakcie działania OTBR Dockera.

  2. Korzystając z pierwszego portu szeregowego w danych wyjściowych socat, uruchom symulowaną aplikację RCP. Jeśli na przykład używasz wartości /dev/pts/2 z danych wyjściowych socat:

    ~/openthread/build/simulation/examples/apps/ncp/ot-rcp 1 > /dev/pts/2 < /dev/pts/2
    

To polecenie nie zawiera danych wyjściowych. Pozostaw to okno terminala otwarte i działające w tle.

Uruchamianie kontenera Dockera OTBR

W nowym oknie terminala uruchom Dockera OTBR, używając drugiego portu szeregowego w danych wyjściowych socat. Jeśli na przykład używasz wartości /dev/pts/7 wyjściowej socat:

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/pts/7:/dev/ttyUSB0 --privileged openthread/otbr

To polecenie używa też portu /dev/ttyUSB0. Jest to domyślny punkt podłączania w kontenerze Dockera.

Poowoc powinien powstać taki wynik:

WARNING: Localhost DNS setting (--dns=127.0.0.1) may fail in containers.
RADIO_URL: spinel+hdlc+uart:///dev/ttyUSB0
TUN_INTERFACE_NAME: wpan0
NAT64_PREFIX: 64:ff9b::/96
AUTO_PREFIX_ROUTE: true
AUTO_PREFIX_SLAAC: true
Current platform is ubuntu
* Applying /etc/sysctl.d/10-console-messages.conf ...
kernel.printk = 4 4 1 7
* Applying /etc/sysctl.d/10-ipv6-privacy.conf ...
net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.default.use_tempaddr = 2
* Applying /etc/sysctl.d/10-kernel-hardening.conf ...
kernel.kptr_restrict = 1
* Applying /etc/sysctl.d/10-link-restrictions.conf ...
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
* Applying /etc/sysctl.d/10-magic-sysrq.conf ...
kernel.sysrq = 176
* Applying /etc/sysctl.d/10-network-security.conf ...
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1
* Applying /etc/sysctl.d/10-ptrace.conf ...
kernel.yama.ptrace_scope = 1
* Applying /etc/sysctl.d/10-zeropage.conf ...
vm.mmap_min_addr = 65536
* Applying /etc/sysctl.d/60-otbr-ip-forward.conf ...
net.ipv6.conf.all.forwarding = 1
net.ipv4.ip_forward = 1
* Applying /etc/sysctl.conf ...
 * Starting userspace NAT64 tayga             [ OK ]
/usr/sbin/service
 * Starting domain name service... bind9      [ OK ]
/usr/sbin/service
 * dbus is not running
 * Starting system message bus dbus           [ OK ]
   ...fail!
otWeb[155]: border router web started on wpan0
otbr-agent[224]: Thread interface wpan0
otbr-agent[224]: Thread is down
otbr-agent[224]: Check if Thread is up: OK
otbr-agent[224]: Stop publishing service
otbr-agent[224]: PSKc is not initialized
otbr-agent[224]: Check if PSKc is initialized: OK
otbr-agent[224]: Initialize OpenThread Border Router Agent: OK
otbr-agent[224]: Border router agent started.

Platforma OTBR Docker jest teraz uruchomiona. Zostaw otwarte okno terminala w tle. Jeśli zakończysz proces lub zamkniesz okno, Docker OTBR nie będzie działać.