Course-এর সূচি

3.6

Public, Private আর Elastic IP

একটা Instance কোন address পায় আর সেটা কখন বদলায়, Elastic IP, public IPv4-এর জন্য কেন টাকা লাগে, আর এর চেয়ে ভালো উপায়।

20 মিনিট পড়া + Animation

টিপস: ডটেড-আন্ডারলাইন করা যেকোনো শব্দে ট্যাপ বা Hover করলে তার অর্থ দেখবে।

এই লেসন শেষে তুমি যা পারবে

  • একটা EC2 Instance যে তিন রকম IPv4 address পেতে পারে, সেগুলো চিনতে আর কোনটা কী কাজে লাগে তা বলতে।
  • reboot, stop/start আর terminate করলে কোন address-এর কী হয়, তা আগেভাগেই বলে দিতে।
  • Elastic IP ঠিকভাবে ব্যবহার করতে (নষ্ট Instance-কে client-এর চোখের আড়ালে রাখাসহ), আর এর সীমাবদ্ধতাগুলো জানতে।
  • public IPv4-এর জন্য কেন টাকা কাটে তা বোঝাতে, আর ভুলে পড়ে থাকা Elastic IP-র বিল এড়াতে।
  • পরীক্ষায় (বা আসল সিস্টেমে) fixed IP-র চেয়ে ভালো কোনো ডিজাইন থাকলে সেটাই বেছে নিতে।

#তিন রকম address

VPC-র ভেতরের একটা Instance তিন রকম IPv4 address পেতে পারে:

Addressকোথা থেকে আসেকোথা থেকে পৌঁছানো যায়কখন বদলায়
Private IPsubnet-এর CIDR range থেকে (লেসন 3.2)VPC-র ভেতর থেকে (আর VPC-র সঙ্গে জোড়া নেটওয়ার্ক থেকে)Instance যতদিন আছে, কখনো বদলায় না; terminate করলে ছেড়ে দেওয়া হয়
Public IP (auto-assigned)AWS-এর নিজের pool থেকে, যদি subnet-এ “auto-assign public IPv4” চালু থাকে (অথবা launch করার সময় তুমি চেয়ে নাও)internet থেকেstop/start করলে (stop করলেই ছেড়ে দেয়, start করলে নতুন একটা পায়), আর terminate করলে
Elastic IP (EIP)আগে তোমার account-এ allocate করা হয়, তারপর কোনো Instance বা network interface-এর সঙ্গে জুড়ে দেওয়া হয়internet থেকেকেবল তুমি নিজে সরালে বা release করলে

লেসন 3.3-এর কথা মনে আছে? public IP আর Elastic IP আসলে থাকে Internet Gateway-র এক-এক (one-to-one) mapping-এ। Instance-এর operating system এগুলো কখনো দেখে না, সে শুধু নিজের private address-টাই জানে।

কোনটা কী কাজে লাগে:

  • Private IP: VPC-র ভেতরের সব কথাবার্তা এটা দিয়েই চলে। সার্ভার, ডেটাবেস, Load Balancer সবাই একে অপরের সঙ্গে private address দিয়ে কথা বলে। এতে কাজ দ্রুত হয়, খরচও কম (কারণ ডেটাকে internet ঘুরে যেতে হয় না), আর address-টা কখনো বাইরে প্রকাশ পায় না।
  • Public IP: এটা কাজ চালানোর মতো, ফেলে দেওয়ার মতো একটা address। এতে internet থেকে Instance-এ ঢোকা যায়, বা Instance নিজে সরাসরি internet-এ যেতে পারে, অথচ কোনো fixed address-এর জন্য টাকা দিতে বা সেটা সামলাতে হয় না।
  • Elastic IP: এমন একটা public address, যেটা কখনোই বদলানো চলবে না, কারণ বাইরের কেউ এর ওপর ভরসা করে বসে আছে। যেমন, কোনো partner তাদের firewall-এর allow-list-এ তোমার IP বসিয়ে রেখেছে, কিংবা এমন একটা DNS record আছে যেটা চাইলেই তাড়াতাড়ি বদলানো যায় না।

