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 IP | subnet-এর 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-র কী হয়, চোখ রাখো।
পরিস্থিতি
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 ভেবে দেখো।
আগে নিজে উত্তর দাও, তারপর ব্যাখ্যাটা পড়ো। ঠিক হলেও পড়ো, কারণ ভুল Option-গুলো কেন ভুল, সেটাও ওখানে আছে।
নিজেকে যাচাই করোপ্রশ্ন
একটা টিম গত মাসে একটা Instance terminate করেছে, অথচ বিলে এখনো public IPv4-এর চার্জ আসছে। সবচেয়ে সম্ভাব্য কারণ কী?
নিজেকে যাচাই করোপ্রশ্ন
একটা web application যেন কোনো একটা Instance-এর public IP-র ওপর নির্ভর না করে, তার জন্য সবচেয়ে ভালো ডিজাইন কোনটা?
নিজেকে যাচাই করোপ্রশ্ন
একটা Instance-এর private IPv4 address কোথা থেকে আসে?
নিজেকে যাচাই করোপ্রশ্ন
একটা EC2 Instance-এ private IP আর public IP দুটোই আছে। Instance-এর operating system নিজের network interface-এ কোন address দেখতে পায়?
নিজেকে যাচাই করোপ্রশ্ন
auto-assigned public IP আছে এমন একটা Instance reboot করা হলো। তার public IP-র কী হবে?
নিজেকে যাচাই করোপ্রশ্ন
একই VPC-র ভেতরে একটা application server একটা database Instance-এ connect করবে। কোন address ব্যবহার করা উচিত?
নিজেকে যাচাই করোপ্রশ্ন
Elastic IP-র default quota কত?
নিজেকে যাচাই করোপ্রশ্ন
Elastic IP disassociate করা আর release করার মধ্যে তফাত কী?
নিজেকে যাচাই করোপ্রশ্ন
কোন দুটো কাজ করলে একটা Instance তার এখনকার auto-assigned public IPv4 address হারায়?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
ফেব্রুয়ারি ২০২৪ থেকে AWS প্রতিটা public IPv4 address-এর জন্য টাকা নেয় কেন?
নিজেকে যাচাই করোপ্রশ্ন
আজকের হিসাবে public IP-র বিল নিয়ে কোন কথাটা ঠিক?
নিজেকে যাচাই করোপ্রশ্ন
Elastic IP নিয়ে কোন দুটো কথা সত্যি?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একজন solutions architect us-east-1-এ একটা Elastic IP allocate করেছে। এখন সেটা eu-west-1-এর একটা Instance-এ লাগাতে চায়। কী হবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা Instance-এর একটা private IP আছে, আর একটা Elastic IP জোড়া আছে। Instance-টা terminate করা হলো। address দুটোর কী হবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানি প্রতিদিন সন্ধ্যায় একটা development Instance stop করে, সকালে আবার start করে। Instance-এ একটা Elastic IP জোড়া আছে। রাতের বেলা Elastic IP-টার কী হয়?
নিজেকে যাচাই করোপ্রশ্ন
একজন solutions architect এমন একটা subnet-এ Instance launch করল যার route table-এ 0.0.0.0/0 যায় Internet Gateway-তে। Security Group-ও traffic ঢুকতে দেয়। তবু internet থেকে Instance-এ পৌঁছানো যাচ্ছে না, আর console-এ কোনো public IPv4 address দেখাচ্ছে না। সবচেয়ে সম্ভাব্য কারণ কী?
নিজেকে যাচাই করোপ্রশ্ন
শুক্রবার সন্ধ্যায় খরচ বাঁচাতে একজন engineer একটা Instance stop করল, সোমবার সকালে আবার start করল। এখন টিমের save করে রাখা SSH connection Instance-এর public address-এ গিয়ে timeout হচ্ছে। আর কিছুই বদলানো হয়নি। সবচেয়ে সম্ভাব্য কারণ কী?
নিজেকে যাচাই করোপ্রশ্ন
একটা public subnet-এর Instance-এ auto-assigned public IP আছে। patch করার সময় শুধু reboot করা হয়, কখনো stop করা হয় না। manager বলছেন, ‘reboot-এর পরও যেন address থাকে, তাই একটা Elastic IP নাও’। কোন কথাটা ঠিক?
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানির একটাই EC2 Instance internet দিয়ে একটা partner-এর কাছে file পাঠায়। partner-এর firewall শুধু allow-list-এ থাকা source IP থেকে connection নেয়। patch করার জন্য Instance-টা প্রতি সপ্তাহে stop করে আবার start করা হয়। solutions architect কী করবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা পুরোনো application একটাই Instance-এ চলে, আর client-রা একটা নির্দিষ্ট IP-তে connect করে যেটা বদলানো যাবে না। একটা standby Instance তৈরি আছে। primary নষ্ট হলে কয়েক সেকেন্ডের মধ্যে client-দের standby-তে নেওয়ার উপায় কী?
নিজেকে যাচাই করোপ্রশ্ন
একজন solutions architect একটা web application-এর failover হিসেবে Elastic IP সরানোর ব্যবস্থা রেখেছে। reviewer বলছেন এর চেয়ে ভালো ডিজাইন আছে। reviewer সম্ভবত কোন দুর্বলতার কথা বলছেন?
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানি ফেব্রুয়ারি ২০২৪-এর পরের বিল দেখছে। public IPv4-এর চার্জ নিয়ে কোন দুটো কথা ঠিক?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা ছোট internal tool একটাই EC2 Instance-এ চলে, Load Balancer নেওয়ার বাজেট নেই। Route 53-এর একটা record Instance-এর auto-assigned public IP-তে point করা, আর প্রতিবার stop/start-এর পর tool-টা বন্ধ হয়ে যায়। সবচেয়ে সহজ সমাধান কী?
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানি internet-facing একটা Load Balancer-এর পেছনে public subnet-এ ৪০টা web Instance চালায়। প্রত্যেকটার auto-assigned public IP আছে, কিন্তু ব্যবহারকারীদের সব traffic আসে Load Balancer দিয়ে। ব্যবহারকারীদের কোনো অসুবিধা না করে public IPv4-এর খরচ কমানোর উপায় কী?
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানির web application একটা Application Load Balancer-এর পেছনে চলে, যার IP address সময়ের সঙ্গে বদলাতে পারে। একজন বড় customer-কে application-এর জন্য অল্প কয়েকটা স্থির IP address allow-list করতে হবে। কোন দুটো উপায়ে এই চাহিদা মেটে?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
migration-এর সময় একটা কোম্পানির একই Region-এ ৭টা Elastic IP লাগবে, কারণ partner প্রতিটা address আলাদা করে allow-list করে। ৬ নম্বর address allocate করতে গিয়ে error আসছে। solutions architect কী করবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানি নতুন একটা public application বানাচ্ছে, আর যতটা পারা যায় public IPv4-এর ঘণ্টাভিত্তিক খরচ এড়াতে চায়। তাদের সব client IPv6 সাপোর্ট করে। এই লেসন কোন উপায়ের দিকে ইঙ্গিত করে?
নিজেকে যাচাই করোপ্রশ্ন
একটা cloud টিম খুঁজে বের করতে চায় কোন public IPv4 address-এর জন্য টাকা যাচ্ছে অথচ কোনো কাজে লাগছে না। কোন দুটো tool এতে সাহায্য করে?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা account-এ কোনো Instance চালু নেই, তবু finance টিম বিলে public IPv4-এর চার্জ দেখছে। নিচের কোনটা এই চার্জের কারণ হতে পারে না?
নিজেকে যাচাই করোপ্রশ্ন
কোনো সার্ভার নষ্ট হোক বা বদলে যাক, internet-এর client-রা যেন application-এ পৌঁছাতে পারে, এটা একজন solutions architect নিশ্চিত করতে চায়। একটা Instance-এ একটা Elastic IP আটকে রাখার চেয়ে ভালো উপায় হিসেবে AWS নিচের কোনটা সুপারিশ করে না?