1. บทนำ
เราเตอร์ Thread Border คืออะไร
เทรดคือโปรโตคอลเครือข่าย Mesh แบบไร้สายที่ใช้พลังงานจาก IP ซึ่งเปิดใช้การสื่อสารที่ปลอดภัยระหว่างอุปกรณ์กับอุปกรณ์ระบบคลาวด์ เครือข่ายชุดข้อความจะปรับตัวตามการเปลี่ยนแปลงโทโพโลยีเพื่อหลีกเลี่ยงความล้มเหลวจุดเดียว
เราเตอร์ Thread Border จะเชื่อมต่อเครือข่าย Thread กับเครือข่ายอื่นๆ ที่ใช้ IP เช่น Wi-Fi หรืออีเทอร์เน็ต เครือข่ายชุดข้อความต้องใช้เราเตอร์ Border ในการเชื่อมต่อเครือข่ายอื่นๆ เราเตอร์ Thread Border รองรับฟังก์ชันต่อไปนี้น้อยที่สุด
- การเชื่อมต่อ IP แบบ 2 ทิศทางระหว่างเครือข่ายชุดข้อความและเครือข่าย Wi-Fi/อีเทอร์เน็ต
- การค้นหาบริการแบบ 2 ทิศทางผ่าน mDNS (ในลิงก์ Wi-Fi/อีเทอร์เน็ต) และ SRP (ในเครือข่ายชุดข้อความ)
- โครงสร้างพื้นฐานชุดข้อความที่ผสานพาร์ติชันชุดข้อความบนลิงก์ที่อิงตาม IP
- การว่าจ้างชุดข้อความภายนอก (เช่น โทรศัพท์มือถือ) เพื่อตรวจสอบสิทธิ์และเข้าร่วมอุปกรณ์ชุดข้อความกับเครือข่ายชุดข้อความ
OpenThread Border Router (OTBR) ที่ Google เปิดตัวคือการใช้งานเราเตอร์ Thread Border แบบโอเพนซอร์ส
สิ่งที่จะสร้าง
ใน Codelab นี้ คุณจะต้องตั้งค่าเราเตอร์ Thread Border และเชื่อมต่อโทรศัพท์มือถือของคุณกับอุปกรณ์ Thread End Screen ผ่าน Border Router
สิ่งที่คุณจะได้เรียนรู้
- วิธีตั้งค่า OTBR
- วิธีการสร้างเครือข่ายชุดข้อความด้วย OTBR
- วิธีสร้างอุปกรณ์ OpenThread CLI ด้วยฟีเจอร์ SRP
- วิธีลงทะเบียนบริการกับ SRP
- วิธีค้นหาและเข้าถึงอุปกรณ์ปลายทางของชุดข้อความ
สิ่งที่ต้องมี
- อุปกรณ์ Raspberry Pi 3/4 และการ์ด SD ที่รองรับอย่างน้อย 8 GB
- สารกึ่งตัวนํานอร์ดิก 2 รายการNRF52840 บอร์ดนักพัฒนาซอฟต์แวร์
- Wi-Fi AP ที่ไม่ได้เปิดใช้ IPv6 Router Advertisement Guard ในเราเตอร์
- โทรศัพท์ iOS ที่รองรับ iOS 14 หรือโทรศัพท์ Android อย่างน้อย 8.1 ขึ้นไป
2. ตั้งค่า OTBR
ตั้งค่า Raspberry Pi
การตั้งค่าอุปกรณ์ Raspberry Pi ใหม่ด้วยเครื่องมือ rpi-imager
นั้นเป็นเรื่องง่าย โดยทําตามวิธีการใน raspberrypi.org (แทนที่จะใช้ Raspberry Pi OS เวอร์ชันล่าสุดในเครื่องมือ ให้ดาวน์โหลด 2021-05-07-raspios-buster-armhf-lite ด้วยตัวเอง) เพื่อดําเนินการขั้นตอนโทรศัพท์มือถือใน Codelab นี้ให้เสร็จสมบูรณ์ คุณต้องเชื่อมต่อ Raspberry Pi กับ Wi-Fi AP ทําตามคําแนะนํานี้เพื่อตั้งค่าการเชื่อมต่อแบบไร้สาย ให้คุณเข้าสู่ระบบ Raspberry Pi ด้วย SSH ได้สะดวกโดยดูวิธีการที่นี่
รับรหัส OTBR
ลงชื่อเข้าสู่ระบบ Raspberry Pi และโคลน ot-br-posix
จาก GitHub:
$ git clone https://github.com/openthread/ot-br-posix.git --depth 1
สร้างและติดตั้ง OTBR
OTBR มีสคริปต์ 2 รายการที่เปิดเครื่องและตั้งค่าเราเตอร์ Thread Border ดังนี้
$ cd ot-br-posix $ ./script/bootstrap $ INFRA_IF_NAME=wlan0 ./script/setup
OTBR ใช้งานได้ทั้งในอินเทอร์เฟซชุดข้อความและเครือข่ายเครือข่าย (เช่น Wi-Fi/อีเทอร์เน็ต) ที่ระบุด้วย INFRA_IF_NAME
อินเทอร์เฟซ Thread สร้างขึ้นโดย OTBR และตั้งชื่อเป็น wpan0
โดยค่าเริ่มต้น และอินเทอร์เฟซโครงสร้างพื้นฐานจะมีค่าเริ่มต้นเป็น wlan0
หากไม่ได้ระบุ INFRA_IF_NAME
ไว้อย่างชัดแจ้ง หาก Raspberry Pi เชื่อมต่อด้วยสายอีเทอร์เน็ต ให้ระบุชื่ออินเทอร์เฟซอีเทอร์เน็ต (เช่น eth0
)
$ INFRA_IF_NAME=eth0 ./script/setup
ตรวจสอบว่าติดตั้ง OTBR สําเร็จหรือไม่โดยทําดังนี้
$ sudo service otbr-agent status ● otbr-agent.service - Border Router Agent Loaded: loaded (/lib/systemd/system/otbr-agent.service; enabled; vendor preset: enabled) Active: activating (auto-restart) (Result: exit-code) since Mon 2021-03-01 05:43:38 GMT; 2s ago Process: 2444 ExecStart=/usr/sbin/otbr-agent $OTBR_AGENT_OPTS (code=exited, status=2) Main PID: 2444 (code=exited, status=2)
คาดว่าบริการ otbr-agent
จะใช้งานไม่ได้ เนื่องจากต้องมีชิป RCP
จึงจะทํางานได้
รีบูต Raspberry Pi เพื่อให้การเปลี่ยนแปลงมีผล
สร้างและเฟิร์มแวร์เฟิร์มแวร์ RCP
OTBR รองรับชิปวิทยุ 15.4 ในโหมด Radio Co-Processor (RCP) ในโหมดนี้ สแต็ก OpenThread จะทํางานบนฝั่งโฮสต์และส่ง/รับเฟรมผ่านตัวแปลง IEEE802.15.4
ทําตามขั้นตอนที่ 4 ของ Codelab การสร้างชุดข้อความด้วยกระดาน nRF52840 และ OpenThread เพื่อสร้างและแฟลชอุปกรณ์ nRF52840 RCP
$ script/build nrf52840 USB_trans
เริ่ม OTBR และยืนยันสถานะ
เชื่อมต่อกระดาน nRF52840 กับ Raspberry Pi แล้วเริ่มใช้บริการ otbr-agent
ดังนี้
$ sudo service otbr-agent restart
ตรวจสอบว่าบริการ otbr-agent
ทํางานอยู่
$ sudo service otbr-agent status ● otbr-agent.service - Border Router Agent Loaded: loaded (/lib/systemd/system/otbr-agent.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2021-03-01 05:46:26 GMT; 2s ago Main PID: 2997 (otbr-agent) Tasks: 1 (limit: 4915) CGroup: /system.slice/otbr-agent.service └─2997 /usr/sbin/otbr-agent -I wpan0 -B wlan0 spinel+hdlc+uart:///dev/ttyACM0 Mar 01 05:46:26 raspberrypi otbr-agent[2997]: Stop publishing service Mar 01 05:46:26 raspberrypi otbr-agent[2997]: [adproxy] Stopped Mar 01 05:46:26 raspberrypi otbr-agent[2997]: PSKc is not initialized Mar 01 05:46:26 raspberrypi otbr-agent[2997]: Check if PSKc is initialized: OK Mar 01 05:46:26 raspberrypi otbr-agent[2997]: Initialize OpenThread Border Router Agent: OK Mar 01 05:46:26 raspberrypi otbr-agent[2997]: Border router agent started. Mar 01 05:46:26 raspberrypi otbr-agent[2997]: [INFO]-CORE----: Notifier: StateChanged (0x00038200) [NetData PanId NetName ExtPanId] Mar 01 05:46:26 raspberrypi otbr-agent[2997]: [INFO]-PLAT----: Host netif is down
3. สร้างเครือข่ายชุดข้อความ
มีคําสั่ง ot-ctl
ซึ่งใช้ควบคุมบริการ otbr-agent
ได้ ot-ctl
ยอมรับคําสั่ง OpenThread CLI ทั้งหมด โปรดดูรายละเอียดเพิ่มเติมที่ คู่มือ OpenThread CLI
สร้างเครือข่ายชุดข้อความด้วย OTBR
$ sudo ot-ctl dataset init new Done $ sudo ot-ctl dataset commit active Done $ sudo ot-ctl ifconfig up Done $ sudo ot-ctl thread start Done
รอสักครู่ เราควรจะเห็นว่า OTBR ทําหน้าที่เป็นชุดข้อความ leader
และมีคํานําหน้า off-mesh-routable
(OMR) ในข้อมูลเครือข่ายชุดข้อความ:
$ sudo ot-ctl state leader Done $ sudo ot-ctl netdata show Prefixes: Prefixes: fd76:a5d1:fcb0:1707::/64 paos med 4000 Routes: fd49:7770:7fc5:0::/64 s med 4000 Services: 44970 5d c000 s 4000 44970 01 9a04b000000e10 s 4000 Done $ sudo ot-ctl ipaddr fda8:5ce9:df1e:6620:0:ff:fe00:fc11 fda8:5ce9:df1e:6620:0:0:0:fc38 fda8:5ce9:df1e:6620:0:ff:fe00:fc10 fd76:a5d1:fcb0:1707:f3c7:d88c:efd1:24a9 fda8:5ce9:df1e:6620:0:ff:fe00:fc00 fda8:5ce9:df1e:6620:0:ff:fe00:4000 fda8:5ce9:df1e:6620:3593:acfc:10db:1a8d fe80:0:0:0:a6:301c:3e9f:2f5b Done
4. ตั้งค่าอุปกรณ์ปลายทางไคลเอ็นต์ SRP
สร้างและแฟลช OT CLI
ทําตามขั้นตอนที่ 5 ของ Codelab เกี่ยวกับสร้างเครือข่ายชุดข้อความด้วยกระดาน nRF52840 และ OpenThread เพื่อสร้างและตกแต่งอุปกรณ์ปลายทาง nRF52840 CLI
แต่แทนที่จะเปิดใช้ OT_COMMISSIONER
และ OT_JOINER
โหนด CLI จําเป็นต้องใช้ฟีเจอร์ OT_SRP_CLIENT
และ OT_ECDSA
การเรียกใช้บิลด์แบบเต็มควรมีลักษณะดังนี้
$ script/build nrf52840 USB_trans -DOT_SRP_CLIENT=ON -DOT_ECDSA=ON
เข้าร่วมเครือข่าย OTBR
หากต้องการเข้าร่วมเครือข่ายชุดข้อความที่สร้างโดยบริการ otbr-agent
เราต้องรับชุดข้อมูลการดําเนินการด้านการปฏิบัติงานจากอุปกรณ์ OTBR กลับไปที่บรรทัดคําสั่ง otbr-agent
และรับชุดข้อมูลที่ใช้งานอยู่
$ sudo ot-ctl dataset active -x 0e080000000000010000000300001235060004001fffe002083d3818dc1c8db63f0708fda85ce9df1e662005101d81689e4c0a32f3b4aa112994d29692030f4f70656e5468726561642d35326532010252e204103f23f6b8875d4b05541eeb4f9718d2f40c0302a0ff Done
กลับไปที่เซสชันหน้าจอโหนดของไคลเอ็นต์ SRP และตั้งค่าชุดข้อมูลที่ใช้งานอยู่ ดังนี้
> dataset set active 0e080000000000010000000300001235060004001fffe002083d3818dc1c8db63f0708fda85ce9df1e662005101d81689e4c0a32f3b4aa112994d29692030f4f70656e5468726561642d35326532010252e204103f23f6b8875d4b05541eeb4f9718d2f40c0302a0ff Done
จากนั้นเริ่มอินเทอร์เฟซชุดข้อความ ดังนี้
> ifconfig up Done > thread start Done
รอสักครู่และตรวจสอบว่าเข้าร่วมเครือข่ายชุดข้อความสําเร็จหรือไม่ ให้ดําเนินการดังนี้
> state child Done > netdata show Prefixes: fd76:a5d1:fcb0:1707::/64 paos med 4000 Routes: fd49:7770:7fc5:0::/64 s med 4000 Services: 44970 5d c000 s 4000 44970 01 9a04b000000e10 s 4000 Done > ipaddr fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927 fda8:5ce9:df1e:6620:0:ff:fe00:4001 fda8:5ce9:df1e:6620:ed74:123:cc5d:74ba fe80:0:0:0:d4a9:39a0:abce:b02e Done
ตรวจสอบว่าข้อมูลเครือข่ายตรงกับข้อมูลใน OTBR ตอนนี้เราใช้คําสั่ง ping กับที่อยู่ OMR ของ OTBR ได้
> ping fd76:a5d1:fcb0:1707:f3c7:d88c:efd1:24a9 Done > 16 bytes from fd76:a5d1:fcb0:1707:f3c7:d88c:efd1:24a9: icmp_seq=1 hlim=64 time=49ms
5. เผยแพร่บริการในอุปกรณ์ปลายทาง
mDNS ถูกนําไปใช้อย่างกว้างขวางสําหรับการเผยแพร่บริการ DNS-SD บน link-local แต่ข้อความมัลติแคสต์ใช้แบนด์วิดท์มากเกินไปและจะทําให้แบตเตอรี่ของอุปกรณ์ที่ใช้พลังงานต่ําหมดเร็ว เทรดเดอร์ใช้โปรโตคอล SRP ที่ไม่ซ้ํากันเพื่อลงทะเบียนบริการกับเราเตอร์ Border และอาศัย Border Router เพื่อโฆษณาบริการในลิงก์ Wi-Fi หรืออีเทอร์เน็ต
เราจะจดทะเบียนบริการด้วยคําสั่ง srp client
ได้
ไปที่เซสชันหน้าจอโหนดไคลเอ็นต์ SRP และเริ่มต้นไคลเอ็นต์ SRP โดยอัตโนมัติ
> srp client autostart enable Done
กําหนดชื่อโฮสต์ที่จะโฆษณาผ่านลิงก์ Wi-Fi/อีเทอร์เน็ต
> srp client host name ot-host Done
อุปกรณ์ที่ลิงก์ Wi-Fi/อีเทอร์เน็ตเพื่อเข้าถึงอุปกรณ์ปลายทางของชุดข้อความ จะต้องโฆษณาที่อยู่ OMR ของอุปกรณ์ปลายทาง ดังนี้
> srp client host address fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927 Done
ในตอนท้ายสุด ให้ลงทะเบียนบริการ _ipps._tcp
ปลอม ดังนี้
> srp client service add ot-service _ipps._tcp 12345 Done
รอสักครู่แล้วเราควรจะเห็นบริการที่จดทะเบียนแล้ว
> srp client service instance:"ot-service", name:"_ipps._tcp", state:Registered, port:12345, priority:0, weight:0 Done
เราทําตามขั้นตอนการตั้งค่าทั้งหมดให้เสร็จสิ้นและ_ipps._tcp
ควรลงโฆษณาในลิงก์ Wi-Fi/อีเทอร์เน็ต ถึงเวลาค้นพบและสิ้นสุดอุปกรณ์แล้ว
6. สํารวจบริการ
สํารวจบริการด้วยโทรศัพท์มือถือ
เราใช้แอปเบราว์เซอร์บริการเพื่อค้นหาบริการ mDNS ของโทรศัพท์ Android นอกจากนี้ยังมีแอปที่เทียบเท่าสําหรับอุปกรณ์เคลื่อนที่ iOS ด้วย เปิดแอปและบริการ _ipps._tcp
จะปรากฏขึ้น
สํารวจบริการด้วยโฮสต์ Linux
หากต้องการค้นพบบริการจากโฮสต์ Linux อื่น ให้ใช้คําสั่ง avahi-browse
ติดตั้ง avahi-daemon
และ avahi-utils
:
$ sudo apt-get install -y avahi-daemon avahi-utils
แก้ปัญหาเกี่ยวกับบริการ
$ sudo service avahi-daemon start # Ensure the avahi daemon is started. $ avahi-browse -r _ipps._tcp + wlan0 IPv6 ot-service Secure Internet Printer local = wlan0 IPv6 ot-service Secure Internet Printer local hostname = [ot-host.local] address = [fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927] port = [12345] txt = [] ...
สํารวจบริการด้วยโฮสต์ macOS
คุณใช้ dns-sd
ใน macOS เพื่อแก้ไขบริการได้โดยทําดังนี้
$ dns-sd -Z _ipps._tcp local. Browsing for _ipps._tcp.local. DATE: ---Sun 14 Mar 2021--- 21:31:42.125 ...STARTING... ; To direct clients to browse a different domain, substitute that domain in place of '@' lb._dns-sd._udp PTR @ ; In the list of services below, the SRV records will typically reference dot-local Multicast DNS names. ; When transferring this zone file data to your unicast DNS server, you'll need to replace those dot-local ; names with the correct fully-qualified (unicast) domain name of the target host offering the service. _ipps._tcp PTR ot-service._ipps._tcp ot-service._ipps._tcp SRV 0 0 12345 ot-host.local. ; Replace with unicast FQDN of target host ot-service._ipps._tcp TXT "" ...
7. ใช้คําสั่ง ping กับอุปกรณ์ปลายทาง
ใช้คําสั่ง ping ในโทรศัพท์มือถือ
ยกตัวอย่างโทรศัพท์ Pixel เพราะเราสามารถค้นหาที่อยู่ OMR ของบริการที่ลงทะเบียนก่อนหน้านี้ "ot-service" ในหน้ารายละเอียดของอินสแตนซ์บริการในแอปเบราว์เซอร์บริการ
ตอนนี้เราใช้คําสั่ง ping กับที่อยู่ OMR โดยใช้แอป Network Analyzer อื่นได้
ขออภัย แอปเครื่องมือวิเคราะห์เครือข่ายเวอร์ชัน Android ไม่รองรับการค้นหา mDNS สําหรับยูทิลิตีคําสั่ง ping และเราไม่สามารถเรียกชื่อโฮสต์ ot-host.local
ได้โดยตรง (เราใช้คําสั่ง ping กับชื่อโฮสต์ในแอป iOS ได้)
ใช้คําสั่ง ping จากโฮสต์ของ Linux/macOS
เราเตอร์ Thread Border จะส่ง ICMPv6 Router Advertising (RA) เพื่อโฆษณาคํานําหน้า (ผ่าน Prefix Information Option) และเส้นทาง (ผ่าน Route Information Option) บนลิงก์ Wi-Fi/อีเทอร์เน็ต
เตรียมโฮสต์ Linux
โปรดตรวจสอบว่าได้เปิดใช้ RA และ RIO ในโฮสต์แล้ว
net.ipv6.conf.wlan0.accept_ra
ควรมีอย่างน้อย1
หากไม่ได้เปิดใช้การส่งต่อ IP และ2
net.ipv6.conf.wlan0.accept_ra_rt_info_max_plen
ไม่ควรน้อยกว่า64
ค่าเริ่มต้นของ accept_ra
จะเป็น 1
สําหรับการกระจายส่วนใหญ่ แต่อาจมี Daemon เครือข่ายอื่นๆ ที่จะลบล้างตัวเลือกนี้ (เช่น dhcpcd
ใน Raspberry Pi จะลบล้าง accept_ra
เป็น 0
) คุณสามารถตรวจสอบค่า accept_ra
กับ
$ sudo sysctl -n net.ipv6.conf.wlan0.accept_ra 0
และตั้งค่าเป็น 1
(หรือ 2
ในกรณีที่เปิดใช้การส่งต่อ IP) ด้วย
$ sudo sysctl -w net.ipv6.conf.wlan0.accept_ra=1 Net.ipv6.conf.wlan0.accept_ra = 1
ตัวเลือก accept_ra_rt_info_max_plen
ในการกระจาย Linux ส่วนใหญ่มีค่าเริ่มต้นเป็น 0
ซึ่งตั้งค่าเป็น 64
พร้อม:
$ sudo sysctl -w net.ipv6.conf.wlan0.accept_ra_rt_info_max_plen=64 net.ipv6.conf.wlan0.accept_ra_rt_info_max_plen = 64
การเปลี่ยนแปลงจะหายไปหลังจากรีบูตโฮสต์ เช่น เพิ่มคําสั่ง /etc/sysctl.conf
ต่อท้ายเพื่อเปิดใช้ RIO อย่างถาวร
$ net.ipv6.conf.wlan0.accept_ra_rt_info_max_plen = 64
อาจจะช้าเกินไปในการเปลี่ยนการกําหนดค่าเหล่านั้น เนื่องจาก OTBR ได้ส่งข้อความ RA ไปแล้ว และช่วงเวลาระหว่างข้อความ RA ที่ไม่พึงประสงค์จํานวน 2 ข้อความอาจยาวหลายร้อยวินาที วิธีหนึ่งคือการยกเลิกการเชื่อมต่อและเชื่อมต่อกับ Wi-Fi AP อีกครั้งเพื่อส่งข้อความขอเราเตอร์ เพื่อให้ OTBR ตอบสนองต่อ RA ที่ส่งคําขอ อีกทางเลือกหนึ่งคือรีสตาร์ทฟังก์ชันการกําหนดเส้นทางเส้นขอบในเราเตอร์ของ Border ดังนี้
$ sudo ot-ctl br disable Done $ sudo ot-ctl br enable Done
หากคุณต้องการเชื่อมต่อ Wi-Fi อีกครั้งหรือรีสตาร์ทอินเทอร์เฟซอีเทอร์เน็ต โปรดตรวจสอบว่าไม่ได้ใช้ dhcpcd ในการจัดการเครือข่าย Wi-Fi/อีเทอร์เน็ต 6 เนื่องจาก dhcpcd จะลบล้างตัวเลือก accept_ra
เสมอทุกครั้งที่รีสตาร์ทอินเทอร์เฟซและการกําหนดค่า accept_ra
จะหายไป เพิ่มบรรทัดต่อไปนี้ลงในไฟล์การกําหนดค่า dhcpcd (เช่น /etc/dhcpcd.conf
) เพื่อปิดใช้ IPv6 อย่างชัดแจ้งใน dhcpcd:
noipv6 noipv6rs
คุณต้องรีบูตเพื่อให้การเปลี่ยนแปลงมีผล
เตรียมโฮสต์ macOS
ทั้งคู่accept_ra*
ระบบจะเปิดใช้ตัวเลือกโดยค่าเริ่มต้น แต่คุณต้องอัปเกรดระบบเป็น macOS Big Sur เป็นอย่างน้อย
ใช้คําสั่ง ping กับชื่อโฮสต์หรือที่อยู่ IPv6
ขณะนี้เราใช้คําสั่ง ping ในชื่อโฮสต์ ot-host.local
ด้วยคําสั่ง ping -6
(ping6
สําหรับ macOS) ได้
$ ping -6 ot-host.local. PING ot-host.local.(fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927 (fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927)) 56 data bytes 64 bytes from fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927 (fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927): icmp_seq=1 ttl=63 time=170 ms 64 bytes from fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927 (fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927): icmp_seq=2 ttl=63 time=64.2 ms 64 bytes from fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927 (fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927): icmp_seq=3 ttl=63 time=22.8 ms 64 bytes from fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927 (fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927): icmp_seq=4 ttl=63 time=37.7 ms 64 bytes from fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927 (fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927): icmp_seq=5 ttl=63 time=28.7 ms ...
คําสั่งนี้อาจล้มเหลวในโฮสต์ Linux โดยมีข้อผิดพลาด "Name or service not known"
นั่นเป็นเพราะคําสั่ง ping
ไม่ได้แก้ปัญหาชื่อ ot-host.local.
ด้วยคําค้นหา mDNS เปิด /etc/nsswitch.conf
และเพิ่ม mdns6_minimal
ในบรรทัดที่ขึ้นต้นด้วย hosts
:
hosts: files mdns4_minimal mdns6_minimal dns
แน่นอนว่าคุณสามารถใช้คําสั่ง ping กับที่อยู่ IPv6 ได้โดยตรง
$ ping -6 fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927 PING fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927(fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927) 56 data bytes 64 bytes from fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927: icmp_seq=1 ttl=63 time=32.9 ms 64 bytes from fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927: icmp_seq=2 ttl=63 time=27.8 ms 64 bytes from fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927: icmp_seq=3 ttl=63 time=29.9 ms 64 bytes from fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927: icmp_seq=4 ttl=63 time=73.5 ms 64 bytes from fd76:a5d1:fcb0:1707:d3dc:26d3:f70b:b927: icmp_seq=5 ttl=63 time=26.4 ms ...
8. หยุดอุปกรณ์ ไม่เผยแพร่บริการ
วิธีนําที่อยู่และบริการที่ลงทะเบียนออกจากโหนดไคลเอ็นต์ SRP มีดังนี้
> srp client host remove Done
คุณดําเนินการไม่ได้ในการค้นพบบริการ _ipps._tcp
ตอนนี้
9. ขอแสดงความยินดี
ยินดีด้วย คุณตั้งค่า OTBR เป็นเราเตอร์ Thread Border เรียบร้อยแล้ว เพื่อให้การเชื่อมต่อ IP แบบ 2 ทิศทางและการค้นพบบริการสําหรับอุปกรณ์ปลายทางของ Thread ได้
ขั้นตอนถัดไปที่ควรทํา
ลองดู Codelab เหล่านี้บางส่วน...