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

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) প্রোটোকল অনুবাদকে সমর্থন করে।

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

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

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

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

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

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

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

c3cd2e081bc052fd.png

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

থ্রেড বর্ডার রাউটারের সেটআপ OTBR ধাপ অনুসরণ করুন - দ্বিমুখী IPv6 সংযোগ এবং DNS-ভিত্তিক পরিষেবা আবিষ্কার কোডল্যাব ওপেন থ্রেড বর্ডার রাউটার তৈরি করতে, নিম্নলিখিত পরিবর্তন সহ:

বিল্ড এবং ইন্সটল OTBR- এ, আপনাকে OpenThread-এ NAT64 অনুবাদক সক্রিয় করতে এনভায়রনমেন্ট ভেরিয়েবল NAT64 কে 1 এবং NAT64_SERVICE কে openthread এ সেট করে স্ক্রিপ্ট বলতে হবে। পদক্ষেপের আগে নিম্নলিখিত কমান্ডটি চালান:

$ export NAT64=1 NAT64_SERVICE=openthread

থ্রেড বর্ডার রাউটার - দ্বিমুখী IPv6 কানেক্টিভিটি এবং DNS-ভিত্তিক সার্ভিস ডিসকভারি কোডল্যাব লিখিতভাবে চালিয়ে যান। একটি থ্রেড নেটওয়ার্ক গঠন করার পরে, আপনি যাচাই করতে পারেন যে বর্ডার রাউটারটি OpenThread CLI কমান্ড দ্বারা একটি NAT64 উপসর্গ প্রকাশ করছে৷

প্রথমত, নিশ্চিত করুন যে আমাদের বর্ডার রাউটার চালু আছে এবং বর্ডার রাউটারে NAT64 সক্রিয় আছে:

$ sudo ot-ctl state
leader
Done
$ sudo ot-ctl nat64 enable
Done
$ sudo ot-ctl nat64 state
PrefixManager: Active
Translator: Active
Done

আমাদের দেখতে হবে যে OTBR থ্রেড লিডার হিসাবে কাজ করছে এবং থ্রেড নেটওয়ার্ক ডেটাতে একটি NAT64 উপসর্গ ( fd4c:9574:3720:2:0:0::/96 আমাদের ক্ষেত্রে) রয়েছে:

$ sudo ot-ctl netdata show
Prefixes:
fd4c:9574:3720:1::/64 paos low 0800
Routes:
fd49:7770:7fc5:0::/64 s med 0800
fd4c:9574:3720:2:0:0::/96 sn low 0800
Services:
44970 01 41000500000e10 s 0800
44970 5d fdd20e532b87b93f50ad4eea0450f1bfd11f s 0800
Done

একটি 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_JOINER=ON -DOT_COMMISSIONER=ON -DOT_DNS_CLIENT=ON -DOT_SRP_CLIENT=ON -DOT_ECDSA=ON

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

থ্রেড এন্ড ডিভাইস সেট আপ করার পর কয়েক সেকেন্ড অপেক্ষা করুন এবং থ্রেড নেটওয়ার্কে যোগদান সফল হয়েছে কিনা তা যাচাই করুন। আপনি নেটওয়ার্ক ডেটা থেকে একটি NAT64 উপসর্গ খুঁজে পেতে সক্ষম হবেন ( fd4c:9574:3720:2:0:0::/96 আমাদের ক্ষেত্রে):

> netdata show
Prefixes:
fd4c:9574:3720:1::/64 paos low 0800
Routes:
fd49:7770:7fc5:0::/64 s med 0800
fd4c:9574:3720:2:0:0::/96 sn low 0800
Services:
44970 01 41000500000e10 s 0800
44970 5d fdd20e532b87b93f50ad4eea0450f1bfd11f s 0800
Done

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

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

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

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

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

> ping 8.8.8.8
Pinging synthesized IPv6 address: fd4c:9574:3720:2:0:0:808:808
16 bytes from fd4c:9574:3720:2:0:0:808:808: icmp_seq=15 hlim=119 time=48ms
1 packets transmitted, 1 packets received. Packet loss = 0.0%. Round-trip min/avg/max = 48/48.0/48 ms.
Done

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

$ sudo ot-ctl nat64 mappings
|                  | Address                                                     |        | 4 to 6                  | 6 to 4                  |
+------------------+-------------------------------------------------------------+--------+-------------------------+-------------------------+
| ID               | IPv6                                     | IPv4             | Expiry | Pkts     | Bytes        | Pkts     | Bytes        |
+------------------+------------------------------------------+------------------+--------+----------+--------------+----------+--------------+
| 377ee63dd3127f1a |     fd4c:9574:3720:1:1d61:b4c1:494f:f975 |  192.168.255.254 |  7190s |        1 |           16 |        1 |           16 |
|                  |                                                                  TCP |        0 |            0 |        0 |            0 |
|                  |                                                                  UDP |        0 |            0 |        0 |            0 |
|                  |                                                                 ICMP |        1 |           16 |        1 |           16 |
Done

