Friday, June 28, 2019

NAT কি? আমরা NAT কেন ব্যবহার করি?

Nat (Network Address Translation)

Nat কি? Nat হল Network Address Translation. নেটওয়ার্ক অ্যাড্রেস বলতে আমরা কিন্তু আইপি অ্যাড্রেসকে বুঝি। NAT হল এমন একটি পদ্ধতি যার মাধ্যমে কোন আইপির্ অ্যাড্রেসকে একটি আলাদা আইপি অ্যড্রেসে রুপান্তুর করা যায়।

Nat আমরা কি জন্য ব্যবহার করব?

আমরা যে সকল কারণে নাটকে ব্যাবহার করে থাকি তা হল- নেটওয়ার্ক অ্যাড্রেস ট্রান্সলেশন। উদাহরণ সরুপ-
  • Convert Private IP to Public IP
  • Convert IPv4 to IPv6
  • Convert One Private IP to another Private IP
Example Number 1: মনে করি, আমাদের একটি লোকাল নেটওয়ার্ক রয়েছে। যেখানে কিছু কম্পিউটার রয়েছে যেগুলিতে প্রাইভেট আইপি অ্যাসাইন করা আছে। লোকাল নেটওয়ার্ক প্রাইভেট আইপি দ্বারা গঠিত হয়। এখন আমরা চাইতেছি এই লোকাল নেটওয়ার্কে যুক্ত কম্পিউটার সমুহ দ্বারা ইন্টারনেট অ্যাকসেস করতে । কিন্তু আমরা জানি প্রাইভেট আইপি রাউটেবল না ফলে আমরা ইন্টারনেট অ্যাকসেস করতে পারব না । কিন্তু আমরা NAT এর মাধ্যমে এই প্রাইভেট আইপিগুলিকে পাবলিক আইপিতে রুপান্তর করতে পারি । যখন এই প্রাইভেট আইপি গুলিকে পাবলিক আইপিতে কনর্ভাট করা হবে তখন লোকাল নেটওয়ার্কে যুক্ত কম্পিউটার সমুহ ইন্টারনেট অ্যাকসেস করতে পারবে। NAT এর মাধ্যমে আমরা এই Private আইপিকে Public আইপিতে কনর্ভাট করে থাকি।

 Example Number 2: মনে করি, আমাদের একটি নেটওয়ার্ক আছে যেখানে IPv4 রান করছে এবং অপর সাইটে আর একটি নেটওয়ার্ক রয়েছে যেখানে IPv6 রান কারছে । এখন আমাদের এই দুইটি নেটওয়ার্ক এর মধ্যে কমিউনিকেশন এর প্রয়োজন। কিন্তু তারা কমিউনিকেশন করতে পারবে না । কারণ দুদিকের নেটওয়ার্ক আলাদা আলাদা। আমরা NAT এর মাধ্যমে এই সমস্যা সমাধান করতে পারি। NATING এর মাধ্যমে IPv4 কে IPv6 এ এবং IPv6 কে IPv4 কনর্ভাট করে দুদিকের নেটওয়ার্ক সহজে তাদের মধ্যে যোগাযোগ করতে পারে । IPv4 এর নেটওয়ার্ক যখন IPv6 এর সাথে যোগাযোগ করতে যাবে তখন এই আইপি অ্যাড্রেসটি IPv6 এ রুপান্তর হয়ে যাবে এবং IPv6 যখন IPv4 এর নেটওয়ার্ক এর সাথে যোগাযোগ করতে যাবে তখন এই IPv6 আইপি অ্যাড্রেসটি IPv4 এ কনর্ভাট হয়ে যাবে । ফলে দুদিকের নেটওয়ার্ক দেখতে পাবে দুদিকে একই নেটওয়ার্ক রান করতেছে।

Example Number 3: মনে করি আমাদের দুটি লোকাল নেটওয়ার্ক রয়েছে। যেখানে দুদিকে একই নেটওয়ার্ক রান করতেছে এবং তাদের আইপি অ্যাড্রেস একই। ফলে যখন এই দুদিকে নেটওয়ার্ক একে অপরের সাথে যোগাযোগ করতে যাবে তখন তারা এক অপরের সাথে যোগাযোগ করতে পারবে না, সেখানে IP Conflict দেখাবে । এই সমস্যা সমাধানের জন্য Nating করা হয় । যখন এই নেটওয়ার্ক এক অপরের সাথে যোগাযোগ করতে যাবে তখন তাদের এই নেটওয়ার্কটিকে অন্য একটি নেটওয়ার্কে কনর্ভাট করে দিবে ফলে তাদের মধ্যে আর IP Conflict দেখাবে না ।

