Course-এর সূচি

8.1

Record, Hosted Zone আর TTL

DNS একটু ঝালিয়ে নেওয়া, record type, public বনাম private hosted zone, আর TTL কত রাখবে।

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

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

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

  • Amazon Route 53 কী আর কী কী করে বলতে: authoritative DNS, domain registrar, প্রতিটা VPC-র ভেতরের resolver, health check, আর AWS-এর একমাত্র service যার availability SLA ১০০%।
  • যেকোনো URL-কে protocol, subdomain, second-level domain, TLD আর root-এ ভেঙে পড়তে, আর authoritative উত্তর আর cache থেকে আসা উত্তরের পার্থক্য ধরতে।
  • প্রতিটা record-এ কী থাকে (name, type, value, routing policy, TTL) বোঝাতে, আর A, AAAA, CNAME, NS-এর মধ্যে ঠিকটা বাছতে, সঙ্গে MX, TXT, CAA, SOA, PTR, SRV আর DS।
  • প্রতিটা নতুন zone-এ Route 53 যে NS আর SOA record বসায় সেগুলো বোঝাতে, আর negative caching কী সেটা বলতে।
  • Public আর private hosted zone-এর মধ্যে বেছে নিতে, private zone চালু করতে (DNS attribute, একাধিক VPC আর অন্য account-এর সঙ্গে association, split view), আর bill কত হবে হিসাব করতে।
  • একটা EC2 instance-এর দিকে নিরাপদে domain দেখাতে, Elastic IP দিয়ে।
  • ভেবেচিন্তে TTL বেছে নিতে, আর record বদলানোর পরিকল্পনা এমনভাবে করতে যাতে এক দিন না লেগে কয়েক মিনিটেই কাজ হয়ে যায়।

প্রায় প্রতিটা SAA-C03 পরীক্ষায় Route 53 আর DNS থেকে ৩-৪টা প্রশ্ন থাকে, আর সেগুলো মিশে থাকে load balancer, CloudFront আর disaster recovery-র প্রশ্নের ভেতরে। এই chapter-এ পাঁচটা লেসন। প্রথম এই লেসনে ভিতটা গড়ব: record, hosted zone আর TTL। লেসন ৮.২-এ CNAME বনাম Alias, ৮.৩-এ routing policy, ৮.৪-এ health check আর failover, আর ৮.৫-এ registrar আর hybrid DNS।

#Route 53 আসলে কী

#এক অনুচ্ছেদে DNS

মানুষ নাম মনে রাখে, কম্পিউটারের লাগে IP address। তুমি google.com লিখলে browser জানেই না সেটা কোথায়, যতক্ষণ না কেউ নামটাকে 142.250.190.46-এর মতো একটা address-এ বদলে দেয়। পুরো internet-এর জন্য এই অনুবাদের কাজটা করে Domain Name System (DNS), তাই একে বলে internet-এর phonebook। পুরো যন্ত্রটা (DNS-এর গাছ, চার রকম server, record type, cache-এর স্তর) বিস্তারিত বোঝানো আছে System Design-এর লেসন DNS: internet-এর phonebook-এ। এখানে শুধু যতটুকু দরকার ততটুকু ঝালিয়ে নেব, আর মন দেব Route 53 নতুন কী যোগ করে আর পরীক্ষা কী জানতে চায় তার ওপর।

#Route 53-এর পাঁচটা কাজ

Amazon Route 53 একটা highly available, scalable, পুরোপুরি managed DNS service। এর কাজ পাঁচটা:

কাজমানে কীলেসন
Authoritative DNSতুমি নিজের domain-এর জন্য একটা hosted zone বানাও আর তার record লেখো-বদলাও; ওই domain নিয়ে দুনিয়ার যেকোনো প্রশ্নের উত্তর Route 53-এর name server দেয় সেই record থেকে। “Authoritative” মানে record-এর নিয়ন্ত্রণ তোমার, মানে customer-এর হাতে, আর Route 53 উত্তর দেয় আসল উৎস থেকে, কোনো cache থেকে না।এই লেসন
Domain registrarGoDaddy বা Namecheap-এর মতো Route 53 থেকেও domain কেনা আর renew করা যায়।৮.৫
প্রতিটা VPC-তে resolverপ্রতিটা VPC-তে একটা built-in recursive resolver থাকে, VPC-র base address যোগ দুই ঠিকানায়, এখন এর নাম Route 53 VPC Resolver। EC2 instance-দের সব lookup-এর উত্তর এটাই দেয়, private hosted zone-এর নামসহ।এই লেসন (সংক্ষেপে), ৮.৫
Health checkতোমার endpoint বেঁচে আছে কি না Route 53 পরীক্ষা করতে পারে, আর মরা endpoint-এর উত্তর দেওয়া বন্ধ করতে পারে।৮.৪
Traffic routingকোন user কোন উত্তর পাবে, ঠিক করে routing policy: weighted, latency, failover, geolocation, আরও কিছু।৮.৩

পরীক্ষা যে তিনটা কথা খুব পছন্দ করে:

  • ১০০% availability SLA। AWS-এর মধ্যে শুধু Route 53-এর SLA-তেই ১০০%-এর প্রতিশ্রুতি: কোনো hosted zone-এর মাসিক uptime ১০০%-এর নিচে নামলেই AWS service credit দেয়। এই SLA হলো DNS query-র উত্তর দেওয়ার ব্যাপারে (zone-কে তখনই down ধরা হয়, যখন তার চারটা name server-এর কোনোটাই সাড়া দেয় না); Route 53-এর API বা console এর আওতায় না। (AWS GovCloud-এর zone-এর প্রতিশ্রুতি ৯৯.৯৯৫%।)
  • নাম “53” কেন? DNS server কাজ করে port 53-এ, সাধারণ query-র জন্য UDP-তে, আর বড় উত্তর বা zone transfer-এর জন্য TCP-তে।
  • Global service। Hosted zone কোনো Region-এ বাঁধা না; Route 53-এর name server-গুলো সারা পৃথিবীর AWS edge location-এ বসানো। তবে এর control plane (record বদলানোর API আর console) চলে us-east-1-এ।

