থ্রেড বর্ডার রাউটার - NAT64 এর মাধ্যমে ইন্টারনেট অ্যাক্সেস প্রদান করুন

এই কোডল্যাব সম্পর্কে
schedule২৩ মিনিট
subject৫ মে, ২০২৫-এ শেষবার আপডেট করা হয়েছে
account_circleSong Guo, Jonathan Hui-এর লেখা

1. ভূমিকা

7299534792dd9439.png

থ্রেড কি?

থ্রেড হল একটি আইপি-ভিত্তিক লো-পাওয়ার ওয়্যারলেস মেশ নেটওয়ার্কিং প্রোটোকল যা সুরক্ষিত ডিভাইস-টু-ডিভাইস এবং ডিভাইস-টু-ক্লাউড যোগাযোগ সক্ষম করে। থ্রেড নেটওয়ার্ক একক-পয়েন্ট ব্যর্থতা এড়াতে টপোলজি পরিবর্তনের সাথে মানিয়ে নিতে পারে।

OpenThread কি?

Google দ্বারা প্রকাশিত OpenThread হল Thread®-এর একটি ওপেন-সোর্স বাস্তবায়ন।

একটি OpenThread বর্ডার রাউটার কি?

Google দ্বারা প্রকাশিত OpenThread Border Router (OTBR) হল থ্রেড বর্ডার রাউটারের একটি ওপেন-সোর্স বাস্তবায়ন।

NAT64

NAT64 হল একটি মেকানিজম যা IPv6-কেবল নেটওয়ার্কে হোস্টকে IPv4 নেটওয়ার্কে রিসোর্স অ্যাক্সেস করতে সক্ষম করে। NAT64 গেটওয়ে হল IPv4 প্রোটোকল এবং IPv6 প্রোটোকলের মধ্যে একটি অনুবাদক।

NAT64 অনুবাদক, OpenThread বর্ডার রাউটারের একটি অংশ হিসাবে, TCP, UDP, এবং ICMP (ICMPv6) প্রোটোকল অনুবাদকে সমর্থন করে।

আপনি কি নির্মাণ করবেন

এই কোডল্যাবে, আপনি একটি ওপেনথ্রেড বর্ডার রাউটার (OTBR) এবং একটি থ্রেড ডিভাইস সেট আপ করতে যাচ্ছেন, তারপর OpenThread বর্ডার রাউটারের মাধ্যমে ইন্টারনেটে থ্রেড ডিভাইস এবং IPv4 হোস্টের মধ্যে যোগাযোগ সক্ষম ও যাচাই করতে চলেছেন।

আপনি কি শিখবেন

  • NAT64 বৈশিষ্ট্য সহ একটি ওপেনথ্রেড বর্ডার রাউটার কীভাবে তৈরি করবেন।
  • কিভাবে থ্রেড এন্ড ডিভাইস থেকে IPv4 হোস্টের সাথে যোগাযোগ করা যায়।

আপনি কি প্রয়োজন হবে

  • একটি লিনাক্স ওয়ার্কস্টেশন, একটি থ্রেড আরসিপি তৈরি এবং ফ্ল্যাশ করার জন্য, ওপেন থ্রেড সিএলআই, এবং IPv4 সংযোগ পরীক্ষা করার জন্য।
  • থ্রেড বর্ডার রাউটারের জন্য একটি রাস্পবেরি পাই। আপনার Linux ওয়ার্কস্টেশন এই ডিভাইস থেকে IPv4 এর মাধ্যমে পৌঁছানো উচিত।
  • 2 নর্ডিক সেমিকন্ডাক্টর nRF52840 USB Dongles (একটি RCP এর জন্য এবং একটি থ্রেড এন্ড ডিভাইসের জন্য)।

এই কোডল্যাবের জন্য নেটওয়ার্ক টপোলজি:

c3cd2e081bc052fd.png

2. ওপেন থ্রেড বর্ডার রাউটার সেটআপ করুন

