OTBR डॉकर चलाएं

GitHub पर स्रोत देखें

OpenThread Border राऊटर (OTBR) को थ्रेड नेटवर्क से जुड़ने के लिए, थ्रेड RCP नोड की ज़रूरत होती है. OTBR डॉकर एक वास्तविक RCP (OpenThread dongle) या कृत्रिम RCP दोनों का समर्थन करते हैं.

अगर आप OTBR डॉकर को अन्य वास्तविक थ्रेड डिवाइस से कनेक्ट करना चाहते हैं, तो एक भौतिक RCP का उपयोग करें. अगर आप सिमुलेट किए गए थ्रेड नेटवर्क के साथ बॉर्डर रूटिंग की जांच करना चाहते हैं, तो सिम्युलेट किए गए RCP का इस्तेमाल करें.

फ़िज़िकल RCP

फ़िज़िकल RCP के लिए, किसी भी ऐसे OpenThread प्लैटफ़ॉर्म का इस्तेमाल करें जो काम करता हो. ज़्यादा जानकारी के लिए, OpenThread Border राऊटर बिल्ड और कॉन्फ़िगरेशन गाइड का बिल्ड और फ़्लैश RCP चरण देखें.

RCP अटैच करें

  1. बनाने और फ़्लैश करने के बाद, USB के ज़रिए OTBR डॉक पर चलने वाली मशीन से RCP डिवाइस अटैच करें.
  2. /dev चेक करके RCP डिवाइस के लिए सीरियल पोर्ट का नाम तय करें:
    ls /dev/tty*
    /dev/ttyACMO
    

OTBR डॉकर कंटेनर शुरू करें

नई टर्मिनल विंडो में, RCP के सीरियल पोर्ट के बारे में बताते हुए OTBR डॉकर शुरू करें. उदाहरण के लिए, अगर RCP को /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

सफल होने पर, आपके पास इसके जैसा आउटपुट होना चाहिए:

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 डॉकर अब चल रहा है. इस टर्मिनल विंडो को बैकग्राउंड में खुला रखें और चलाएं. अगर आप प्रोसेस छोड़ देते हैं या विंडो बंद कर देते हैं, तो OTBR डॉकर नीचे चला जाएगा.

OTBR डॉकर सेटअप के साथ जारी रखने के लिए परीक्षण कनेक्टिविटी पर जाएं.

सिम्युलेटेड RCP

सिम्युलेट किए गए RCP के लिए, सिम्युलेट किए गए OpenThread RCP बिल्ड का इस्तेमाल करें. यह तब काम आता है, जब आप एक मशीन पर सिमुलेटेड थ्रेड नेटवर्क से बॉर्डर रूटिंग की जांच करना चाहते हैं.

सिम्युलेटेड RCP ऐप्लिकेशन बनाएं

  1. OpenThread डेटा संग्रह स्थान बंद करें:

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

  2. बूटस्ट्रैप करें और नकली ऐप्लिकेशन बनाएं:

    cd openthread
    ./bootstrap
    make -f examples/Makefile-simulation
    

दोतरफ़ा डेटा स्ट्रीम सेट अप करें

सिम्युलेटेड RCP और OTBR डॉकर के बीच डेटा ट्रांसफ़र करने के लिए, दो-दिशाओं वाला डेटा स्ट्रीम बनाने के लिए socat कमांड लाइन सुविधा का इस्तेमाल करें.

  1. इस प्रोसेस को चलाने के लिए एक नई टर्मिनल विंडो खोलें, क्योंकि इसे ओटीबीआर डॉकर के चलने के दौरान ही छोड़ना होगा.

  2. socat इंस्टॉल करें:

    sudo apt-get install socat
    

  3. 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]
    

आउटपुट में दोनों सीरियल पोर्ट को बोल्ड करने वाला नोट बनाएं. पहले वाले का इस्तेमाल सिम्युलेट किए गए RCP के लिए और दूसरे को OTBR डॉकर के लिए करें. ऊपर दिए गए उदाहरण के आउटपुट में:

  • /dev/pts/2 = सिम्युलेटेड RCP पोर्ट
  • /dev/pts/7 = OTBR डॉकर

इस टर्मिनल विंडो को बैकग्राउंड में खुला रखें और चालू रखें.

सिम्युलेटेड RCP शुरू करें

  1. सिम्युलेट की गई RCP चलाने के लिए, एक नई टर्मिनल विंडो खोलें, क्योंकि उसे OTBR डॉकर के चलने के दौरान चलाना ज़रूरी है.

  2. socat आउटपुट में पहले सीरियल पोर्ट का इस्तेमाल करके, सिम्युलेट किया RCP ऐप्लिकेशन शुरू करें. उदाहरण के लिए, अगर आप socat आउटपुट से /dev/pts/2 का इस्तेमाल कर रहे हैं, तो:

    ~/openthread/output/simulation/bin/ot-rcp 1 > /dev/pts/2 < /dev/pts/2
    

इस निर्देश के लिए कोई आउटपुट नहीं है. इस टर्मिनल विंडो को खुला रखें और बैकग्राउंड में चलाएं.

OTBR डॉकर कंटेनर शुरू करें

एक नई टर्मिनल विंडो में, socat आउटपुट में दूसरे सीरियल पोर्ट का इस्तेमाल करके OTBR डॉकर को चालू करें. उदाहरण के लिए, अगर आप socat आउटपुट से /dev/pts/7 का इस्तेमाल कर रहे हैं, तो:

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

ध्यान दें कि निर्देश, /dev/ttyUSB0 पोर्ट का भी इस्तेमाल कर रहा है. यह डॉकर कंटेनर में डिफ़ॉल्ट माउंट पॉइंट है.

सफल होने पर, आपके पास इसके जैसा आउटपुट होना चाहिए:

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 डॉकर अब चल रहा है. इस टर्मिनल विंडो को बैकग्राउंड में खुला रखें और चलाएं. अगर आप प्रोसेस छोड़ देते हैं या विंडो बंद कर देते हैं, तो OTBR डॉकर नीचे चला जाएगा.