#Route 53-এর চোখে DNS একবার ঝালিয়ে নিই

#একটা URL পড়া

http://api.www.example.com. নাও, আর পড়ো ডান থেকে বাঁয়ে:

অংশউদাহরণেমানে
Rootএকদম শেষের .DNS গাছের মাথা। সাধারণত চোখে পড়ে না, কিন্তু সবসময় থাকে।
Top-level domain (TLD)comGeneric TLD যেমন .com, .org, .gov, .net; দেশের code যেমন .us, .in, .bd।
Second-level domain (SLD)example.comযে নামটা তুমি registrar-এর কাছ থেকে register করো, যেমন amazon.com বা google.com। কড়া হিসাবে second-level label শুধু example; তবে লোকে আর slide-গুলো সাধারণত example.com-কেই SLD বলে।
Subdomainwww, api.wwwSLD-এর বাঁ দিকের সবকিছু। এগুলো তুমি ইচ্ছেমতো বানাও, নিজের zone-এর record হিসেবে।
Protocolhttp://DNS-এর অংশই না: DNS IP দিয়ে দেওয়ার পর browser server-এর সঙ্গে কীভাবে কথা বলবে, সেটা বলে।
FQDNapi.www.example.com.Fully qualified domain name: root পর্যন্ত প্রতিটা label সহ পুরো নাম।

Zone apex (একে root domain বা naked domain-ও বলে) হলো zone-এর নিজের নাম, এখানে কোনো subdomain ছাড়া example.com। CNAME record-এর বেলায় এটা গুরুত্বপূর্ণ, একটু পরেই দেখবে।

#যে শব্দগুলো লাগবে

শব্দকী জিনিস
Domain registrarযে company থেকে তুমি domain কেনো (আসলে ভাড়া নাও): Amazon Route 53, GoDaddy, Namecheap… এরাই TLD-কে জানিয়ে দেয় তোমার domain-এর authoritative name server কারা।
DNS recordZone-এর ভেতরের একটা নিয়ম, যেমন “www.example.com-এর IPv4 address হলো 203.0.113.10”। Type আছে A, AAAA, CNAME, NS ইত্যাদি।
Zone fileএকটা domain-এর সব record-ওয়ালা text file, standard format-এ। অন্য DNS provider থেকে সরে আসার সময় Route 53 এমন file import করতে পারে।
Hosted zoneZone-এর Route 53 সংস্করণ: একটা domain আর তার subdomain-গুলোর traffic কীভাবে route হবে, সেই record-গুলোর একটা পাত্র।
Name serverযে server DNS query-র উত্তর দেয়। Authoritative name server উত্তর দেয় নিজের কাছে রাখা zone থেকে; non-authoritative উত্তর আসে cache থেকে। (Notes-এ আছে name server নাকি “traffic-কে direct করে”: আসলে করে না; সে শুধু প্রশ্নের উত্তর দেয়, তারপর traffic সরাসরি ওই IP-তে যায়।)
Recursive resolverযে server client-এর হয়ে খাটাখাটনিটা করে: root, TLD আর authoritative server-কে জিজ্ঞেস করে, আর উত্তর cache করে রাখে। এটা হতে পারে তোমার ISP-এর, কোনো public resolver (8.8.8.8, 1.1.1.1), তোমার অফিসের, আর AWS-এর ভেতরে হলে VPC Resolver।
TTL (time to live)একটা record resolver কত সেকেন্ড cache-এ রাখতে পারবে, তারপর আবার জিজ্ঞেস করতে হবে।

#একটা lookup-এ Route 53 কোথায় বসে

  1. ১. Browser আর OS-এর cache

    তুমি example.com লিখলে। Browser আর operating system আগে নিজেদের cache দেখে। টাটকা কপি না পেলে প্রশ্নটা পাঠায় ঠিক করে রাখা recursive resolver-এর কাছে।

  2. ২. Root server

    Resolver-এর কাছেও কিছু cache করা না থাকলে সে জিজ্ঞেস করে একটা root server-কে। Root উত্তর জানে না, তবে .com-এর TLD server-দের ঠিকানা দিয়ে দেয়। (Root server-দের সমন্বয় করে IANA, যেটা ICANN-এর অংশ।)

  3. ৩. TLD server

    .com TLD server ফেরত দেয় example.com-এর NS record: মানে authoritative name server-দের নাম। তোমার domain Route 53-এ থাকলে এগুলো হলো তোমার hosted zone-এর চারটা Route 53 name server। এগুলো ওখানে বসিয়েছে তোমার registrar।

  4. ৪. Route 53 উত্তর দেয়

    Resolver এবার একটা Route 53 name server-কে জিজ্ঞেস করে, আর সে আসল record-টা দেয়, যেমন A 203.0.113.10, সঙ্গে TTL 300। Resolver সেটা cache করে, browser IP পায়, website খুলে যায়।

DNS lookup-এ Route 53-এর জায়গা কোথায়

Route 53 হলো শেষ স্টপ: তোমার zone-এর authoritative name server। দেখো একটা পুরো lookup, একটা cache hit যেটা Route 53 পর্যন্ত যায়ই না, একটা ভুল বানানের উত্তরে NXDOMAIN, আর এমন একটা lookup যেটা ঠিকঠাক কাজ করে অথচ site বন্ধ।

পরিস্থিতি

Browser
Resolverrecursive
Root server
.com TLD
Route 53authoritative
Web server203.0.113.10
www.example.com?
ধাপ 1 / 9
1

তুমি www.example.com খুললে। Browser আর OS-এর cache-এ কিছু নেই, তাই তারা recursive resolver-কে জিজ্ঞেস করে: সেটা হতে পারে তোমার ISP-এর, 1.1.1.1-এর মতো কোনো public resolver, আর EC2 instance হলে VPC-র ভেতরের Amazon DNS server।