NAT Bangla Tutorial

আমরা উপরের চিত্রের মাধ্যমে ভলভাবে বুঝার চেষ্ট করব নাট কিভাবে কাজ করে । এখানে আমাদের একটি Client Computer রয়েছে যার আইপ অ্যাড্রেস হল 10.10.10.10 যা একটি প্রাইভেট  আইপি অ্যাড্রেস । এবং একটি সার্ভার Computer রয়েছে যার আইপি অ্যাড্রেস হল 170.10.10.10 যা একটি পাবলিক আইপি অ্যাড্রেস । এখন যদি এই Client কম্পিউটার টি Server কম্পিউটার এর সাথে কমিউনিকেট করতে চায় তাহলে সে কমিউনিকেট করতে পারবে না! কারণ আমরা জানি যে Private IP রাউটেবল না অর্থাৎ Private IP দ্বারা ইন্টারনেট অ্যাকসেস করা যায় না । এই সমস্যা সমাধানের জন্য মাঝখানে একটি NAT Router ব্যাবহার করা হয়েছে। NAT Router কি করবে? সে এই Private IP টি কে Public IP তে কনর্ভাট করে দিবে ।

এটা সে কিভাবে করে থাকে এটিই এখন বুঝার চেষ্টা করি। Client Computer টি যখন প্যাকেট Server Computer এর কাছে পাঠাবে তখন তার Source Address হবে 10.10.10.10 এবং Destination Address হবে 170.10.10.10 । যখন এই প্যাকেটটি NAT Router এর কাছে যাবে তখন সে সোর্স হিসেবে যে প্রাইভেট আইপি অ্যাড্রেস 10.10.10.10 রয়েছে তা কনর্ভাট করে একটি পাবলিক আইপি 200.10.10.10 (এখানে আমরা যে আইপি অ্যাড্রেসটি Nating করে রাখব সে অ্যাড্রেসটি পাবে) দিয়ে দিবে । এখন সোর্স হবে 200.10.10.10 এবং ডেসটিনেশন আগের টা 170.10.10.10 ই থাকবে । এবার সার্ভার কমপিউটারটি যখন আবার Reply পাঠাবে তখন সেই Reply প্যাকেটটির Source হবে 170.10.10.10 এবং Destination হবে 200.10.10.10। এই প্যাকেটটি যখন NAT Router এর কাছে যাবে তখন সে আবার সেই পাবলিক আইপি 200.10.10.10 কে প্রাইভেট আইপি 10.10.10.10 এ কনর্ভাট করে দিবে। ফলে আবার তার Source হবে 170.10.10.10 এবং Destination হবে 10.10.10.10। এভাবে NAT কাজ করে থাকে ।

Types of NAT

NAT কে সাধারণত তিন ভাবে ইমপ্লিমেন্ট করা যায় । যথা:-
  1. Static NAT
  2. Dynamic NAT
  3. PAT (Port Address Translation) কেউ কেউ একে নেটওয়ার্ক ওভারলোডিং ও বলে থাকে।

Static NAT

Static NAT হল এমন একটি পদ্ধতি বা সিস্টেম যেখানে প্রত্যেকটি প্রাইভেট আইপি এর জন্য আলাদা আলাদা একটি পাবলিক আইপি নাটিং করা থাকে । যে প্রাইভেট আইপি এর জন্য যে পাবলিক আইপিটি নাটিং করা থাকবে সে সেই পাবলিক আইপিটি নিয়ে ইন্টারনেটে প্রবেশ করবে । অর্থাৎ যে প্রাইভেট আইপি এর জন্য যে পাবলিক আইপি স্টাটিকালি ডিফাইন করে দেওয়া হয়েছে সে সেই আইপিটি পাবে। অন্য কোন আইপি পাবে না ।


