পাঠ ১৩ · ৫৭-এর মধ্যে · মডিউল ৪
Home / Courses / Cloud Computing & DevOps / VPC ডিজাইন

VPC ও সাবনেট ডিজাইন

VPC & subnet design
৮ মিনিট পড়া শুরু · Beginner Python কোডসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • VPC কী এবং কেন এটি ক্লাউড নেটওয়ার্কিং-এর ভিত্তি
  • পাবলিক ও প্রাইভেট সাবনেটের পার্থক্য এবং কোনটি কখন ব্যবহার করবেন
  • CIDR নোটেশনের বেসিক এবং প্রিফিক্স লেংথ থেকে অ্যাড্রেস সংখ্যা কীভাবে হিসাব করবেন
  • Python দিয়ে বিভিন্ন CIDR প্রিফিক্সের অ্যাড্রেস সংখ্যা ও সাবনেট বিভাজন হিসাব

১ · VPC কী

VPCVirtual Private Cloudক্লাউড প্রোভাইডারের ইনফ্রাস্ট্রাকচারের মধ্যে একটি লজিক্যালি বিচ্ছিন্ন, আপনার নিজের ভার্চুয়াল প্রাইভেট নেটওয়ার্ক। হলো একটি ক্লাউড প্রোভাইডারের বিশাল, ভাগাভাগি করা ফিজিক্যাল ইনফ্রাস্ট্রাকচারের মধ্যে আপনার নিজস্ব, লজিক্যালি বিচ্ছিন্ন ভার্চুয়াল নেটওয়ার্ক — যদিও অন্য হাজারো গ্রাহক একই ফিজিক্যাল হার্ডওয়্যার শেয়ার করছে, আপনার VPC আপনার নিজস্ব প্রাইভেট নেটওয়ার্ক স্পেসের মতোই আচরণ করে।

২ · সাবনেট — VPC-এর বিভাজন

একটি VPC-কে ছোট ছোট সাবনেটে ভাগ করা হয়, প্রতিটির নিজস্ব IP রেঞ্জ এবং রুটিং বৈশিষ্ট্য —

পাবলিক সাবনেট
ইন্টারনেটে সরাসরি রুট আছে — লোড ব্যালেন্সার বা bastion host-এর জন্য উপযুক্ত।
প্রাইভেট সাবনেট
ইন্টারনেটে সরাসরি রুট নেই — ডেটাবেস বা অভ্যন্তরীণ সার্ভিসের জন্য নিরাপদ, আক্রমণের পরিধি কমায়।
নিরাপত্তা ও নেটওয়ার্ক সেগমেন্টেশন

একটি ডেটাবেসকে প্রাইভেট সাবনেটে রাখা মানেই সেটি ইন্টারনেট থেকে সরাসরি অ্যাক্সেসযোগ্য নয় — শুধুমাত্র নির্দিষ্ট পাবলিক সাবনেটের অ্যাপ্লিকেশন সার্ভার এর সাথে কথা বলতে পারে। Cybersecurity কোর্সের নেটওয়ার্ক-সেগমেন্টেশন নীতির সরাসরি প্রয়োগ — L16-এ সিকিউরিটি গ্রুপের মাধ্যমে এই অ্যাক্সেস আরও সূক্ষ্মভাবে নিয়ন্ত্রণ করা দেখব।

VPC · 10.0.0.0/16 পাবলিক সাবনেট 10.0.1.0/24 · লোড ব্যালেন্সার ইন্টারনেট রুট আছে প্রাইভেট সাবনেট 10.0.2.0/24 · ডেটাবেস ইন্টারনেট রুট নেই
একটি একক VPC-এর ভেতরে আলাদা IP রেঞ্জসহ পাবলিক ও প্রাইভেট সাবনেট — প্রতিটির রুটিং আচরণ ভিন্ন।

৩ · CIDR নোটেশন বেসিকস

একটি IP রেঞ্জ সাধারণত CIDRClassless Inter-Domain Routingএকটি IP অ্যাড্রেস রেঞ্জ বর্ণনা করার নোটেশন, যেমন 10.0.0.0/16 — /16 অংশটি রেঞ্জের আকার নির্ধারণ করে। নোটেশনে লেখা হয়, যেমন 10.0.0.0/16। /16 অংশটিকে প্রিফিক্স লেংথ বলে — এটি নির্ধারণ করে রেঞ্জে মোট কতগুলো IP অ্যাড্রেস আছে। সূত্রটি সহজ —