Authoritative বনাম non-authoritative। ধাপ ৪-এর উত্তরটা আসে সরাসরি zone থেকে: এটা authoritative উত্তর, তাতে aa flag বসানো থাকে। একই resolver পরের user-কে যখন নিজের cache থেকে উত্তর দেয়, সেটা non-authoritative: cache করার সময় পর্যন্ত ঠিক, আর TTL কমতে থাকে। Route 53 পর্যন্ত পৌঁছানো প্রতিটা query-র bill হয়; প্রতিটা cache hit তোমার জন্য ফ্রি।

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

একজন user-এর browser www.example.com-এর IP address পেল, যার hosted zone Route 53-এ রাখা। Authoritative উত্তরটা কোন server দিয়েছে?

#Record: প্রতিটায় কী থাকে

একটা record Route 53-কে বলে দেয় একটা নামের query এলে কী উত্তর দিতে হবে। প্রতিটা record-এর পাঁচটা অংশ:

অংশউদাহরণখেয়াল রাখো
Namewww.example.comDomain বা subdomain। এটা hosted zone-এর ভেতরের নাম হতে হবে।
TypeA, AAAA, CNAME…কোন ধরনের value রাখছে।
Value203.0.113.10উত্তরটা। একটা record-এ কয়েকটা value (কয়েকটা IP) থাকতে পারে, সব একসঙ্গে ফেরত যায়।
Routing policySimple, weighted, latency…একই নামের কয়েকটা record থাকলে Route 53 কোন উত্তর বাছবে। Default হলো simple (লেসন ৮.৩)।
TTL300Resolver উত্তরটা কত সেকেন্ড cache করতে পারবে।

#যে type-গুলো জানতেই হবে

  • A একটা hostname-কে IPv4 address-এ map করে: www.example.com → 192.0.2.44।
  • AAAA (“quad A”) hostname-কে IPv6 address-এ map করে: www.example.com → 2001:db8::44। দুটোই রাখলে IPv6-ওয়ালা client সেটাই ব্যবহার করে।
  • CNAME একটা hostname-কে আরেকটা hostname-এ map করে: shop.example.com → shops.example.net। শেষমেশ target-কে কোনো A বা AAAA record-এ গিয়ে পৌঁছাতে হয়। Zone apex-এ (example.com) CNAME বানানো যায় না, আর যে নামে CNAME আছে সেখানে অন্য কোনো record রাখা যায় না। এই দুই সীমার সমাধান হিসেবে Route 53 দেয় Alias record, সেটাই লেসন ৮.২-এর বিষয়।
  • NS একটা zone-এর name server-দের তালিকা। Apex-এর NS record-টাই registrar-কে TLD-তে বসাতে হয়; আরও নিচের NS record একটা subdomain-কে অন্য zone-এর হাতে delegate করে। তাই NS record-ই ঠিক করে একটা domain-এর traffic কীভাবে route হবে, কারণ এরাই ঠিক করে উত্তরটা কে দেবে।

#বাকি type-গুলো, সংক্ষেপে

Typeকী রাখেসাধারণত কী কাজে
MXPriority সহ mail server (10 mail.example.com)Domain-এর email কোথায় যাবে; সবচেয়ে ছোট সংখ্যাটা আগে চেষ্টা হয়।
TXTযেকোনো লেখাSaaS tool আর certificate-এর জন্য domain-এর মালিকানার প্রমাণ, আর email-এর নিরাপত্তা: SPF policy, DKIM key (অনেক সময় এর বদলে CNAME record), DMARC policy।
CAAকোন certificate authority certificate দিতে পারবে0 issue "amazon.com" থাকলে domain-এর certificate দিতে পারবে শুধু ACM।
SOAStart of authority: zone-এর primary name server, admin-এর e-mail, কিছু timerপ্রতিটা zone-এ Route 53 নিজেই বানায়; এর শেষ field negative caching ঠিক করে।
PTRIP → নাম (reverse DNS)Mail server এটা দেখে; Elastic IP-র reverse DNS বসাতে AWS-কে অনুরোধ করতে হয়।
SRVPriority, weight, port, hostSIP আর LDAP-এর মতো protocol-এর service খুঁজে পাওয়া।
DSDelegation signerChild zone-এর key-এর একটা fingerprint, DNSSEC-এর বিশ্বাসের শিকল জোড়ে।
NAPTRRewrite-এর নিয়মTelephony, যেমন একটা phone number-কে SIP address-এ বদলানো।
SPFSender policy-র জন্য পুরনো আলাদা একটা typeবাতিল হয়ে গেছে: SPF policy রাখো TXT record-এ।

#যে দুটো record Route 53 নিজেই বানিয়ে দেয়

একটা public hosted zone বানালেই Route 53 apex-এ দুটো record নিজে থেকে বসিয়ে দেয়:

  • NS: zone-কে দেওয়া চারটা name server, প্রতিটা আলাদা TLD-এর নিচে, যাতে কোনো একটা TLD-তে গোলমাল হলেও তোমার domain বসে না যায়, যেমন ns-2048.awsdns-64.com, ns-2049.awsdns-65.net, ns-2050.awsdns-66.org, ns-2051.awsdns-67.co.uk। Registrar-কে এই চারটাই দিতে হয়।
  • SOA: যেমন ns-2048.awsdns-64.net. hostmaster.example.com. 1 7200 900 1209600 86400। Field-গুলো হলো primary name server, admin-এর e-mail (@-এর জায়গায় .), একটা serial number, secondary DNS server-দের জন্য তিনটা timer (refresh ৭২০০ সেকেন্ড, retry ৯০০ সেকেন্ড, expire ১২০৯৬০০ সেকেন্ড মানে ২ সপ্তাহ), আর minimum TTL (৮৬৪০০ সেকেন্ড)।

