OTBR Docker'ı çalıştırma

Kaynağı GitHub'da görüntüle

OpenThread Sınır Yönlendirici (OTBR), bir cihaza katılmak için bir Thread RCP düğümü gerektirir Thread ağı. OTBR Docker, hem fiziksel RCP (OpenThread) hem de donanım anahtarı) veya simüle edilmiş RCP.

OTBR Docker'ı başka fiziksel Thread cihazlarına bağlamak istiyorsanız bir fiziksel RCP Simüle edilmiş bir İş Parçacığı (Thread) ile sınır yönlendirmeyi test etmek istiyorsanız ağ için simüle edilmiş bir RCP kullanın.

Fiziksel RCP

Şu sorgu için desteklenen herhangi bir OpenThread platformunu kullanın: fiziksel RCP RCP oluşturma ve Flash'ı inceleyin daha fazla bilgi için OpenThread Sınır Yönlendirici Derleme ve Yapılandırma kılavuzundaki adımı ekleyebilirsiniz.

RCP'yi ekleyin

  1. Oluşturma ve yanıp sönme işleminden sonra RCP cihazını çalışan makineye bağlayın USB üzerinden OTBR Docker.
  2. /dev kontrol ederek RCP cihazının seri bağlantı noktası adını belirleyin:
    ls /dev/tty*
    /dev/ttyACMO
    

OTBR Docker container'ını başlatma

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

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

İşlem başarılı olduktan sonra şuna benzer bir çıkış elde edersiniz:

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 çalışıyor. Bu terminal penceresini açık ve çalışır durumda bırakın: arka plan. İşlemden çıkar veya pencereyi kapatırsanız OTBR Docker gider aşağı tüketim.

Bağlantıyı Test Et'e giderek OTBR Docker kurulumuna devam edin.

Simüle RCP

Simüle edilen RCP için simüle edilmiş bir OpenThread RCP derlemesi kullanın. Bu, şu durumlarda yararlıdır: Simüle edilmiş bir Thread ağıyla sınır yönlendirmeyi tek bir cihazda test etmek istiyorsanız üretiliyor.

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ı önyükleyin ve derleyin:

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

İki yönlü veri akışı ayarlama

İki yönlü veri akışı oluşturmak için socat komut satırı yardımcı programını kullanma kullanarak simüle edilmiş RCP ile OTBR Docker arasında veri aktarımı yapabilir.

  1. Çalışır durumda bırakılması gerektiğinden, bu işlemi çalıştırmak için yeni bir terminal penceresi açın OTBR Docker çalışırken.

  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 olarak yazılmış iki seri bağlantı noktasını not edin. Şunun için ilkiyi kullanın: ikincisi ise OTBR Docker'ı içeriyor. Örnek çıkışta yukarıda:

  • /dev/pts/2 = Simüle edilmiş RCP bağlantı noktası
  • /dev/pts/7 = OTBR Docker
ziyaret edin.

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

Simüle edilen RCP'yi başlat

  1. Simüle edilen RCP'yi çalıştırmak için yeni bir terminal penceresi açın (bırakılması gerekir) yardımcı olur.

  2. socat çıkışındaki ilk seri bağlantı noktasını kullanarak simüle edilen RCP'yi başlatın bir uygulamadır. Örneğin, socat çıkışından /dev/pts/2 kullanıyorsanız:

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

Bu komuttan çıkış yok. Bu terminal penceresini açık bırakın ve arka planda çalışıyor.

OTBR Docker container'ını başlatma

Yeni bir terminal penceresindeki ikinci seri bağlantı noktasını kullanarak OTBR Docker'ı başlatın socat çıkış. Örneğin, socat çıkışından /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 aynı zamanda /dev/ttyUSB0 bağlantı noktasını da kullandığını unutmayın. Bu, varsayılan ayardır ekleme noktası ekleyin.

İşlem başarılı olduktan sonra şuna benzer bir çıkış elde edersiniz:

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 çalışıyor. Bu terminal penceresini açık ve çalışır durumda bırakın: arka plan. İşlemden çıkar veya pencereyi kapatırsanız OTBR Docker gider aşağı tüketim.