একটি OTBR সেট আপ করার দ্রুততম উপায় হল OTBR সেটআপ গাইড অনুসরণ করা৷

OTBR সেটআপ সম্পূর্ণ হওয়ার পরে, বর্ডার রাউটারে NAT64 পরিষেবা সক্ষম হয়েছে তা যাচাই করতে ot-ctl ব্যবহার করুন:

> nat64 state
PrefixManager: Active
Translator: Active
Done

একটি থ্রেড বর্ডার রাউটার থ্রেড নেটওয়ার্ক ডেটাতে NAT64 উপসর্গ প্রকাশ করে:

> netdata show
Prefixes:
fd16:a3d:e170:1::/64 paros low f800
Routes:
::/0 s med f800
fd16:a3d:e170:2:0:0::/96 sn low f800
Services:
44970 5d fd4db3e59738319339c4ee02ca9e2b1dd120 s f800 0
Contexts:
fd16:a3d:e170:1::/64 1 sc
Commissioning:
60365 - - -
Done

NAT64 উপসর্গটি n পতাকার সাথে একটি রুট এন্ট্রি হিসাবে দেখায়। উপরের উদাহরণে, fd16:a3d:e170:2:0:0::/96 হল NAT64 উপসর্গ।

একটি IPv4 হোস্টের সাথে যোগাযোগ করার সময় NAT64 উপসর্গটি থ্রেড ডিভাইস দ্বারা ব্যবহার করা হবে।

3. সেটআপ থ্রেড শেষ ডিভাইস

একটি nRF52840 CLI শেষ ডিভাইস তৈরি এবং ফ্ল্যাশ করতে nRF52840 বোর্ড এবং OpenThread কোডল্যাব সহ একটি থ্রেড নেটওয়ার্ক তৈরি করুন এর FTDs ধাপটি অনুসরণ করুন, নিম্নলিখিত ধাপে পরিবর্তন করুন:

বিল্ড এবং ফ্ল্যাশে , script/build কল করার সময় আপনাকে কমান্ড লাইনে -DOT_DNS_CLIENT=ON , -DOT_SRP_CLIENT=ON এবং -DOT_ECDSA=ON যোগ করতে হবে:

$ cd ~/src/ot-nrf528xx
$ rm -rf build
$ script/build nrf52840 USB_trans -DOT_DNS_CLIENT=ON -DOT_SRP_CLIENT=ON -DOT_ECDSA=ON

লেখা হিসাবে nRF52840 বোর্ড এবং OpenThread কোডল্যাব সহ একটি থ্রেড নেটওয়ার্ক তৈরি করুন । শেষ ডিভাইসটি CLI চিত্রের সাথে ফ্ল্যাশ হওয়ার পরে, থ্রেড নেটওয়ার্কে থ্রেড ডিভাইস যোগ করতে থ্রেড নেটওয়ার্কে দ্বিতীয় নোডটিতে যোগ দিন

থ্রেড এন্ড ডিভাইস সেট আপ করার পর কয়েক সেকেন্ড অপেক্ষা করুন এবং থ্রেড নেটওয়ার্কে যোগদান সফল হয়েছে কিনা তা যাচাই করুন। উপরের হিসাবে, আপনি থ্রেড নেটওয়ার্ক ডেটাতে প্রকাশিত NAT64 উপসর্গ দেখতে পারেন।

> netdata show
Prefixes:
fd16:a3d:e170:1::/64 paros low f800
Routes:
::/0 s med f800
fd16:a3d:e170:2:0:0::/96 sn low f800
Services:
44970 5d fd4db3e59738319339c4ee02ca9e2b1dd120 s f800 0
Contexts:
fd16:a3d:e170:1::/64 1 sc
Commissioning:
60365 - - -
Done

নিশ্চিত করুন যে নেটওয়ার্ক ডেটা OTBR-এর ডেটার সাথে মেলে৷