SOA-র শেষ field ঠিক করে negative caching। Route 53 যখন NXDOMAIN (এই নামে কিছু নেই) বা NODATA (নাম আছে, কিন্তু ওই type-এর record নেই) উত্তর দেয়, resolver সেই “নেই” উত্তরটা cache করে রাখে, SOA record-এর নিজের TTL (default ৯০০ সেকেন্ড) আর SOA-র minimum (৮৬৪০০ সেকেন্ড)-এর মধ্যে যেটা ছোট ততক্ষণ: default-এ ১৫ মিনিট। “নেই” উত্তরেরও অন্য query-র মতোই bill হয়।

এই দুটো record-এ হাত দিও না। আর hosted zone মুছে আবার বানালে নতুন zone পায় অন্য চারটা name server, তাই registrar-এ সেগুলো না বসানো পর্যন্ত তোমার domain আর resolve হয় না (লেসন ৮.৫)।

#Hosted zone: public আর private

Hosted zone হলো একটা domain আর তার subdomain-গুলোর record রাখার পাত্র। Route 53-এ এর দুটো রকম, আর পার্থক্যটা হলো কে প্রশ্ন করতে পারে।

#Public hosted zone

Public hosted zone উত্তর দেয় internet-এর যেকোনো জায়গা থেকে আসা query-র। দুনিয়ার মানুষকে যে নামগুলোতে পৌঁছাতে হবে, সবগুলোর জন্য এটা: www.example.com, api.example.com, mail.example.com। শুধু zone বানালেই হয় না: registrar-কে domain-এর জন্য zone-এর চারটা name server বসাতে হয় (domain Route 53-এই register করা হলে এটা নিজে থেকে হয়ে যায়, না হলে হাতে করতে হয়; লেসন ৮.৫)।

#Private hosted zone

Private hosted zone উত্তর দেয় শুধু তার সঙ্গে associate করা VPC-গুলো থেকে আসা query-র। বাকি দুনিয়া এটা দেখতেই পায় না, এমনকি এর অস্তিত্বও না। এটা ভেতরের নামের জন্য: db.corp.internal, orders.internal.example.com, ভেতরের microservice। Database সরালে প্রতিটা application-এর config না বদলে শুধু একটা record বদলালেই চলে।

কীভাবে কাজ করে, আর কী কী লাগে:

  • উত্তর দেয় VPC Resolver। Instance-রা DNS query পাঠায় Amazon-এর দেওয়া DNS server-এ, যেটা DHCP আগে থেকেই ঠিক করে দেয়: VPC-র base address যোগ দুই (10.0.0.0/16-এ 10.0.0.2), আবার 169.254.169.253-এও পাওয়া যায় (Nitro instance-এ IPv6-এর জন্য fd00:ec2::253)। এটা আগে দেখে VPC-র সঙ্গে associate করা private zone-গুলো, তারপর বাকি সব internet থেকে resolve করে। এই resolver-এর বিস্তারিত, আর on-premises network কীভাবে এটা ব্যবহার করবে, সব লেসন ৮.৫-এ।
  • VPC-র দুটো attribute true থাকতেই হবে: enableDnsSupport (“DNS resolution”: Amazon DNS server আদৌ উত্তর দেবে কি না; default true) আর enableDnsHostnames (“DNS hostnames”; নিজে বানানো VPC-তে default false, default VPC-তে true)। Private hosted zone-এর জন্য AWS দুটোকেই চায়। পরীক্ষা এই প্রশ্নটা খুব ভালোবাসে।
  • অনেক VPC, অনেক account। একটা private zone সর্বোচ্চ ৩০০টা VPC-র সঙ্গে associate করা যায়, যেকোনো Region-এ, এমনকি অন্য AWS account-এর VPC-ও। অন্য account-এর VPC হলে: zone-এর মালিক চালায় create-vpc-association-authorization, তারপর VPC-র মালিক চালায় associate-vpc-with-hosted-zone। এটা হয় শুধু CLI, SDK বা API দিয়ে, console দিয়ে না। শেষে authorization মুছে দাও; association থেকে যায়। শত শত VPC হলে Route 53 Profiles (লেসন ৮.৫) একসঙ্গে zone share করে।
  • DNS মানে connectivity না। Associate করা VPC db.corp.internal resolve করতে পারবে ঠিকই, কিন্তু 10.0.2.35-এ সত্যি পৌঁছাতে তার peering, Transit Gateway বা এমন কিছু লাগবে। আর VPN-এর ওপারে private zone নিজে থেকে দেখা যায় না; on-premises থেকে lookup করতে Resolver inbound endpoint লাগে (লেসন ৮.৫)।
  • Private hosted zone-এর query ফ্রি। টাকা লাগে শুধু zone-টার জন্য।

#Split view (split-horizon DNS)

একই নামে একটা public আর একটা private zone বানানো যায়, যেমন দুটোই example.com। Internet উত্তর পায় public zone থেকে; private zone-এর সঙ্গে associate করা VPC-রা উত্তর পায় private zone থেকে। তখন api.example.com customer-দের জন্য resolve হতে পারে একটা public address-এ, আর তোমার নিজের server-দের জন্য একটা ভেতরের address-এ।

Associate করা VPC-র ভেতরে নিয়মটা হলো সবচেয়ে নির্দিষ্ট মিল, আর আগে private: কোনো private zone নামটার সঙ্গে মিললে (একই নাম, বা তার কোনো parent), Resolver খোঁজে শুধু সেখানেই। ওই private zone-এ নামটার কোনো record না থাকলে Resolver ফেরত দেয় NXDOMAIN; public zone-এ ফিরে গিয়ে খোঁজে না। তাই VPC-র client-দের যত নাম লাগবে, সব private zone-এও থাকতে হবে।

Public hosted zonePrivate hosted zone

  • Internet-এর যে কাউকে উত্তর দেয়
  • চালু হয় যখন registrar তার চারটা name server বসায়
  • সাধারণ নাম: তোমার আসল domain-এর www, api, mail
  • Query-র bill হয় (প্রতি ১০ লাখ standard query-তে $0.40)
  • Routing policy: সবগুলো (লেসন ৮.৩)
  • উত্তর দেয় শুধু associate করা VPC থেকে (সর্বোচ্চ ৩০০টা, অন্য account-এরও হতে পারে)
  • enableDnsSupport আর enableDnsHostnames true থাকতে হয়
  • সাধারণ নাম: db.corp.internal, ভেতরের service, split view
  • Query ফ্রি
  • Routing policy: IP-based ছাড়া সবগুলো