একটা Instance-এর address-গুলোর কী হয়

reboot, stop, Instance নষ্ট হওয়া আর terminate, প্রতিটা ধাপে private IP, auto-assigned public IP আর Elastic IP-র কী হয়, চোখ রাখো।

পরিস্থিতি

VPC
Public subnet10.0.0.0/24
গ্রাহক
Server A10.0.0.10public 203.0.113.25
→ 203.0.113.25
ধাপ 1 / 4
1

Server A launch করা হয়েছে এমন একটা public subnet-এ, যেখানে auto-assign চালু। তাই এর একটা private IP আছে (10.0.0.10), আর AWS নিজের pool থেকে একটা public IP-ও দিয়েছে: 203.0.113.25। গ্রাহকেরা এই public IP দিয়েই ঢোকে।

#Elastic IP

Elastic IP হলো একটা স্থির (static) public IPv4 address। প্রথমে তুমি একটা Region-এ এটা নিজের account-এ allocate করো, তারপর কোনো Instance (বা network interface)-এর সঙ্গে associate করো, মানে জুড়ে দাও। যে কথাগুলো জেনে রাখতে হবে:

  • যতক্ষণ না তুমি release করছ, এটা তোমারই থাকে। কোনো Instance চালু থাকুক, বন্ধ থাকুক বা মুছে যাক, তাতে এর কিছু যায় আসে না।
  • এটা একবারে একটাই Instance বা network interface-এর সঙ্গে জোড়া থাকে, তবে কয়েক সেকেন্ডেই অন্যটায় সরিয়ে নেওয়া যায়।
  • default quota: প্রতি account-এ প্রতি Region-এ ৫টা Elastic IP (বেশি লাগলে AWS-এর কাছে চেয়ে নিতে পারো)।
  • এটা একটা Regional resource, তাই এক Region থেকে অন্য Region-এ নেওয়া যায় না।

নষ্ট Instance আড়াল করা। Elastic IP খুব দ্রুত অন্য Instance-এ সরানো যায়। তাই কোনো Instance বিকল হলে তার জায়গায় একটা standby Instance বসিয়ে দেওয়া যায়, client টেরও পায় না। নষ্ট Instance থেকে Elastic IP খুলে নাও (disassociate), তারপর সুস্থ Instance-এ জুড়ে দাও (associate)। client আগের address-টাই ব্যবহার করতে থাকে। (অ্যানিমেশনের “নষ্ট Instance আড়াল করা” অংশটা দেখো।)

#AWS নিজেই কেন এগুলো এড়াতে বলে

AWS নিজেই বলে, Elastic IP যত কম ব্যবহার করা যায় তত ভালো। একটা Instance-এ fixed IP বসানো মানে সাধারণত architecture-টা নড়বড়ে: সব ভার একটাই সার্ভারের ওপর, কিছু হলে হাতে হাতে failover করতে হয়, আর scale করার কোনো সুযোগ নেই। এর চেয়ে ভালো উপায় আছে:

  • Instance (বা Load Balancer)-কে Route 53-এ একটা DNS name দাও। তারপর address আঁকড়ে না থেকে দরকার হলে শুধু DNS record-টা বদলে দাও (অধ্যায় ৮)।
  • Instance-গুলোকে একটা Load Balancer-এর পেছনে রাখো (অধ্যায় ৬)। client তখন Load Balancer-এর DNS name ব্যবহার করে; Instance-গুলো private থাকতে পারে, আর যখন খুশি যোগ হতে বা সরে যেতে পারে।
  • যদি সত্যিই fixed public IP লাগে (যেমন partner তোমার address allow-list করে রাখবে), তাহলে Network Load Balancer-এ প্রতিটা AZ-এর জন্য একটা করে Elastic IP দেওয়া যায়, আর AWS Global Accelerator পুরো application-এর জন্য দুটো static anycast IP দেয় (অধ্যায় ১১)।

#public IPv4-এর জন্য টাকা লাগে