$$\text{মোট অ্যাড্রেস} = 2^{32-p}$$

যেখানে $p$ হলো প্রিফিক্স লেংথ। যেমন, একটি /24 রেঞ্জে $2^{32-24} = 2^{8} = 256$টি অ্যাড্রেস থাকে, আর একটি /16 রেঞ্জে $2^{32-16} = 2^{16} = 65{,}536$টি অ্যাড্রেস থাকে — প্রিফিক্স যত ছোট, রেঞ্জ তত বড়।

৪ · সিমুলেশন — CIDR প্রিফিক্স থেকে অ্যাড্রেস সংখ্যা

নিচে কয়েকটি সাধারণ প্রিফিক্স লেংথের জন্য মোট অ্যাড্রেস সংখ্যা হিসাব করা হয়েছে, এবং একটি /16 VPC-কে কতগুলো /24 সাবনেটে ভাগ করা যায় তাও দেখানো হয়েছে — এটি শুধু গাণিতিক সিমুলেশন, কোনো বাস্তব ক্লাউড অ্যাকাউন্টে কিছু তৈরি করা হচ্ছে না।

Python
# বিভিন্ন CIDR প্রিফিক্সের জন্য মোট IP অ্যাড্রেস সংখ্যা (2**(32-prefix) সূত্র)
def total_addresses(prefix_length):
    return 2 ** (32 - prefix_length)

prefixes = [16, 20, 24, 28, 30]

print(f"{'CIDR প্রিফিক্স':16}{'মোট অ্যাড্রেস':16}{'~ব্যবহারযোগ্য (৫টি সংরক্ষিত বাদে)'}")
for p in prefixes:
    total = total_addresses(p)
    usable = total - 5 if total > 5 else 0   # অধিকাংশ ক্লাউড প্রোভাইডার প্রতি সাবনেটে কিছু অ্যাড্রেস সংরক্ষিত রাখে
    print(f"/{p:<15}{total:<16}{usable}")

# একটি /16 VPC-কে কতগুলো /24 সাবনেটে ভাগ করা যায়
vpc_prefix = 16
subnet_prefix = 24
num_subnets = 2 ** (subnet_prefix - vpc_prefix)
print(f"\nএকটি /{vpc_prefix} VPC-কে /{subnet_prefix} সাবনেটে ভাগ করলে মোট সাবনেট সংখ্যা: {num_subnets}")

    
লক্ষ্য করুন — প্রিফিক্স লেংথ ১ কমলে (যেমন /24 থেকে /23) অ্যাড্রেস সংখ্যা দ্বিগুণ হয়ে যায়, কারণ এটি একটি ঘাতীয় (exponential) সম্পর্ক। একটি /16 VPC-কে /24 সাবনেটে ভাগ করলে ঠিক $2^{24-16} = 2^{8} = 256$টি সাবনেট পাওয়া যায় — এই ধরনের হিসাব বাস্তব VPC ডিজাইনের সময় "কত বড় VPC দরকার" ঠিক করতে ব্যবহৃত হয়।

৫ · System Design ও Cybersecurity কোর্সের সাথে সম্পর্ক

নেটওয়ার্ক টপোলজি ও সেগমেন্টেশনের গভীর স্থাপত্যগত আলোচনা System Design কোর্সে এবং আক্রমণের পরিধি কমানোর নিরাপত্তা নীতি Cybersecurity কোর্সে বিস্তারিত আছে। এই পাঠ সেই ধারণাগুলোর অপারেশনাল প্রয়োগ দেখিয়েছে — বাস্তবে কীভাবে একটি VPC ও তার সাবনেট ডিজাইন করা হয়।

মূল কথা · Key takeaway

VPC আপনাকে একটি প্রাইভেট নেটওয়ার্ক স্পেস দেয়, সাবনেট সেই স্পেসকে পাবলিক ও প্রাইভেট অংশে ভাগ করে নিরাপত্তা ও রুটিং নিয়ন্ত্রণ করে, আর CIDR নোটেশন এই পুরো ডিজাইনের গাণিতিক ভাষা — প্রিফিক্স লেংথ যত ছোট হবে, তত বড় রেঞ্জ পাবেন।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ একটি ডেটাবেস সার্ভারকে পাবলিক সাবনেটে না রেখে প্রাইভেট সাবনেটে রাখলে সরাসরি কী সুবিধা পাওয়া যায়?