Public আর private hosted zone

একই Route 53-এ দুই রকম zone-ই থাকে। কে উত্তর পাবে, সেটা নির্ভর করে প্রশ্নটা কোথা থেকে আসছে তার ওপর: internet দেখে শুধু public zone, আর একটা VPC আগে দেখে তার সঙ্গে associate করা private zone।

পরিস্থিতি

VPC A10.0.0.0/16
Public zoneexample.com
Internet user
Web EC2203.0.113.10
DB on EC210.0.2.35
App EC210.0.1.20
VPC Resolver10.0.0.2
Private zonecorp.internal
www.example.com?
ধাপ 1 / 4
1

Internet-এ কেউ www.example.com খুঁজছে। Root আর .com পার হয়ে (এখানে দেখানো হয়নি) query শেষ হয় public hosted zone-এর name server-এ। যে কেউ, যেকোনো জায়গা থেকে জিজ্ঞেস করতে পারে।

#খরচ কত

জিনিসদাম (us-east-1, ২০২৬-এর শেষে)
Hosted zone, account-এর প্রথম ২৫টাপ্রতি zone মাসে $0.50
২৫-এর পরের প্রতিটা hosted zoneপ্রতি zone মাসে $0.10
Recordপ্রতি zone-এ ১০,০০০টা পর্যন্ত দামের মধ্যেই
Standard queryপ্রতি ১০ লাখে $0.40 (মাসের প্রথম ১০০ কোটি), তারপর প্রতি ১০ লাখে $0.20
Latency, geolocation/geoproximity, IP-based queryপ্রতি ১০ লাখে $0.60, $0.70, $0.80 (লেসন ৮.৩)
AWS resource-এর দিকে Alias query (load balancer, CloudFront, S3 website…)ফ্রি (লেসন ৮.২)
Private hosted zone-এর queryফ্রি

Zone-এর charge prorate হয় না: zone বানানোর দিনেই পুরো মাসের টাকা কাটে, তারপর প্রতি মাসের ১ তারিখে। তবে বানানোর ১২ ঘণ্টার মধ্যে মুছে ফেললে zone-এর কোনো charge নেই, তাই ছোটখাটো test ফ্রিতেই হয়ে যায়। Domain register করার বাৎসরিক খরচ আলাদা (লেসন ৮.৫)।

একটা হিসাব করে দেখি: ৩০টা hosted zone-এর খরচ ২৫ × $0.50 + ৫ × $0.10 = মাসে $13.00। Public zone-গুলোতে মাসে ৩০ কোটি standard query এলে যোগ হবে ৩০০ × $0.40 = $120। এই দ্বিতীয় সংখ্যাটার অনেকখানিই ঠিক করে TTL, TTL অংশে দেখবে।

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

একটা company চায় তার EC2 instance-রা ভেতরের একটা database-এ db.corp.internal নামে পৌঁছাক। নামটা internet থেকে resolve হওয়া চলবে না। Solutions architect-এর কী করা উচিত?

#একটা EC2 instance-এর দিকে domain দেখানো

AWS-এ সবচেয়ে সাদামাটা website হলো public subnet-এ একটা EC2 instance। এর একটা নাম দিতে:

  1. একটা Elastic IP allocate করে instance-এর সঙ্গে associate করো (লেসন ৩.৬)।
  2. Public hosted zone-এ একটা A record বানাও: www.example.com → 203.0.113.25 (Elastic IP-টা), TTL ধরো ৩০০।

Instance-এর নিজে থেকে পাওয়া public IP দিয়ে কেন না? কারণ auto-assigned public IPv4 address instance stop হলেই ছেড়ে দেওয়া হয়, আর start হলে instance অন্য একটা পায়। A record তখনও পুরনো address দেখাতে থাকবে: user-দের request timeout হবে, নয়তো পরে যে instance ওই address পেয়েছে তার কাছে গিয়ে পড়বে। Instance-এর public DNS নামও (ec2-198-51-100-7.compute-1.amazonaws.com) সঙ্গে সঙ্গে বদলায়, তাই ওই নামের দিকে CNAME দিলেও লাভ নেই। Elastic IP কিন্তু stop, start, এমনকি terminate পার হয়েও তোমার account-এ থেকে যায়, যতক্ষণ না তুমি release করো, আর কয়েক সেকেন্ডে নতুন instance-এ সরিয়ে নেওয়া যায়, DNS না বদলেই।

খরচের কথা: ফেব্রুয়ারি ২০২৪ থেকে প্রতিটা public IPv4 address-এর দাম ঘণ্টায় প্রায় $0.005 (মাসে প্রায় $3.60), Elastic IP-ও তার মধ্যে, জোড়া থাকুক বা খালি পড়ে থাকুক। তাই পরীক্ষায় “cost-effective” মানে “একটা instance-এর জন্য সবচেয়ে সস্তা stable উপায়”, “ফ্রি” না। যে Elastic IP আর লাগবে না, release করে দাও।

একটার বেশি instance হলেই Auto Scaling group-এর সামনে একটা load balancer বসাও, আর তার দিকে একটা Alias record দাও (লেসন ৮.২); notes-এর ভাষায়: load balancer থাকলে উত্তর Alias।

একটা EC2 instance-এর জন্য domain: public IP নাকি Elastic IP

A record-এ থাকে একটা নির্দিষ্ট IP, তাই তার অজান্তে IP বদলে গেলে চলবে না। দেখো stop আর start করলে auto-assigned public IP-র কী হয়, আর Elastic IP কীভাবে record-টাকে ঠিক রাখে।

পরিস্থিতি

VPC10.0.0.0/16
Public subnet
User
Route 53www: A record
web-1public 198.51.100.7
A 198.51.100.7
ধাপ 1 / 2
1