আমরা যদি উপরের চিত্রের দিকে খেয়াল করি তাহলে এখানে দুটি Client PC এবং একটি SERVER Pc রয়েছে। Client দুটি হল আইপি হল 10.10.10.10 এবং আর একটি হল 10.10.10.20। আপনারা চিত্রে দেখতে পাচ্ছেন এখানে প্রাইভেট আইপি 10.10.10.10 এর সাথে পাবালিক আইপি হিসেবে 200.10.10.10 এবং 10.10.10.20 এর সাথে 200.10.10.11 কে নাটিং করা হয়েছে । এবার যখন 10.10.10.10 Server এর কাছে কোন প্যাকেট পাঠাবে তখন সে NAT Router এর কাছে থেকে 200.10.10.10 এই পাবলিক আইপিটি পাবে । সে কোন ভাবেই 200.10.10.11 এই আইপিটি পাবে না । কারণ আমরা তার জন্য 200.10.10.10 কে ডিফাইন করে রেখেছি। এখানে একটি পাবলিক আইপ দিয়ে একটি মাত্র প্রাইভেট আইপিকে ইন্টারনেট সুবিধা প্রদান করা যায়।

Dynamic NAT

Dynamic NAT হল এমন একটি সিস্টেম যেখানে একটি পাবলিক আইপি অনেকগুলি প্রাইভেট আইপিকে ইন্টারনেটও সবিধা প্রদান করে । তবে একক সময়ে একটি মাত্র কমপিউটার ইন্টারনেট সুবিধা পাবে। স্টাটিক NAT এর ক্ষেত্রে আমরা দেখেছিলাম একটি পাবলিক আইপ দিয়ে একটি মাত্র প্রাইভেট আইপিকে ইন্টারনেট সুবিধা প্রদান করা যায়। কিন্তু Dynamic NAT একটি মাত্র পাবলিক আইপি দিয়ে অনেকগুলি কম্পিউটারকে ইন্টারনেট সেবা প্রদান করা যায়। এখানে কোন প্রাইভেট আইপি এর জন্য একক ভাবে কোন পাবলিক আইপিকে মেনশন করা থাকে না । যে কোন প্রইভেট আইপি যে কোন পাবলিক আইপিকে নিয়ে ইন্টানেটে প্রবেশ করতে পারবে।

NAT Bangla Tutorial

Static NAT এর ক্ষেত্রে আমরা দেখেছিলাম প্রতিটি প্রাইভেট আইপি এর জন্য একটি করে পাবলিক আইপি আসাইন করা থাকে  এবং যতটি পাবলিক আইপি থাকে ততটিই প্রাইভেট আইপি ইন্টারনেট অ্যাকসেস করতে পারে । এর বেশি কোন কম্পিউটার থাকেলে তারা ইন্টারনেট অ্যাকসেস করতে পারে না । কিন্তু Dynamic NAT এর ক্ষেত্রে এই রকম সমস্যা সমাধান করা যায় । Dynamic NAT এর ক্ষেত্রে যতটিই পাবলিক আইপি থাকুক না কেন সকল কম্পিউটার ইন্টারনেট অ্যাকসেস করতে পারে। যখন যে কম্পিউটার ইন্টারনেট অ্যাকসেস করতে চাইবে তখন সে যে পাবলিক আইপিটি ফাঁকা পাবে সেই আইপিটি নিয়ে ইন্টারনেটে প্রবেশ করবে। তবে একটি সমস্যা আছে তা হল যতটি পাবলিক আইপি থাকবে একই সাথে সেই কয়টি কম্পিউটার ইন্টারনেট অ্যাকসেস করতে পারবে। আমরা যদি উপরের চিত্রের দিকে খেয়াল করি তাহলে এখানে 10.10.10.10 এর জন্য 200.10.10.10 এবং 10.10.10.20 এর জন্য 200.10.10.11 স্টাটিকালি নাটিং করে দেওয়াছিল । 10.10.10.10 কখোন 200.10.10.10 এর পরিবর্তে 200.10.10.11 আইপি পেত না । Dynamic NAT এর  কারো জন্য কোন পাবলিক আইপি নির্দিষ্ট করা থাকে না এখানে 10.10.10.10 কখোন 200.10.10.10 আবার কখোন 200.10.10.11 আইপি পাবে।

PAT (Port Address Translation) / Network Overloading

PAT হলো Port Address Translation.  PAT এর মাধ্যমে আমরা অনেকগুলি প্রাইভেট আইপি এড্রেসকে একটিমাত্র পাবলিক আইপি এড্রেস এর সাথে ম্যাপিং করতে পারি। অর্থাৎ আমরা একটি মাত্র পাবলিক আইপি দিয়ে অনেকগুলি প্রাইভেট আইপিকে ইন্টারনেট সেবা দিতে পারি ।