IPv4 address-এর সংখ্যা সীমিত, সহজে পাওয়া যায় না। তাই ১ ফেব্রুয়ারি ২০২৪ থেকে AWS প্রতিটা public IPv4 address-এর জন্য টাকা নেয়: প্রতিটার জন্য ঘণ্টায় প্রায় $0.005, মানে মাসে মোটামুটি $3.60। এই চার্জ লাগে:

  • address ব্যবহারে থাকুক (চালু Instance-এ জোড়া) বা অলস পড়ে থাকুক (allocate করা কিন্তু কোথাও জোড়া নেই, অথবা stop করা Instance-এ জোড়া);
  • auto-assigned public IP হোক বা Elastic IP, দুটোর ক্ষেত্রেই;
  • Load Balancer, NAT Gateway আর অন্যান্য AWS resource-এর public IP-র ক্ষেত্রেও।

নতুন account হলে প্রথম বছরে AWS Free Tier-এ কিছু ঘণ্টার public IPv4 ফ্রি পাওয়া যায়।

নিজেকে যাচাই করোপ্রশ্ন

একটা Instance-এ auto-assigned public IP ছিল। maintenance-এর জন্য সেটা stop করে আবার start করা হলো। এখন ব্যবহারকারীরা পুরোনো address-এ আর ঢুকতে পারছে না। কী হয়েছে, আর এটা ঠেকানোর উপায় কী?

#নিজে করে দেখো

# একটা Elastic IP allocate করে Instance-এ জুড়ে দাও
ALLOC=$(aws ec2 allocate-address --domain vpc --query AllocationId --output text)
aws ec2 associate-address --allocation-id $ALLOC --instance-id i-0123456789abcdef0

# যেসব Elastic IP allocate করা কিন্তু কোথাও জোড়া নেই, সেগুলো খুঁজে বের করো (অকারণে টাকা যাচ্ছে)
aws ec2 describe-addresses --query "Addresses[?AssociationId==null].[PublicIp,AllocationId]" --output table

# টাকা কাটা বন্ধ করো: আগে disassociate, তারপর release
aws ec2 disassociate-address --association-id eipassoc-0abc123
aws ec2 release-address --allocation-id $ALLOC

# Linux Instance-এর ভেতরে: OS শুধু নিজের private address-টাই চেনে
ip -4 addr show eth0

Amazon VPC IP Address Manager (IPAM)-এ public IP insights নামে একটা ফ্রি view আছে। সেখানে তোমার সব account-এর প্রতিটা public IPv4 address একসঙ্গে দেখা যায়, কোনগুলো অলস পড়ে আছে তা-ও।

#সারসংক্ষেপ

মূল কথাগুলো

  • Private IP: subnet-এর range থেকে আসে, VPC-র ভেতরে কাজে লাগে, terminate না করা পর্যন্ত থাকে।
  • Public IP (auto-assigned): AWS-এর pool থেকে আসে, stop/start করলে বদলে যায় (reboot-এ বদলায় না), terminate করলে ছেড়ে দেওয়া হয়।
  • Elastic IP: স্থির public IP, যা release না করা পর্যন্ত তোমার account-এর; একবারে একটা Instance বা interface-এ জোড়া থাকে, কয়েক সেকেন্ডে সরিয়ে নষ্ট Instance আড়াল করা যায়; default হিসেবে প্রতি Region-এ ৫টা।
  • operating system শুধু private address দেখে; public ↔ private মিলিয়ে দেওয়ার কাজটা করে Internet Gateway।
  • ফেব্রুয়ারি ২০২৪ থেকে সব public IPv4 address-এর খরচ ঘণ্টায় প্রায় $0.005, জোড়া থাকুক বা অলস। Instance terminate করলে তার Elastic IP ছাড়া হয় না: টাকা কাটা বন্ধ করতে নিজে release করো।
  • fixed IP-র চেয়ে DNS name আর Load Balancer ভালো; static IP সত্যিই লাগলে NLB-র Elastic IP বা Global Accelerator ভেবে দেখো।