web-1 চালু হয়েছিল public subnet-এ, আর AWS-এর pool থেকে একটা public IPv4 address পেয়েছিল। তুমি একটা A record বানালে www.example.com → 198.51.100.7।

#TTL: উত্তর কতক্ষণ cache-এ থাকে

Alias ছাড়া প্রতিটা record-এর সঙ্গে সেকেন্ডে একটা TTL থাকে। এটা প্রতিটা resolver আর client-কে বলে: “আবার জিজ্ঞেস না করে এই উত্তরটা এতক্ষণ রাখতে পারো”। Route 53-এ Alias ছাড়া সব record-এ TTL বাধ্যতামূলক (console ৩০০ সাজেস্ট করে; ০ থেকে ২,১৪৭,৪৮৩,৬৪৭ পর্যন্ত যেকোনো মান চলে)। Alias record-এর নিজের কোনো TTL নেই: Route 53 target-এর TTL ব্যবহার করে (লেসন ৮.২)।

Resolver উত্তর দেওয়ার সময় দেয় বাকি থাকা TTL। দুই মিনিট আগে TTL ৩০০ দিয়ে cache করে থাকলে সে উত্তর দেবে TTL ১৮০ দিয়ে, তাই তার নিচের সব cache একই মুহূর্তে মেয়াদোত্তীর্ণ হয়।

#বড় TTL বনাম ছোট TTL

বড় TTL, যেমন ৮৬৪০০ (২৪ ঘণ্টা)ছোট TTL, যেমন ৬০ সেকেন্ড
Route 53-এ queryকম: resolver দিনে মোটামুটি একবার জিজ্ঞেস করেঅনেক: resolver প্রতি মিনিটে জিজ্ঞেস করে
খরচকমবেশি ($$)
User-এর জন্য গতিCache hit বেশি, lookup দ্রুতবেশি lookup Route 53 পর্যন্ত যায়
Record বদলানোর পরপুরনো উত্তর ২৪ ঘণ্টা পর্যন্ত টিকে থাকতে পারেমিনিটখানেকের মধ্যে সবাই নতুন উত্তর পায়
কোথায় মানায়যে record প্রায় কখনো বদলায় না (NS, MX, স্থির apex)যে record শিগগিরই বদলাতে পারো, failover আর migration

বেশিরভাগ record আরামে থাকে ৩০০ থেকে ৩৬০০ সেকেন্ডে। Failover routing আর health check-ওয়ালা record-এ সাধারণত ৬০ সেকেন্ড বা তার কম রাখা হয়, কারণ failover হলে client-রা কত দেরিতে সরে যাবে, সেটা TTL-ই ঠিক করে।

#নিরাপদে record বদলানো

DNS-এ পরিবর্তন “push” করা বলে কিছু নেই। তুমি record বদলালে Route 53 মিনিটখানেকের মধ্যে নতুন value দিতে শুরু করে (get-change প্রথমে PENDING, তারপর INSYNC দেখায়), কিন্তু যে resolver-রা পুরনো উত্তর cache করেছে, তারা নিজেদের কপির মেয়াদ না ফুরানো পর্যন্ত সেটাই চালিয়ে যায়। লোকে যাকে “DNS propagation” বলে, সেটা আসলে শুধু cache-এর মেয়াদ ফুরানো। কেউ পুরনো উত্তর সবচেয়ে বেশি যতক্ষণ দেখতে পারে, সেটা হলো cache করার মুহূর্তে record-এর যে TTL ছিল।

ফাঁদটা ঠিক এই শেষ কথায়। ধরো একটা record মাসের পর মাস TTL ৮৬৪০০-তে আছে, আর migration-এর ঠিক ১০ মিনিট আগে তুমি সেটা ৬০ করলে। যে resolver ২ ঘণ্টা আগে record-টা cache করেছিল, তার কপির মেয়াদ এখনো ২৪ ঘণ্টার: নতুন TTL আর নতুন IP দুটোই সে জানবে কেবল ওই কপির মেয়াদ ফুরালে, মানে ২২ ঘণ্টা পরে। তাই ঠিক আগমুহূর্তে TTL কমালে প্রায় কারোই উপকার হয় না।

নিরাপদ নিয়ম:

  1. অনেক আগেই TTL কমাও, পরিবর্তনের অন্তত এক পুরনো TTL আগে (TTL ৮৬৪০০ হলে অন্তত এক দিন আগে), value তখনো পুরনোটাই রেখে।
  2. অপেক্ষা করো, যতক্ষণ না লম্বা মেয়াদের প্রতিটা পুরনো কপি শেষ হয়।
  3. Record বদলাও। এক ছোট TTL-এর মধ্যেই সবাই নতুনটায় চলে আসে।
  4. পুরনো server কিছুক্ষণ চালু রাখো; কিছু resolver নিজেদের minimum TTL চাপিয়ে দেয় বা নিয়ম মানে না।
  5. নতুন setup ঠিকঠাক চলছে নিশ্চিত হলে TTL আবার বাড়াও, query আর খরচ কমবে।

TTL timeline: কোন resolver কখন পরিবর্তন দেখে?

প্রতিটা সারি একটা ব্যস্ত resolver। কমলা block মানে পুরনো IP-এর cache করা কপি, সবুজ block নতুন IP; একটা block শেষ হয় যখন তার TTL ফুরায় আর resolver আবার Route 53-কে জিজ্ঞেস করে।

পরিস্থিতি

একটা TTL বেছে নিয়ে play চাপো। ছবির আকার সবসময় একই থাকে; বদলায় পুরনো IP কতক্ষণ টিকে থাকে, আর Route 53-কে কতগুলো query-র উত্তর দিতে হয়।

TTL:

এখন

−৩ মিনিট

শেষ resolver বদলায়

+৫ মিনিট

দিনে query, একটা ব্যস্ত resolver

288

মাসিক bill, ১০,০০০ resolver

$35