আমরা যখন আমাদের কম্পিউটার থেকে কোন ওয়েব ব্রাউজারের মাধ্যামে এক সাথে অনেকগুলি ওয়েবসাইজ ভিজিট করি তখন কিন্তু আমরা একসাথে অনেকগুলি সার্ভারকে অ্যাকসেস করি । যেমন ধরুন YouTube, Facebook, Twitter, LinkedIn, Instagram, Gmail etc..। আমরা কিভাবে একসাথে এতগুলি সার্ভার এর সাথে কানেক্ট হতে পারি যখন কিনা আমাদের আইপি অ্যাড্রেস থাকে মাত্র একটি! অর্থাৎ আমরা একটি মাত্র আইপি অ্যাড্রেস দিয়ে এক সাথে এত গুলি সার্ভার এর সাথে কিভাবে যোগাযোগ করতে পারি? এটি হয়ে থাকে PAT এর মাধ্যমে । আমরা যখন আমাদের কম্পিউটার থেকে সবগুলি সার্ভারকে একসাথে কানেক্ট হই, তখন আমাদের সকগুলি প্যাকেট এর সোর্স আইপি অ্যাড্রেস একই থাকে কিন্তু পোর্ট অ্যাড্রেস থাকে আলাদা আলাদা ।  আর এই কাজটি করে থাকে PAT। আমরা যখন কোন সার্ভার এর সাথে কানেক্ট হয় তখন কিন্তু শুধু আইপি অ্যাড্রেই লাগে না সাথে একটি পোর্ট নাম্বারও লাগে।

প্রত্যেকটি প্রোটকল এর নিদিষ্ট কিছু পোর্ট নাম্বার রয়েছে । আমরা যখন কোন সার্ভার এর সাথে কানেক্ট হই তখন কিন্তু প্রত্যকটি Server বা Destination এর র্পোাট নাম্বার কিন্তু একই থাকে Source Port নাম্বারটি Random হয়ে থাকে । এই Random নাম্বারটির রেঞ্জ হলে 1024-65535 পযন্তু যে কোন নাম্বার। যখন কোন সোর্স কম্পিউটার এই Random পোর্ট নাম্বারটি জেনারেট করে তখন অনেক সময় দুটি কম্পিউটার এর এই Source Port Address টি একই হতে পারে । ফলে তখন তারা কমিউনিকেট করতে পারবে না । আমরা নিচের চিত্রের মাধ্যমে PAT কে একটু বুঝার চেষ্টা করি।

NAT Bangla Tutorial

উপরের চিত্রতে একটি Client PC এক সাথে তিনটি কানেকশন বিল্ডাপ করেছে। এখানে প্রতিটি কানেকশনের IP Address একই কিন্তু তাদের Port Number আলাদা আলাদা। ফলে কোন সমস্যা নেই তারা পরস্পর এর মধ্যে যোগাযোগ করতে পারবে। শুধু মাত্র সে তার নাট রাউটারের কাছে থেকে একটি পাবলিক আইপি নিবে।

কিন্তু যখন তিনটি আলাদা আলাদ PC হবে তখন তারা যে সোর্স নাম্বারটি জেনারেট করবে তা একই হতে পারে! যদি আইপি অ্যাড্রেস আলাদা আলাদা হয় তাহলে সোর্স পোর্ট অ্যাড্রেস এক হল কোন সমস্যা নাই। কিন্তু আইপি ও পোর্ট অ্যাড্রেস যদি একই হয় তাহলে তা কমি্উনিকেট করতে পারবে না ।আমরা যদি নিচের চিত্রের দিকে খেয়াল করি।

NAT Bangla Tutorial

এখানে আমরা তিনটি Client PC দেখতে পাচ্ছি । যার প্রথম দুটির Port Address একই এবং শেষেরটির আলাদা। এখন যখন তারা কোন সার্ভার এর সাথে কমিউনিকেট করতে যাবে তাদের পাবলিক আইপ দরকার । যেহেতু আমাদের একটি মাত্র পাবলিক আইপি থাকবে, তখন তিনটি কম্পিউটার একই পাবলিক আইপি পাবে । ফলে প্রথম দুটি কম্পিউটারের IP Address ও Port Number একই হবে।  নিচেরটার পোর্ট নাম্বার যেহেতু আলাদা সে সার্ভার এর সাথে যোগাযোগ করতে পারবে। কিন্তু উপরের দুটি PC Server এর সাথে যোগাযোগ করতে পারবে না । PAT এর মাধ্যমে আমরা খুব সহজেই এই সমস্য সমাধান করতে পারি।