ইন্টারনেট থেকে সরাসরি কোনো রুট না থাকায়, ডেটাবেস পোর্টে সরাসরি আক্রমণ করার কোনো নেটওয়ার্ক পথই থাকে না — এমনকি যদি সিকিউরিটি গ্রুপ রুল ভুলভাবে কনফিগার করা হয়, প্রাইভেট সাবনেটের রাউটিং লেয়ারই একটি অতিরিক্ত প্রতিরক্ষা স্তর (defense in depth) হিসেবে কাজ করে।

প্র ০২ একটি ছোট স্টার্টআপ কেন একটি বিশাল /16 VPC দিয়ে শুরু করেও শুধু কয়েকটি ছোট /24 সাবনেট ব্যবহার করতে পারে?

ভবিষ্যতের বৃদ্ধির জন্য জায়গা রাখা — একটি /16 VPC-তে ৬৫,৫৩৬টি অ্যাড্রেস থাকে, যেখান থেকে প্রয়োজন অনুযায়ী নতুন /24 সাবনেট (প্রতিটিতে ২৫৬টি অ্যাড্রেস) তৈরি করা যায় পুরো VPC পুনর্গঠন না করেই। শুরুতে ছোট VPC বেছে নিলে পরে নেটওয়ার্ক সম্প্রসারণের প্রয়োজন হলে সমস্যায় পড়তে হতে পারে।

প্র ০৩ একটি /30 সাবনেটে মাত্র ৪টি অ্যাড্রেস থাকে — এত ছোট সাবনেট বাস্তবে কখন ব্যবহারযোগ্য হতে পারে?

খুবই নির্দিষ্ট, সীমিত-ব্যবহারের ক্ষেত্রে — যেমন দুটি নেটওয়ার্ক ডিভাইসের মধ্যে একটি পয়েন্ট-টু-পয়েন্ট লিংক, যেখানে মাত্র দুটি ব্যবহারযোগ্য অ্যাড্রেস (একটি প্রতিটি প্রান্তে) দরকার। সাধারণ অ্যাপ্লিকেশন সার্ভার হোস্ট করার জন্য এটি ব্যবহার করা হয় না — এত ছোট রেঞ্জ দ্রুত অ্যাড্রেস শেষ হয়ে যাওয়ার ঝুঁকি তৈরি করে।

অনুশীলন

  1. চিন্তা করুন: একটি অ্যাপ্লিকেশনের জন্য ৩টি স্তর — ওয়েব সার্ভার, অ্যাপ সার্ভার, ডেটাবেস — কোনগুলো পাবলিক আর কোনগুলো প্রাইভেট সাবনেটে থাকা উচিত বলে মনে হয়?

    সাধারণত শুধু লোড ব্যালেন্সার/ওয়েব-ফেসিং অংশ পাবলিক সাবনেটে থাকে (ইন্টারনেট থেকে ট্রাফিক গ্রহণ করতে হবে) — অ্যাপ সার্ভার ও ডেটাবেস উভয়ই প্রাইভেট সাবনেটে থাকা উচিত, শুধু পাবলিক সাবনেট থেকে অভ্যন্তরীণ রুটের মাধ্যমে অ্যাক্সেসযোগ্য। এটি "least exposure" নীতির সরাসরি প্রয়োগ — যতটুকু ইন্টারনেট থেকে দরকার ততটুকুই উন্মুক্ত রাখা।

  2. পরীক্ষা করুন: উপরের কোড সেলে prefixes তালিকায় 22 যোগ করুন এবং এর মোট ও ব্যবহারযোগ্য অ্যাড্রেস সংখ্যা কত হয় দেখুন।

    /22 মানে $2^{32-22} = 2^{10} = 1{,}024$টি মোট অ্যাড্রেস, তাই ব্যবহারযোগ্য হবে প্রায় ১,০১৯টি (৫টি সংরক্ষিত বাদে)। এটি /24-এর (২৫৬) চেয়ে ৪ গুণ বড়, /20-এর (৪,০৯৬) চেয়ে ৪ গুণ ছোট — প্রতিটি ধাপ প্রিফিক্স লেংথে ঠিক ২ গুণ পার্থক্য তৈরি করে তা নিশ্চিত করে।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

আগের পাঠ
ব্যাকআপ, স্ন্যাপশট ও ডিজাস্টার রিকভারি