−৬ মিনিট−৩ মিনিট+১৫ সেকেন্ড+৩ মিনিট+৭ মিনিটResolver A (ISP)TTL ৫ মিনিটResolver B (public)TTL ৫ মিনিটResolver C (অফিস)Resolver D (VPC)TTL ৫ মিনিটrecord বদলাল
  • Resolver A (ISP)198.51.100.7(পুরনো IP, ৮৪ সেকেন্ড বাকি)
  • Resolver B (public)198.51.100.7(পুরনো IP, ৬ সেকেন্ড বাকি)
  • Resolver C (অফিস)198.51.100.7(পুরনো IP, ৪ মিনিট বাকি)
  • Resolver D (VPC)198.51.100.7(পুরনো IP, ৩ মিনিট বাকি)
ধাপ 1 / 5
1

চারটা resolver আলাদা আলাদা সময়ে A record-টা cache করেছে। প্রতিটা কপি ৫ মিনিট বাঁচে, তারপর resolver আবার Route 53-কে জিজ্ঞেস করে (প্রতিটা নতুন block মানে একটা query)।

খরচের দিকটা সংখ্যায় দেখি: সারাক্ষণ traffic পাওয়া একটা ব্যস্ত resolver প্রতি TTL-এ একবার জিজ্ঞেস করে। TTL ৬০ হলে দিনে ১,৪৪০টা query; TTL ৮৬৪০০ হলে একটা। এমন ১০,০০০টা resolver আর ৩০ দিনের মাস ধরলে TTL ৬০ মানে ১০,০০০ × ১,৪৪০ × ৩০ = ৪৩.২ কোটি query, প্রায় $173; TTL ৩০০ হলে প্রায় $35; TTL ৩৬০০ হলে প্রায় $2.88। আসল traffic এত সমান হয় না, তবে অনুপাতটা খাটে: bill বাড়ে-কমে 1 / TTL হারে।

#কোথায় গিয়ে ভাঙে

লক্ষণসম্ভাব্য কারণসমাধান
EC2 থেকে private zone-এর নাম resolve হয় নাenableDnsHostnames বা enableDnsSupport false, অথবা VPC zone-এর সঙ্গে associate করা নেইদুটো attribute true করো; VPC associate করো
নামটা public-এ আছে, কিন্তু VPC-র ভেতরে NXDOMAIN আসেSplit view: একই (বা parent) নামের private zone-এ এর record নেই, আর Resolver public-এ ফিরে যায় নাRecord-টা private zone-এও রাখো
একদম নতুন record কিছু user-এর জন্য কয়েক মিনিট NXDOMAIN দেয়Negative caching: record হওয়ার আগে তারা জিজ্ঞেস করেছিল, আর resolver “নেই” উত্তরটা SOA-র TTL (default ৯০০ সেকেন্ড) পর্যন্ত রাখেঅপেক্ষা করো; নাম ঘোষণার আগেই record বানিয়ে রাখো
বদলানোর কয়েক ঘণ্টা পরেও কিছু user পুরনো server-এ যায়তারা record cache করেছে পুরনো লম্বা TTL দিয়েপুরনো TTL পার হওয়া পর্যন্ত অপেক্ষা; পরের বার আগেই TTL কমাও
Stop/start-এর পর site বন্ধA record দেখাচ্ছে auto-assigned public IP, যেটা বদলে গেছেElastic IP, অথবা load balancer আর Alias
Hosted zone-এ কিছু বদলালেও কোনো প্রভাব নেইRegistrar-এ বসানো অন্য (পুরনো বা মুছে ফেলা) zone-এর name serverZone-এর NS record আর registrar-এর name server মিলিয়ে দেখো (লেসন ৮.৫)
On-premises server private zone resolve করতে পারে নাPrivate zone শুধু associate করা VPC-র ভেতরে উত্তর দেয়Resolver inbound endpoint (লেসন ৮.৫)
DNS ঠিক উত্তর দেয়, কিন্তু site বন্ধসাধারণ record জানে না endpoint সুস্থ কি নাHealth check আর failover (৮.৩, ৮.৪), অথবা load balancer

#System design-এ Route 53

  • সব public নাম এক জায়গায়। প্রতিটা domain রাখো একটা public hosted zone-এ, code হিসেবে সামলাও (CloudFormation, CDK, Terraform), আর কোনো team-এর স্বাধীনতা লাগলে NS delegation দিয়ে তাকে একটা subdomain zone দিয়ে দাও।
  • ভেতরের নাম private zone-এ। Application-কে IP বা লম্বা endpoint নাম না দিয়ে db.corp.internal-এর দিকে দেখাও (RDS-এর বেলায় RDS endpoint-এর দিকে একটা CNAME, কারণ failover-এ তার IP বদলায়), তাহলে কোনো অংশ সরাতে একটা record বদলালেই হয়।
  • একই নাম বাইরে থেকে public endpoint-এ আর ভেতর থেকে private endpoint-এ নিতে হলে split view।
  • TTL একটা design-এর সিদ্ধান্ত: স্থির record-এ লম্বা, failover বা migration হতে পারে এমন সবকিছুতে ছোট, আর পরিকল্পিত পরিবর্তনের আগে আগেভাগে কমানো।
  • গুরুত্বপূর্ণ কোনো কিছুর জন্য একটা EC2 instance-এর IP কখনো DNS-এ বসিও না। একটা server হলে Elastic IP, আর সত্যিকারের availability চাইলে load balancer আর Alias।

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

# 1. Create a public hosted zone (the caller reference just has to be unique)
aws route53 create-hosted-zone --name example.com --caller-reference demo-2026-10-25
aws route53 get-hosted-zone --id Z0123456789EXAMPLE          # shows the four name servers

# 2. Look at the NS and SOA records Route 53 created
aws route53 list-resource-record-sets --hosted-zone-id Z0123456789EXAMPLE \
  --query "ResourceRecordSets[?Type=='NS' || Type=='SOA']"

# 3. Create or update an A record with TTL 300 (UPSERT = create or replace)
cat > www.json <<'EOF'
{ "Comment": "www to the Elastic IP",
  "Changes": [ { "Action": "UPSERT",
    "ResourceRecordSet": { "Name": "www.example.com", "Type": "A", "TTL": 300,
      "ResourceRecords": [ { "Value": "203.0.113.25" } ] } } ] }