NAT Bangla Tutorial

PAT এর ক্ষেত্রে আমরা কিন্তু একটিই পাবলিক আইপি ব্যাবহার করি । আমরা একটি পাবলিক আইপ ব্যাবহার করে এক সাথে অনেকগুলি Client কে ইন্টারনেট সেবা প্রদান করি ।

উপরের চিত্রে আপনারা দেখতে পাচ্ছেন এখানে তিনটি Client PC রয়েছে যারা একই সাথে একটি সর্ভার এর সাথে কানেক্ট হওয়ার চেষ্টার করতেছে। এখানে Client PC প্রাইভেট আইপি অ্যাড্রেস দেওয়া আছে। আমাদের কাছে একটি মাত্র পাবলিক আইপি অ্যাড্রেস আছে আর তা হল 200.10.10.1। এখানে এই তিনটি কম্পিউটার এই একটি আইপি অ্যাড্রেস ব্যবহার করে সার্ভার এর সাথে কানেক্ট হবে ।  আমরা  জানি যখন কোন Client PC অন্য কোন হোস্ট এর সাথে কানেক্ট হতে যায় তখন সে তার সোর্স আইপি অ্যাড্রেস এর সাথে একটি পোর্ট নাম্বার যুক্ত করে । এবং এই পোর্ট নাম্বারটি সে Random জেনারেট করে আর সেই রেঞ্জ হল 1024-65535 পর্যন্ত। এখানে আমরা দেখতে পাচ্ছি প্রথম দুটি Client এর সোর্স পোর্ট নাম্বার একই তা হল 1024। এখন যখন এই Client কম্পিউটার সমুহ তাদের প্রাইভেট আইপি অ্যড্রেস ও পোর্ট নাম্বার নিয়ে NAT Router এর কাছে যাবে তখন NAT Router তাদের সোর্স প্রাইভেট আইপিটাবে ট্রান্সলেট করে সকলকে  এই পাবলিক “200.10.10.1”  আইপিটি দিবে  এবং সেই সাথে প্রথম  দুটি Client এর পোর্ট নাম্বার যেহেতু একই তাই NAT রাউটার তাদের পোর্ট অ্যাড্রেসটিও ট্রান্সলেট করে দিবে। সেই সাথে NAT Router দেখবে যাতে করে যে কোন Client এর সোর্স পোর্ট অ্যাড্রেস একই না হয় । উল্লেখযে প্রত্যেকটি Client এর কাছে কিন্তু তাদের Destination Port Address একই থাকবে । এবং আমাদের প্রতকটি প্রোটকল এর কিছু নির্দিষ্ট পোর্ট নাম্বার রয়েছে ।
 নিচে জনপ্রিয় কিছু পোটকল এর পোর্ট অ্যাড্রেস দেওয়া হল।
  1. ftp–21–File Transfer Protocol
  2. ssh–22–SSH Remote Login Protocol
  3. telnet–23–Telnet
  4. smtp–25–Simple Mail Transfer Protocol
  5. tftp–69–Trivial File Transfer Protocol
  6. gopher–70–Gopher
  7. http–80–World Wide Web HTTP
  8. pop2–109–Post Office Protocol-V2
  9. pop3–110–Post Office Protocol-V3
  10. nntp–119–Network News Transfer Protocol
  11. imap–143–Internet Message Access Protocol
  12. irc–194–Internet Relay Chat Protocol
  13. imap3–220–Interactive Mail Access Protocol V3
  14. https–443–http protocol over TLS/SSL
  15. printer–515–spooler
  16. imap4-ssl–585–IMAP4+SSL (use 993 instead)
  17. ftps–990–ftp protocol, control, over TLS/SSL
  18. telnets–992–telnet protocol over TLS/SSL
  19. imaps–993–imap4 protocol over TLS/SSL
  20. ircs–994–irc protocol over TLS/SSL
  21. pop3s–995–pop3 protocol over TLS/SSL (was spop3)

No comments:

Post a Comment