OTBR Docker'ı çalıştırma

Kaynağı GitHub'da göster

OpenThread Sınır Yönlendirici (OTBR), bir Thread ağına katılmak için Thread RCP düğümü gerektirir. OTBR Docker, hem fiziksel RCP (OpenThread dongle) hem de simüle edilmiş RCP için destek sağlar.

OTBR Docker'ı diğer fiziksel Thread cihazlarına bağlamak istiyorsanız fiziksel bir RCP kullanın. Sınır yönlendirmesini simüle edilmiş bir İleti dizisi ağıyla test etmek istiyorsanız RCP'yi simüle edin.

Fiziksel RCP

Fiziksel RCP için desteklenen herhangi bir OpenThread platformunu kullanın. Daha fazla bilgi için OpenThread Sınır Yönlendirici Oluşturma ve Yapılandırma kılavuzundaki Oluşturma ve flash RCP adımına bakın.

RCP'yi ekle

  1. Derleyip yanıp söndükten sonra RCP cihazını USB üzerinden OTBR Docker'ı çalıştıran makineye takın.
  2. /dev'yi kontrol ederek RCP cihazının seri bağlantı noktası adını belirleyin:
    ls /dev/tty*
    /dev/ttyACMO
    

OTBR Docker container'ını başlat

Yeni bir terminal penceresinde, RCP'nin seri bağlantı noktasına referans vererek OTBR Docker'ı başlatın. Örneğin, RCP /dev/ttyACM0 adresine eklendiyse:

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

Başarılı olduktan sonra şuna benzer bir çıkış alırsınız:

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 şimdi çalışıyor. Bu terminal penceresini arka planda açık ve çalışır durumda bırakın. Süreçten çıkarsanız veya pencereyi kapatırsanız OTBR Docker kapanır.

OTBR Docker kurulumuna devam etmek için Bağlantıyı Test Et bölümüne gidin.

RCP Simülasyonu

Simüle edilen RCP için OpenThread RCP simülasyonu oluşturun. Bu özellik, tek bir makinede simüle edilmiş bir Thread ağıyla sınır yönlendirmesini test etmek istediğinizde kullanışlıdır.

Simüle edilen RCP uygulamasını oluşturma

  1. OpenThread deposunu klonlayın:

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

  2. Simüle edilen uygulamayı başlatın ve simüle edin:

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

Çift yönlü veri akışı ayarlama

Simüle edilen RCP ve OTBR Docker arasında veri aktarmak için iki yönlü bir veri akışı oluşturmak üzere socat komut satırı yardımcı programını kullanın.

  1. OTBR Docker çalışırken bu işlemi çalıştırmak için yeni bir terminal penceresi açın.

  2. socat uygulamasını yükleyin:

    sudo apt-get install socat
    

  3. Başlangıç: 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]
    

Çıkışta kalın gösterilen iki seri bağlantı noktasını not edin. İkincisi simüle edilmiş RCP ve ikincisi OTBR Docker'ı kullanın. Yukarıdaki örnek çıkışta:

  • /dev/pts/2 = Simüle edilen RCP bağlantı noktası
  • /dev/pts/7 = OTBR Docker

Bu terminal penceresini açık ve arka planda çalışır durumda bırakın.

Simüle edilen RCP'yi başlat

  1. OTBR Docker çalışırken çalışması nedeniyle simüle edilen RCP'yi çalıştırmak için yeni bir terminal penceresi açın.

  2. socat çıkışındaki ilk seri bağlantı noktasını kullanarak simüle edilmiş RCP uygulamasını başlatın. Örneğin, socat çıkışının içinden /dev/pts/2 kullanılıyorsa:

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

Bu komuttan çıkış yok. Bu terminal penceresini açık arka planda çalıştırın.

OTBR Docker container'ını başlat

Yeni bir terminal penceresinde, socat çıkışındaki ikinci seri bağlantı noktasını kullanarak OTBR Docker'ı başlatın. Örneğin, socat çıkışında /dev/pts/7 kullanıyorsanız:

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

Komutun ayrıca /dev/ttyUSB0 bağlantı noktasını kullandığını unutmayın. Bu, Docker kapsayıcısında varsayılan ekleme noktasıdır.

Başarılı olduktan sonra şuna benzer bir çıkış alırsınız:

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 şimdi çalışıyor. Bu terminal penceresini arka planda açık ve çalışır durumda bırakın. Süreçten çıkarsanız veya pencereyi kapatırsanız OTBR Docker kapanır.