EOF
aws route53 change-resource-record-sets --hosted-zone-id Z0123456789EXAMPLE \
  --change-batch file://www.json
aws route53 get-change --id C0123456789EXAMPLE               # PENDING, then INSYNC

# 4. Ask Route 53 what it would answer, without any cache in the way
aws route53 test-dns-answer --hosted-zone-id Z0123456789EXAMPLE \
  --record-name www.example.com --record-type A

# 5. An Elastic IP for a single web server
aws ec2 allocate-address --domain vpc
aws ec2 associate-address --instance-id i-0abc1234def567890 --allocation-id eipalloc-0abc1234

# 6. A private hosted zone: VPC attributes first, then the zone
aws ec2 modify-vpc-attribute --vpc-id vpc-0a1b2c3d4e5f60718 --enable-dns-support "{\"Value\":true}"
aws ec2 modify-vpc-attribute --vpc-id vpc-0a1b2c3d4e5f60718 --enable-dns-hostnames "{\"Value\":true}"
aws route53 create-hosted-zone --name corp.internal --caller-reference corp-2026-10-25 \
  --vpc VPCRegion=us-east-1,VPCId=vpc-0a1b2c3d4e5f60718 --hosted-zone-config PrivateZone=true

# 7. Associate a VPC from another account
aws route53 create-vpc-association-authorization --hosted-zone-id Z0PRIVATE0EXAMPLE \
  --vpc VPCRegion=us-east-1,VPCId=vpc-0b2c3d4e5f6071829       # run in the zone owner's account
aws route53 associate-vpc-with-hosted-zone --hosted-zone-id Z0PRIVATE0EXAMPLE \
  --vpc VPCRegion=us-east-1,VPCId=vpc-0b2c3d4e5f6071829       # run in the VPC owner's account
aws route53 delete-vpc-association-authorization --hosted-zone-id Z0PRIVATE0EXAMPLE \
  --vpc VPCRegion=us-east-1,VPCId=vpc-0b2c3d4e5f6071829       # tidy up; the association stays

dig দিয়ে (Windows-এ nslookup) cache আর authority নিজের চোখে দেখো:

dig www.example.com @ns-2048.awsdns-64.com +norecurse   # straight to Route 53: flags include aa
dig www.example.com                                     # via your resolver: run it twice, the TTL counts down
dig +noall +answer www.example.com                      # just the answer line: name, TTL, type, value
dig shpo.example.com                                    # NXDOMAIN, with the SOA in the AUTHORITY section
dig NS example.com +short                               # the four awsdns name servers
nslookup -type=TXT example.com                          # Windows: TXT records

# From an EC2 instance: the VPC Resolver answers private names
dig db.corp.internal @169.254.169.253

#সারসংক্ষেপ

মূল কথাগুলো

  • Route 53 = managed authoritative DNS (নিজের hosted zone-এর record তুমি নিজেই লেখো), সঙ্গে registrar, প্রতিটা VPC-র resolver, health check আর routing policy। AWS-এর একমাত্র service যার availability SLA ১০০% (query-র উত্তর দেওয়ার জন্য)। “53” হলো DNS-এর port।
  • URL-এর গঠন, ডান থেকে বাঁয়ে: root ., TLD com, SLD example.com, subdomain www; protocol DNS-এর অংশ না। FQDN root পর্যন্ত পুরো নাম; zone apex হলো zone-এর নিজের নাম।
  • Authoritative উত্তর আসে Route 53-এর zone থেকে (aa flag), আর তার bill হয়; non-authoritative উত্তর আসে resolver-এর cache থেকে, ফ্রি। Route 53 কখনো তোমার traffic বয়ে নেয় না।
  • একটা record = name, type, value, routing policy, TTL। জানতেই হবে: A (IPv4), AAAA (IPv6), CNAME (নাম → নাম, apex-এ না; Alias ৮.২-এ), NS। সঙ্গে MX, TXT (মালিকানা, SPF), CAA, SOA, PTR, SRV, DS, NAPTR।
  • প্রতিটা নতুন zone পায় NS (চারটা TLD-এ চারটা name server) আর SOA (এর minimum field আর TTL ঠিক করে negative caching, default ৯০০ সেকেন্ড)। Zone আবার বানালে name server বদলে যায়।
  • Public hosted zone: internet-কে উত্তর দেয়। Private hosted zone: শুধু associate করা VPC-দের (সর্বোচ্চ ৩০০টা, অন্য account-এর হলে CLI/API দিয়ে authorization + association), লাগে enableDnsSupport + enableDnsHostnames, query ফ্রি। Split view: দুটোতেই একই নাম; VPC-র ভেতরে private zone জেতে, আর কখনো public-এ ফিরে যায় না।
  • দাম: প্রথম ২৫টা zone প্রতিটা মাসে $0.50, তারপর $0.10; প্রতি ১০ লাখ standard query-তে $0.40; AWS resource-এর দিকে Alias query আর private zone-এর query ফ্রি; ১২ ঘণ্টার মধ্যে মুছে ফেলা zone ফ্রি।
  • একটা EC2 instance: Elastic IP + A record, কারণ auto-assigned public IPv4 stop/start-এ বদলায়; ফেব্রুয়ারি ২০২৪ থেকে প্রতিটা public IPv4-এর দাম ঘণ্টায় প্রায় $0.005। একের বেশি instance: load balancer + Alias।
  • Alias ছাড়া TTL বাধ্যতামূলক। বড় TTL: query কম, খরচ কম, পরিবর্তন ধীরে পৌঁছায়। ছোট TTL: query বেশি, খরচ বেশি, পরিবর্তন দ্রুত। Migration-এর অন্তত এক পুরনো TTL আগে কমাও: ঠিক আগমুহূর্তে কমালে যারা লম্বা TTL নিয়ে cache করে বসে আছে, তাদের কোনো কাজে আসে না।