Google is committed to advancing racial equity for Black communities. See how.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Esegui OTBR Docker

OpenThread Border Router (OTBR) richiede un nodo Thread RCP per entrare in una rete Thread. OTBR Docker fornisce supporto sia per un RCP fisico (OpenThread dongle) che per un RCP simulato.

Se desideri connettere OTBR Docker ad altri dispositivi Thread fisici, utilizza un RCP fisico. Se desideri testare il border routing con una rete Thread simulata, utilizza un RCP simulato.

RCP fisico

Utilizza qualsiasi piattaforma OpenThread supportata per l'RCP fisico. Per ulteriori informazioni, vedere il passaggio Build and flash RCP dalla guida alla creazione e alla configurazione di OpenThread Border Router.

Allega l'RCP

  1. Dopo la creazione e il flashing, collegare il dispositivo RCP alla macchina su cui è in esecuzione OTBR Docker tramite USB.
  2. Determina il nome della porta seriale per il dispositivo RCP controllando /dev :
    ls /dev/tty*
    /dev/ttyACMO

Avvia il container Docker OTBR

In una nuova finestra del terminale, avvia OTBR Docker, facendo riferimento alla porta seriale dell'RCP. Ad esempio, se RCP è montato su /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

In caso di successo, dovresti avere un output simile a questo:

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.

OTBR Docker è ora in esecuzione. Lascia questa finestra di terminale aperta e in esecuzione in background. Se esci dal processo o chiudi la finestra, OTBR Docker scenderà.

Vai a Test connettività per continuare con la configurazione Docker OTBR.

RCP simulato

Utilizzare una build RCP OpenThread simulata per l'RCP simulato. Ciò è utile se si desidera testare il border routing con una rete Thread simulata su una singola macchina.

Crea l'applicazione RCP simulata

  1. Clona il repository OpenThread:
    cd ~
    git clone https://github.com/openthread/openthread
  2. Bootstrap e build dell'applicazione simulata:
    cd openthread
    ./bootstrap
    make -f examples/Makefile-simulation
    

Imposta un flusso di dati bidirezionale

Utilizzare l'utilità della riga di comando socat per stabilire un flusso di dati bidirezionale per trasferire i dati tra l'RCP simulato e OTBR Docker.

  1. Apri una nuova finestra di terminale per eseguire questo processo, poiché deve essere lasciato in esecuzione mentre OTBR Docker è in esecuzione.
  2. Installa socat :
    sudo apt-get install socat
  3. Avvia 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]
    

Annotare le due porte seriali in grassetto nell'output. Usa il primo per l'RCP simulato e il secondo per OTBR Docker. Nell'output di esempio sopra:

  • /dev/pts/2 = porta RCP simulata
  • /dev/pts/7 = OTBR Docker

Lascia questa finestra di terminale aperta e in esecuzione in background.

Avvia l'RCP simulato

  1. Apri una nuova finestra di terminale per eseguire l'RCP simulato, poiché deve essere lasciato in esecuzione mentre OTBR Docker è in esecuzione.
  2. Utilizzando la prima porta seriale nell'output socat , avvia l'applicazione RCP simulata. Ad esempio, se si utilizza /dev/pts/2 dal socat uscita:
    ~/openthread/output/x86_64-unknown-linux-gnu/bin/ot-rcp 1 \
        > /dev/pts/2 < /dev/pts/2

Nessun output da questo comando. Lascia questa finestra di terminale aperta e in esecuzione in background.

Avvia il container Docker OTBR

In una nuova finestra di terminale, avvia OTBR Docker, utilizzando la seconda porta seriale nell'output socat . Ad esempio, se si utilizza /dev/pts/7 dall'output di 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

Notare che il comando utilizza anche la porta /dev/ttyUSB0 . Questo è il punto di montaggio predefinito all'interno del contenitore Docker.

In caso di successo, dovresti avere un output simile a questo:

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.

OTBR Docker è ora in esecuzione. Lascia questa finestra di terminale aperta e in esecuzione in background. Se esci dal processo o chiudi la finestra, OTBR Docker scenderà.