4. থ্রেড এন্ড ডিভাইস থেকে IPv4 হোস্টের সাথে যোগাযোগ করুন

আপনি এখন আমাদের সেট আপ করা শেষ ডিভাইস থেকে IPv4 নেটওয়ার্কে হোস্টের সাথে যোগাযোগ করতে পারেন।

IPv4 হোস্টে ICMP ইকো অনুরোধ পাঠান

আমাদের থ্রেড এন্ড ডিভাইসের CLI থেকে:

> ping 8.8.8.8
Pinging synthesized IPv6 address: fd16:a3d:e170:2:0:0:808:808
16 bytes from fd16:a3d:e170:2:0:0:808:808: icmp_seq=1 hlim=109 time=28ms
1 packets transmitted, 1 packets received. Packet loss = 0.0%. Round-trip min/avg/max = 28/28.0/28 ms.
Done

বর্ডার রাউটার nat64 mappings কমান্ড দ্বারা এই ডিভাইসের জন্য একটি NAT64 ম্যাপিং আইটেম তৈরি করে:

> nat64 mappings
|                  | Address                                                     | Ports or ICMP Ids |        | 4 to 6                  | 6 to 4                  |
+------------------+-------------------------------------------------------------+-------------------+--------+-------------------------+-------------------------+
| ID               | IPv6                                     | IPv4             | v6      | v4      | Expiry | Pkts     | Bytes        | Pkts     | Bytes        |
+------------------+------------------------------------------+------------------+---------+---------+--------+----------+--------------+----------+--------------+
| 90b156e3cf609a23 |      fd16:a3d:e170:1:492d:bcdb:9f72:6297 |  192.168.255.254 |   N/A   |   N/A   |  7162s |        1 |           16 |        1 |           16 |
|                  |                                                                                      TCP |        0 |            0 |        0 |            0 |
|                  |                                                                                      UDP |        0 |            0 |        0 |            0 |
|                  |                                                                                     ICMP |        1 |           16 |        1 |           16 |
Done

fd16:a3d:e170:1:492d:bcdb:9f72:6297 আপনার থ্রেড ডিভাইসের IPv6 ঠিকানা হওয়া উচিত।

ট্রাফিক কিভাবে গণনা করে তা দেখতে যেকোন সময় বর্ডার রাউটারে এই কমান্ডটি চালান।

IPv4 DNS সার্ভারে DNS প্রশ্ন পাঠান

IPv4 নেটওয়ার্কে একটি হোস্টনাম সমাধান করতে dns resolve4 ব্যবহার করুন। DNS সার্ভার ঠিকানাটি একটি IPv4 ঠিকানাও হতে পারে:

> dns resolve4 example.com 8.8.8.8
Synthesized IPv6 DNS server address: fd16:a3d:e170:2:0:0:808:808
DNS response for example.com. - fd16:a3d:e170:2:0:0:17c0:e454 TTL:295 fd16:a3d:e170:2:0:0:17d7:88 TTL:295 fd16:a3d:e170:2:0:0:17d7:8a TTL:295 fd16:a3d:e170:2:0:0:6007:80af TTL:295 fd16:a3d:e170:2:0:0:6007:80c6 TTL:295 fd16:a3d:e170:2:0:0:17c0:e450 TTL:295 
Done

TCP এর মাধ্যমে যোগাযোগ করুন

IPv4 নেটওয়ার্কে শেষ ডিভাইস এবং হোস্টের মধ্যে TCP সংযোগ স্থাপন করা সম্ভব।

ধরে নিন আপনার Linux IPv4 হোস্টের IP ঠিকানা হল 192.168.0.2

আপনার Linux IPv4 হোস্টে, TCP সংযোগের জন্য nc ব্যবহার করুন:

$ nc -l 0.0.0.0 12345

আপনার থ্রেড এন্ড ডিভাইস থেকে, একটি TCP সংযোগ স্থাপন করুন এবং আপনার Linux IPv4 হোস্টে বার্তা পাঠান:

> tcp init
Done
> tcp connect 192.168.0.2 12345
Connecting to synthesized IPv6 address: fd16:a3d:e170:2:0:0:c0a8:2
Done
> tcp send hello

আপনার Linux IPv4 হোস্ট আউটপুট:

hello

এছাড়াও আপনি আপনার Linux IPv4 হোস্ট থেকে থ্রেড এন্ড ডিভাইসে বার্তা পাঠাতে পারেন। "world" টাইপ করুন এবং আপনার Linux IPv4 হোস্টে চলমান nc , এবং আপনার থ্রেড এন্ড ডিভাইসের আউটপুটগুলিতে এন্টার টিপুন:

TCP: Received 6 bytes: world

UDP এর মাধ্যমে যোগাযোগ করুন

IPv4 নেটওয়ার্কে থ্রেড ডিভাইস এবং হোস্টের মধ্যে UDP ব্যবহার করে যোগাযোগ করা সম্ভব।

ধরে নিন আপনার Linux IPv4 হোস্টের IP ঠিকানা হল 192.168.0.2

UDP সংযোগ শুনতে nc ব্যবহার করুন:

$ nc -u -l 0.0.0.0 12345

আপনার থ্রেড এন্ড ডিভাইস থেকে, একটি UDP সংযোগ স্থাপন করুন এবং আপনার Linux IPv4 হোস্টে বার্তা পাঠান:

> udp open
Done
> udp connect 192.168.0.2 12345
Connecting to synthesized IPv6 address: fd16:a3d:e170:2:0:0:c0a8:2
Done
> udp send hello
Done

আপনার Linux IPv4 হোস্ট আউটপুট:

hello

এছাড়াও আপনি আপনার Linux IPv4 হোস্ট থেকে থ্রেড এন্ড ডিভাইসে বার্তা পাঠাতে পারেন। "world" টাইপ করুন এবং আপনার Linux IPv4 হোস্টে চলমান nc , এবং আপনার থ্রেড এন্ড ডিভাইসের আউটপুটগুলিতে এন্টার টিপুন:

6 bytes from fd16:a3d:e170:2:0:0:c0a8:2 12345 world

5. বর্ডার রাউটারে NAT64 টগল করুন

আপনি যে কোনো সময় NAT64 সক্ষম বা নিষ্ক্রিয় করতে পারেন। NAT64 নিষ্ক্রিয় করতে nat64 disable ব্যবহার করুন। এবং NAT64 এর অবস্থা পরীক্ষা করতে nat64 state ব্যবহার করুন।

> nat64 disable
Done
> nat64 state
PrefixManager: Disabled
Translator: Disabled
Done

নিষ্ক্রিয় করার পরে, ডিভাইসটি আর NAT64 উপসর্গ প্রকাশ করছে না:

> netdata show
Prefixes:
fd16:a3d:e170:1::/64 paros low f800
Routes:
::/0 s med f800
Services:
44970 5d fd4db3e59738319339c4ee02ca9e2b1dd120 s f800 0
Contexts:
fd16:a3d:e170:1::/64 1 sc
Commissioning:
60365 - - -
Done

এছাড়াও থ্রেড নেটওয়ার্কের ডিভাইসগুলি আর এই বর্ডার রাউটারের মাধ্যমে IPv4 হোস্ট অ্যাক্সেস করতে পারে না।

আমাদের থ্রেড এন্ড ডিভাইসের CLI থেকে:

> ping 8.8.8.8
Error 13: InvalidState

NAT64 সক্ষম করতে nat64 enable ব্যবহার করুন। প্রিফিক্স ম্যানেজার একটি NAT64 উপসর্গের বিজ্ঞাপন শুরু করার আগে কিছু সময় লাগতে পারে:

> nat64 enable
Done
> nat64 state
PrefixManager: Idle
Translator: NotWorking
Done