fd4c:9574:3720:1:1d61:b4c1:494f:f975 আপনার থ্রেড ডিভাইসের IPv6 ঠিকানা হওয়া উচিত।

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

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

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

> dns resolve4 example.com 8.8.8.8
Synthesized IPv6 DNS server address: fd4c:9574:3720:2:0:0:808:808
DNS response for example.com. - fd4c:9574:3720:2:0:0:5db8:d822 TTL:20456 
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: fd4c:9574:3720: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: fd4c:9574:3720:2:0:0:c0a8:2
Done
> udp send hello
Done

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

hello

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

6 bytes from fd4c:9574:3720:2:0:0:c0a8:2 12345 world

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

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

$ sudo ot-ctl nat64 disable
Done
$ sudo ot-ctl nat64 state
PrefixManager: Disabled
Translator: Disabled
Done

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

$ sudo ot-ctl netdata show
Prefixes:
fd4c:9574:3720:1::/64 paos low 0800
Routes:
fd49:7770:7fc5:0::/64 s med 0800
Services:
44970 01 41000500000e10 s 0800
44970 5d fdd20e532b87b93f50ad4eea0450f1bfd11f s 0800
Done

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

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

> ping 8.8.8.8
Error 13: InvalidState

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

$ sudo ot-ctl nat64 enable
Done
$ sudo ot-ctl nat64 state
PrefixManager: Idle
Translator: NotWorking
Done

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

$ sudo ot-ctl nat64 state
PrefixManager: Active
Translator: Active
Done
$ sudo ot-ctl netdata show
Prefixes:
fd4c:9574:3720:1::/64 paos low 0800
Routes:
fd49:7770:7fc5:0::/64 s med 0800
fd4c:9574:3720:2:0:0::/96 sn low 0800
Services:
44970 01 41000500000e10 s 0800
44970 5d fdd20e532b87b93f50ad4eea0450f1bfd11f s 0800
Done

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

$ sudo ot-ctl nat64 mappings
|                  | Address                                                     |        | 4 to 6                  | 6 to 4                  |
+------------------+-------------------------------------------------------------+--------+-------------------------+-------------------------+
| ID               | IPv6                                     | IPv4             | Expiry | Pkts     | Bytes        | Pkts     | Bytes        |
+------------------+------------------------------------------+------------------+--------+----------+--------------+----------+--------------+
Done

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

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

এই ফাংশনটি অভ্যন্তরীণ DNS-SD সার্ভার দ্বারা সমর্থিত, তাই আপনাকে DNS-SD সার্ভার সক্ষম করা হয়েছে তা নিশ্চিত করতে হবে।

$ sudo ot-ctl srp server state
running
Done

যদি এটি running না হয়, তাহলে এটি সক্ষম করুন:

$ sudo ot-ctl srp server enable
Done

নিশ্চিত করুন যে আপস্ট্রিম DNS প্রক্সি সক্রিয় আছে:

$ sudo ot-ctl dns server upstream
Enabled
Done

যদি এটি Enabled না হয়, তাহলে এটি সক্ষম করুন:

$ sudo ot-ctl dns server upstream enable
Done

শেষ ডিভাইসগুলিতে, নিশ্চিত করুন যে SRP ক্লায়েন্ট সক্ষম আছে যাতে এটি বর্ডার রাউটারে DNS প্রশ্ন পাঠাবে:

> srp client state
Enabled
Done

যদি এটি Enabled না হয়, তাহলে এটি সক্ষম করুন:

> srp client autostart enable
Done

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

> dns config
Server: [fdd2:0e53:2b87:b93f:50ad:4eea:0450:f1bf]:53
ResponseTimeout: 6000 ms
MaxTxAttempts: 3
RecursionDesired: yes
Done

সার্ভার IPv6 ঠিকানা ( fdd2:0e53:2b87:b93f:50ad:4eea:0450:f1bf উপরের উদাহরণে), আপনার OpenThread বর্ডার রাউটারের ঠিকানাগুলির মধ্যে একটি হওয়া উচিত।

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

> dns resolve example.com
DNS response for example.com. - 2606:2800:220:1:248:1893:25c8:1946 TTL:8720 
Done
> dns resolve4 example.com
DNS response for example.com. - fd4c:9574:3720:2:0:0:5db8:d822 TTL:20456 
Done

7. অভিনন্দন

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

আরও পড়া

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