কয়েক সেকেন্ড পরে, NAT64 উপাদানগুলি আপ এবং চলমান হওয়া উচিত:

> nat64 state
PrefixManager: Active
Translator: Active
Done
> netdata show
Prefixes:
fd16:a3d:e170:1::/64 paros low f800
Routes:
::/0 s med f800
fd16:a3d:e170:2:0:0::/96 sn low f800
Services:
44970 5d fd4db3e59738319339c4ee02ca9e2b1dd120 s f800 0
Contexts:
fd16:a3d:e170:1::/64 1 sc
Commissioning:
60365 - - -
Done

মনে রাখবেন যে NAT64 নিষ্ক্রিয় করা ম্যাপিং টেবিল সাফ করবে:

> nat64 mappings
|                  | Address                                                     | Ports or ICMP Ids |        | 4 to 6                  | 6 to 4                  |
+------------------+-------------------------------------------------------------+-------------------+--------+-------------------------+-------------------------+
| ID               | IPv6                                     | IPv4             | v6      | v4      | Expiry | Pkts     | Bytes        | Pkts     | Bytes        |
+------------------+------------------------------------------+------------------+---------+---------+--------+----------+--------------+----------+--------------+
Done

6. আপস্ট্রিম ডিএনএস সার্ভারে ডিএনএস কোয়েরি ফরওয়ার্ড করুন

যখন বর্ডার রাউটারে NAT64 সক্রিয় করা হয়, OpenThread ইন্টারনেট ডোমেনের জন্য DNS প্রশ্নগুলিকে আপস্ট্রিম DNS সার্ভারে ফরোয়ার্ড করার চেষ্টা করবে।

আপনার শেষ ডিভাইসে, নিশ্চিত করুন যে ডিফল্ট DNS সার্ভারটি বর্ডার রাউটার:

> dns config
Server: [fd4d:b3e5:9738:3193:39c4:ee02:ca9e:2b1d]:53
ResponseTimeout: 6000 ms
MaxTxAttempts: 3
RecursionDesired: yes
ServiceMode: srv_txt_opt
Nat64Mode: allow
Done

সার্ভার IPv6 ঠিকানা ( fd4d:b3e5:9738:3193:39c4:ee02:ca9e:2b1d উপরের উদাহরণে), আপনার OpenThread বর্ডার রাউটারের ঠিকানাগুলির মধ্যে একটি হওয়া উচিত।

এখন আপনি শেষ ডিভাইস থেকে ইন্টারনেট ডোমেনের জন্য DNS প্রশ্ন পাঠাতে পারেন:

> dns resolve example.com
DNS response for example.com. - 2600:1406:3a00:21:0:0:173e:2e65 TTL:161 2600:1406:3a00:21:0:0:173e:2e66 TTL:161 2600:1406:bc00:53:0:0:b81e:94c8 TTL:161 2600:1406:bc00:53:0:0:b81e:94ce TTL:161 2600:1408:ec00:36:0:0:1736:7f24 TTL:161 2600:1408:ec00:36:0:0:1736:7f31 TTL:161 
Done
> dns resolve4 example.com
DNS response for example.com. - fd16:a3d:e170:2:0:0:6007:80af TTL:300 fd16:a3d:e170:2:0:0:6007:80c6 TTL:300 fd16:a3d:e170:2:0:0:17c0:e450 TTL:300 fd16:a3d:e170:2:0:0:17c0:e454 TTL:300 fd16:a3d:e170:2:0:0:17d7:88 TTL:300 fd16:a3d:e170:2:0:0:17d7:8a TTL:300 
Done

7. অভিনন্দন

অভিনন্দন, আপনি সফলভাবে NAT64 সমর্থন সহ একটি বর্ডার রাউটার সেট আপ করেছেন এবং থ্রেড এন্ড ডিভাইসে ইন্টারনেট অ্যাক্সেস প্রদান করতে এটি ব্যবহার করেছেন!

আরও পড়া

রেফারেন্স ডক্স