Course-এর সূচি

8.5

Registrar, বাইরে কেনা Domain আর Hybrid DNS

registrar আর DNS service-এর পার্থক্য, একটা domain-কে Route 53-এ নিয়ে আসা, আর Resolver-এর inbound/outbound endpoint।

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

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

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

  • Domain registrar আর DNS service-এর পার্থক্য বোঝাতে, আর কেন দুটো আলাদা কোম্পানি হতে পারে সেটা বলতে।
  • Route 53-এ domain register করতে, আর জানতে Route 53 তোমার জন্য কী কী সাজিয়ে দেয়: hosted zone, বছরের fee, auto-renew, transfer lock আর privacy protection; সাথে domain ভেতরে আনা বা বাইরে নেওয়ার (transfer) মূল কথাগুলো।
  • GoDaddy বা Namecheap থেকে কেনা domain-কে ঠিক ক্রমে Route 53-এর DNS-এ আনতে, আর চালু একটা domain downtime ছাড়াই সরাতে।
  • Delegation-এর চেনা ভুলগুলো ধরতে: record বানানোর আগেই name server বদলানো, পুরনো name server cache-এ আটকে থাকা, আবার বানানো hosted zone, অর্ধেক বদলানো NS তালিকা, আর registrar-এ রয়ে যাওয়া পুরনো DS record।
  • VPC Resolver নিজে থেকে কী উত্তর দেয়, আর inbound endpoint, outbound endpoint আর forwarding rule কীভাবে একে তোমার data centre-এর DNS server-এর সাথে জোড়ে, সেটা বোঝাতে।
  • Hybrid DNS নিয়ে পরীক্ষার প্রশ্নের উত্তর দিতে: endpoint, rule, security group, AZ, connectivity, AWS RAM দিয়ে share, আর নতুন পাশের feature গুলো (DNS Firewall, query logging, Profiles, Global Resolver)।

#Registrar আর DNS service: দুটো আলাদা কাজ

লোকে যখন বলে “একটা domain কিনলাম”, তখন আসলে দুটো আলাদা service জড়িত থাকে, আর পরীক্ষা ঠিক এই দুটো আলাদা করতে পারো কি না সেটাই দেখতে চায়।

  • Domain registrar হলো সেই দোকান যেখান থেকে তুমি নামটা ভাড়া নাও, সাধারণত বছর ধরে: GoDaddy, Namecheap, Cloudflare, কিংবা খোদ Amazon Route 53 (Amazon Registrar দিয়ে, কিছু TLD-র বেলায় তার সহযোগী Gandi দিয়ে)। Registrar TLD-র registry-র কাছে (যেমন .com-এর জন্য Verisign) তোমাকে মালিক হিসেবে লিখিয়ে দেয়, আর registry-কে জানায় তোমার domain-এর উত্তর কোন name server দেবে।
  • DNS service ওই authoritative name server গুলো চালায়, আর তোমার record সহ hosted zone রাখে: A, AAAA, MX, TXT, CNAME ইত্যাদি। “www.example.com-এর IP কত?” প্রশ্নের উত্তর আসলে এই অংশটাই দেয়।

প্রায় সব registrar সাথে একটা ফ্রি সাধারণ DNS service-ও দেয়, তাই নতুনরা প্রায়ই ভাবে দুটো একই জিনিস। আসলে না: তুমি নামটা GoDaddy থেকে কিনে DNS record গুলো Route 53-কে দিয়ে চালাতে পারো। দুজনের মধ্যে যোগসূত্র একটাই: registrar parent TLD zone-এ যে NS record publish করে।

Domain registrarDNS service (DNS hosting)
তুমি কী পাওনামটা ব্যবহারের অধিকার, প্রতি বছর নবায়নAuthoritative name server, যারা query-র উত্তর দেয়
তোমার কোন তথ্য থাকেমালিকের যোগাযোগ, মেয়াদ, lock-এর অবস্থা, name server-এর তালিকাHosted zone: domain-এর সব record
উদাহরণGoDaddy, Namecheap, Amazon RegistrarRoute 53, Cloudflare DNS, registrar-এর নিজের ফ্রি DNS
Route 53-কে কত দিতে হয়Domain প্রতি বছরে একটা fee, TLD অনুযায়ীপ্রতি hosted zone মাসে ০.৫০ USD (প্রথম ২৫টা zone), সাথে query-র খরচ
বন্ধ হয়ে গেলেDomain-এর মেয়াদ ফুরায় বা suspend হয়: কিছুই resolve হয় নাDomain তোমারই থাকে, তবু query ব্যর্থ হয়

Registry, registrar আর DNS host-এর সাধারণ ছবিটা দেখতে System Design লেসন DNS দেখে নাও। এখানে আমরা মন দেব Route 53 বাড়তি কী দেয় আর পরীক্ষায় কী আসে তাতে।

#Route 53-এ domain register করা

Route 53 একই সাথে registrar আর DNS service। Console-এ যাও Domains → Registered domains → Register domains-এ, নাম খোঁজো, কত বছরের জন্য নেবে আর auto-renew চাও কি না বেছে নাও, যোগাযোগের তথ্য দাও, টাকা দাও। এরপর যা ঘটে:

  • নিজে থেকেই একটা public hosted zone তৈরি হয়, আর domain-এর name server হিসেবে ওই zone-এর চারটা name server বসে যায়। কপি করার কিছু নেই, তাই ভুল হওয়ারও সুযোগ নেই। Registration-এর বাইরে hosted zone-এর জন্য মাসে ০.৫০ USD লাগে (register করার ১২ ঘণ্টার মধ্যে zone মুছে দিলে এই খরচ লাগে না)।
  • TLD অনুযায়ী বছরে একটা fee। একেক TLD-র দাম একেক রকম, আর প্রতি বছর বদলায় (২০২৬-এর ১ জুলাই থেকে একটা .com বছরে ১৬ USD, আগে ছিল ১৫: Route 53-এর হালনাগাদ domain price list দেখে নিও)। Registration আর renewal-এর টাকা ফেরত হয় না, AWS credit দিয়ে দেওয়া যায় না, আর register করা নাম পরে বদলানো যায় না।
  • Auto-renew মেয়াদ ফুরানোর একটু আগে domain নবায়ন করে দেয়। Production-এর যেকোনো domain-এ এটা চালু রাখো: মেয়াদ ফুরানো domain resolve হওয়া বন্ধ করে, আর grace period পেরোলে অন্য কেউ সেটা কিনে নিতে পারে।
  • Transfer lock (WHOIS-এ দেখায় clientTransferProhibited) তোমার অনুমতি ছাড়া কাউকে domain অন্য registrar-এ সরাতে দেয় না। Transfer না করলে এটা চালুই রাখো।
  • Privacy protection public WHOIS খোঁজে মালিকের যোগাযোগের তথ্য লুকিয়ে রাখে (যে TLD অনুমতি দেয়)।
  • E-mail যাচাই। ICANN-এর নিয়মে registrant-কে একটা যাচাই e-mail-এর link-এ click করতেই হয়; না করলে domain suspend হয়ে যায় আর resolve হওয়া বন্ধ হয়।
  • নতুন account default-এ ২০টা domain register করতে পারে (quota বাড়ানো যায়)।

AWS documentation-এর একটা ফাঁদ মনে রেখো: কোনো AWS account-এ register করা domain-কে সেই একই account-এর root user-এর e-mail domain বানিয়ো না। Account বন্ধ বা suspend হলে domain-ও suspend হয়, root user আর password reset-এর e-mail পায় না, তখন কোনোটাই আর উদ্ধার করা যায় না।

Registration transfer (অল্প কথায়; পরীক্ষা এর বেশি গভীরে যায় না বললেই চলে):

  • Route 53-এ আনতে: domain register বা transfer হওয়ার পর অন্তত ৬০ দিন পার হতে হবে, বর্তমান registrar-এ domain unlock করতে হবে, আর সেই registrar থেকে একটা authorization code নিয়ে Route 53-এ বসাতে হবে। DNSSEC-এর DS record থাকলে আগেই মুছে ফেলো। Generic TLD-তে transfer সাধারণত ৭ দিন পর্যন্ত, country-code TLD-তে ১০ দিন পর্যন্ত লাগে, আর বেশিরভাগ TLD-তে registration-এর মেয়াদ এক বছর বাড়ে।
  • আগে DNS সরাও। কিছু registrar transfer শুরু হওয়ামাত্র তাদের ফ্রি DNS বন্ধ করে দেয়। তাই registration transfer করার আগেই Route 53-কে (বা অন্য কোনো provider-কে) DNS service বানিয়ে নাও, যেন website resolve হতে থাকে।
  • Route 53 থেকে বাইরে নিতে: transfer lock বন্ধ করো, Route 53 console থেকে authorization code নাও, তারপর নতুন registrar-এ transfer শুরু করো।

Registration transfer আর DNS service বদল একে অপরের ওপর নির্ভর করে না: একটা ছাড়া অন্যটা করা যায়।

#Third-party registrar-এর সাথে Route 53

মালিকের note-এ বাস্তবে সবচেয়ে বেশি ঘটে এমন ঘটনাটা আছে: domain কিনেছ GoDaddy বা Namecheap থেকে, কিন্তু চালাতে চাও Route 53 দিয়ে, Alias record, routing policy আর health check-এর জন্য (লেসন ৮.২ থেকে ৮.৪)। এখানে কিছুই transfer করতে হয় না। তুমি শুধু বদলাও TLD কোথায় DNS query পাঠাবে।

  1. ১. একটা public hosted zone বানাও

    Route 53-এ domain-এর হুবহু একই নামে একটা public hosted zone বানাও, যেমন example.com। Route 53 নিজেই একটা SOA record আর একটা NS record বসায়, যেখানে এই zone-এর জন্য দেওয়া চারটা name server-এর নাম থাকে। এই দুটো record মুছবে না বা বদলাবে না, আর apex-এ অন্য কোনো NS record যোগ করবে না।

  2. ২. চারটা name server লিখে রাখো

    এগুলো দেখতে এমন: ns-203.awsdns-25.com, ns-718.awsdns-24.net, ns-1361.awsdns-42.org আর ns-1820.awsdns-35.co.uk: .com, .net, .org আর .co.uk-এর নিচে একটা করে। এটা ইচ্ছাকৃত। প্রতিটা আলাদা TLD-র নিচে থাকায় কোনো একটা TLD-র নিজের server-এ বিভ্রাট হলেও তোমার zone-এ পৌঁছানোর তিনটা পথ খোলা থাকে। প্রতিটা hosted zone নিজের আলাদা চারটা পায় (এটাকে বলে তার delegation set)।

  3. ৩. আগে record বানাও

    পুরনো DNS service-এ যত record ছিল সব আবার বানাও: website, www, mail-এর জন্য MX, SPF আর verification-এর TXT, যত CNAME আছে। পুরনো provider zone file export করতে দিলে সেটা hosted zone-এ import করো। এই কাজটা ৪ নম্বর ধাপের আগেই শেষ করতে হবে।

  4. ৪. Registrar-এ name server বদলাও

    GoDaddy বা Namecheap-এর dashboard-এ custom name server বেছে নাও, registrar-এর default গুলো মুছে চারটা Route 53 name server-ই বসাও, আর কিছু না। Registrar পরিবর্তনটা TLD registry-কে পাঠিয়ে দেয়।

  5. ৫. Cache ফুরানোর অপেক্ষা, তারপর যাচাই

    Registry সাধারণত কয়েক মিনিটেই নতুন NS publish করে, কিন্তু resolver তাদের পুরনো delegation TTL শেষ না হওয়া পর্যন্ত মনে রাখে। .com-এর বেলায় সেই TTL ১,৭২,৮০০ সেকেন্ড (২ দিন); পুরনো দিনের “৪৮ ঘণ্টা পর্যন্ত লাগতে পারে” সতর্কবার্তা এখান থেকেই এসেছে। dig NS example.com +trace দিয়ে দেখে নাও TLD এখন awsdns server গুলোর নাম দিচ্ছে কি না।

GoDaddy-র domain-কে Route 53-এ পাঠানো

নামটা থাকে registrar-এর খাতায়; উত্তর দেয় Route 53। দুজনের মধ্যে যোগসূত্র হলো .com TLD যে NS record publish করে সেটা। দেখো কাজটা ঠিকভাবে করলে কী হয়, তাড়াহুড়ো করলে কী হয়, cache কীভাবে দেরি করায়, zone আবার বানালে কীভাবে ভাঙে, আর Route 53 নিজেই registrar হলে কীভাবে সব আপনা থেকে হয়ে যায়।

পরিস্থিতি

তুমি
GoDaddyregistrar
.com TLDregistry
Route 53hosted zone
ResolverISP বা 8.8.8.8
public zone example.com বানাও
ধাপ 1 / 9
1

example.com তুমি কিনেছ GoDaddy থেকে। প্রথম কাজ: Route 53-এ ঠিক একই নামে একটা public hosted zone বানানো।

#চালু domain downtime ছাড়া সরানো

নতুন domain-এর জন্য ১ থেকে ৫ নম্বর ধাপই যথেষ্ট। কিন্তু যে domain-এ এখনই website আর e-mail চলছে, সেখানে লেসন ৮.১-এ শেখা TTL-এর সাবধানতা যোগ করো (Record, Hosted Zone আর TTL)। AWS যে ক্রম সুপারিশ করে:

  1. পুরনো DNS provider থেকে বর্তমান configuration নাও (zone file বা record-এর তালিকা)।
  2. Route 53-এ hosted zone আর সব record বানাও। User-দের জন্য এখনো কিছুই বদলায়নি।
  3. NS record-এর TTL কমাও, পুরনো provider-এ আর Route 53 hosted zone-এ দুই জায়গাতেই, ৬০ থেকে ৯০০ সেকেন্ডে।
  4. Domain-এ DNSSEC থাকলে parent zone থেকে DS record মুছে দাও (registrar-এ)। একই zone দুই provider একসাথে sign করতে পারে না।
  5. পুরনো TTL ফুরানো পর্যন্ত অপেক্ষা করো: সাধারণ NS TTL ১,৭২,৮০০ সেকেন্ড হলে দুই দিন।
  6. Registrar-এ name server বদলে চারটা Route 53 name server বসাও।
  7. Website আর mail-এর traffic নজরে রাখো। কিছু ভাঙলে পুরনো name server আবার বসিয়ে দাও: ছোট TTL-এর কারণে বেশিরভাগ user কয়েক মিনিটেই ফিরে আসে।
  8. NS-এর TTL আবার বাড়াও (AWS বলে ১,৭২,৮০০ সেকেন্ড), যতদিন কেউ ব্যবহার করছে ততদিন পুরনো provider-এর zone রেখে দাও, আর চাইলে Route 53-এ DNSSEC আবার চালু করে নতুন DS record বসাও।
  9. চাইলে registration-ও Route 53-এ transfer করে নাও।

#কোথায় গোলমাল হয়

লক্ষণকারণসমাধান
NS বদলানোর ঠিক পরেই website-এ NXDOMAIN, mail ফেরত আসেRoute 53-এ record বানানোর আগেই registrar-এ NS বদলানো হয়েছেRecord বানাও; যে resolver negative উত্তর cache করেছে, SOA-র negative TTL শেষে সে ঠিক হয়ে যায়। নিয়ম: সবসময় আগে record
২ দিন পর্যন্ত কিছু user নতুন উত্তর পায়, কিছু পুরনোResolver-এর কাছে পুরনো NS cache-এ আছে (TTL ১,৭২,৮০০ s)এটা স্বাভাবিক। TTL পার না হওয়া পর্যন্ত পুরনো zone একই রকম চালু রাখো; পরেরবার আগে থেকেই NS TTL কমিয়ে নিও
“গোছানোর” পর সবাই SERVFAIL পায়Hosted zone মুছে আবার বানানো হয়েছে: নতুন zone-এর চারটা নতুন name server, অথচ registrar-এ এখনো পুরনোগুলোনতুন name server registrar-এ বসাও; zone-এর name server একই রাখতে হলে reusable delegation set (API/CLI) ব্যবহার করো
এলোমেলো, একেকবার একেক উত্তরNS mismatch: registrar-এ দুটো Route 53 আর দুটো পুরনো name server, অথবা বানান ভুলRegistrar-এর প্রতিটা name server-কে zone-এর চারটার একটা হতে হবে, আর চারটাই থাকা উচিত
শুধু 8.8.8.8, 1.1.1.1 আর অন্য validating resolver-এ SERVFAILপুরনো provider-এর DNSSEC DS record এখনো registrar-এ, তাই Route 53-এর উত্তর যাচাইয়ে আটকে যায়সরানোর আগেই DS মুছে দাও; পরে Route 53-এ DNSSEC signing আবার চালু করো
Route 53-এ যা-ই বদলাও, কোনো প্রভাব নেইRegistrar এখনো পুরনো provider-এর দিকে দেখায়; Route 53 এখনো authoritative নাdig NS example.com @a.gtld-servers.net দিয়ে দেখো, তারপর registrar-এ ঠিক করো

প্রতিটা ঘটনা নিজে নেড়েচেড়ে দেখো:

NS delegation checker

Registrar-এ লেখা name server আর hosted zone-এর name server পাশাপাশি মিলিয়ে দেখো; সাথে যোগ করো resolver-এর cache, পুরনো DNS zone আর DNSSEC। তারপর দেখো www.example.com-এর জন্য resolver কোন server-কে জিজ্ঞেস করে আর কী উত্তর পায়।

একটা ঘটনা বেছে নাও

Registrar-এ name server (.com যা publish করে)

Route 53 hosted zone

এই resolver-এর cache

পুরনো DNS provider-এর zone

Registrar-এ DS record

Registrar-এ

  • ns-203.awsdns-25.com✓ zone-এর সাথে মেলে
  • ns-718.awsdns-24.net✓ zone-এর সাথে মেলে
  • ns-1361.awsdns-42.org✓ zone-এর সাথে মেলে
  • ns-1820.awsdns-35.co.uk✓ zone-এর সাথে মেলে

Hosted zone-এ

  • ns-203.awsdns-25.com
  • ns-718.awsdns-24.net
  • ns-1361.awsdns-42.org
  • ns-1820.awsdns-35.co.uk

একটা resolver জিজ্ঞেস করে ns-203.awsdns-25.com · পায় 203.0.113.10

Registrar-এর name server hosted zone-এর সাথে মেলে, আর zone-এ record আছে: domain-এর উত্তর এখন Route 53 দিচ্ছে।

সব ঠিক: প্রতিটা resolver শেষমেশ ঠিক zone-এ পৌঁছায়।

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

একটা কোম্পানি Namecheap থেকে example.com কিনেছে, আর চায় এর DNS query-র উত্তর দিক Route 53। Route 53-এ public hosted zone আর সব record আগেই বানানো আছে। Namecheap-এ কী বদলাতে হবে?

#Route 53 VPC Resolver দিয়ে hybrid DNS

এবার note-এর দ্বিতীয় অর্ধেক। অনেক কোম্পানির system-এর একটা অংশ চলে নিজেদের data centre-এ (on-premises), আরেকটা অংশ AWS VPC-তে, মাঝখানে একটা private সংযোগ। দুই দিকের server-কেই অন্য দিকের নাম খুঁজে পেতে হয়:

  • AWS থেকে on-premises: একটা EC2 instance-কে যেতে হবে web.corp.internal-এ, যে নাম শুধু কোম্পানির নিজের DNS server (প্রায়ই Active Directory DNS) জানে।
  • On-premises থেকে AWS: data centre-এর একটা server-কে যেতে হবে app.aws.internal-এ, যেটা একটা Route 53 private hosted zone-এর record, আর শুধু VPC-ই সেটা দেখতে পায়।

দুই জগতের মধ্যে এভাবে নাম resolve করাকে বলে hybrid DNS, আর AWS-এ এটা করা হয় Route 53 Resolver endpoint দিয়ে।

#VPC Resolver নিজে থেকে কী উত্তর দেয়

প্রতিটা VPC-র ভেতরে একটা DNS resolver বসানোই থাকে; অধ্যায় ৩-এ একে বলেছিলাম Amazon-provided DNS server। এটা শোনে VPC base address + 2-এ (10.0.0.0/16 VPC-তে 10.0.0.2), আর 169.254.169.253-এও, IPv6-এর জন্য fd00:ec2::253-এ। VPC-র DHCP option-এর মাধ্যমে instance গুলো default-এ এটাকেই ব্যবহার করে, আর এর জন্য VPC-র enableDnsSupport attribute লাগে (default-এ চালু)। কোনো configuration ছাড়াই সে উত্তর দেয়:

  1. EC2 instance-এর VPC-র ভেতরের নাম, যেমন ip-10-0-1-30.ec2.internal বা ec2-192-0-2-44.compute-1.amazonaws.com।
  2. VPC-র সাথে associate করা private hosted zone-এর record।
  3. Internet-এর public নাম, AWS-এর public address থেকে নিজেই পুরো recursive খোঁজ চালিয়ে (তাই DNS-এর জন্য private subnet-এ NAT gateway লাগে না)।

যা সে জানে না তা হলো যে নাম শুধু তোমার data centre-এ আছে; আর data centre-এর server-ও একে ব্যবহার করতে পারে না, কারণ একে শুধু VPC-র ভেতর থেকেই পাওয়া যায়।

VPC Resolver নিজে থেকে কী কী উত্তর দেয়

প্রতিটা VPC-তে base address +2-এ একটা resolver থাকে। কোনো setup ছাড়াই সে তিন রকম নামের উত্তর দেয়, আর চতুর্থ রকমে আটকে যায়: যে নাম শুধু তোমার data centre-এ থাকে।

পরিস্থিতি

us-east-1
VPC10.0.0.0/16
on-premises10.20.0.0/16
EC210.0.1.25
VPC Resolver10.0.0.2
Private zoneaws.internal
Public DNSroot, TLD, মালিক
On-prem DNScorp.internal
ip-10-0-1-30.ec2.internal?
ধাপ 1 / 2
1

Instance আরেকটা instance-এর private DNS নাম জানতে চাইল। তার DHCP setting তাকে পাঠায় 10.0.0.2-এ, মানে VPC base address +2-এ (169.254.169.253 দিয়েও পৌঁছানো যায়)।

#আগে connectivity: Site-to-Site VPN বা Direct Connect

Endpoint DNS query বয়ে নেয়, network নিজে বানায় না। তোমার data centre আর VPC আগে থেকেই private ভাবে জোড়া থাকতে হবে:

  • AWS Site-to-Site VPN: internet-এর ওপর দিয়ে তোমার router আর VPC-র মধ্যে একটা encrypted IPsec tunnel। তাড়াতাড়ি চালু হয়, সস্তা, তবে bandwidth internet-এর ওপর নির্ভর করে।
  • AWS Direct Connect (DX): তোমার data centre থেকে AWS পর্যন্ত একটা নিজস্ব private লাইন। Latency স্থির, bandwidth বেশি, কিন্তু চালু করতে কয়েক সপ্তাহ লাগে।

দুটোরই পরে আলাদা অধ্যায় আছে। এই লেসনের জন্য এটুকুই মনে রাখো: VPN বা DX সংযোগ ছাড়া hybrid DNS চলে না (outbound endpoint চাইলে NAT gateway দিয়েও DNS server-এ পৌঁছাতে পারে, কিন্তু on-premises resolver inbound endpoint-এ পৌঁছাতে পারে শুধু private সংযোগ দিয়েই)।

#Inbound endpoint: data centre জিজ্ঞেস করে AWS-কে

Inbound endpoint দিয়ে তোমার network-এর DNS resolver গুলো query পাঠাতে পারে তোমার VPC-র ভেতরে। এটা আসলে কয়েকটা elastic network interface (ENI), যেগুলো Route 53 তোমার বেছে দেওয়া subnet-এ বানায়, প্রতিটার একটা private IP address।

  1. Data centre-এর একটা server তার চেনা কোম্পানির DNS server-কে app.aws.internal জিজ্ঞেস করে।
  2. ওই DNS server-এ একটা conditional forwarder আছে: “aws.internal পাঠাও 10.0.1.10 আর 10.0.2.10-এ”, মানে endpoint-এর IP address গুলোতে।
  3. Query VPN বা DX link পার হয়ে endpoint-এর একটা ENI-তে পৌঁছায়, আর VPC Resolver private hosted zone থেকে উত্তর দেয়, ঠিক যেমন ওই VPC-র কোনো instance জিজ্ঞেস করলে দিত।

যে শর্তগুলো মনে রাখতে হবে: private hosted zone-কে inbound endpoint যে VPC-তে, সেই VPC-র সাথে associate করতে হবে; endpoint-এর security group-এ on-premises resolver থেকে inbound TCP আর UDP port 53 খোলা থাকতে হবে; আর on-premises forwarder-এ endpoint-এর প্রতিটা IP লিখতে হবে, যেন এক AZ বিকল হলে অন্যটায় যেতে পারে। On-premises থেকে সরাসরি VPC-র +2 address-এ forward করা support করা হয় না।

Inbound endpoint: data centre জিজ্ঞেস করে AWS-কে

On-premises DNS server aws.internal-এর query পাঠিয়ে দেয় তোমার VPC-র দুটো ENI-তে। ENI সেগুলো দেয় VPC Resolver-কে, আর Resolver private hosted zone পড়ে উত্তর দেয়। দেখো স্বাভাবিক পথ, একটা AZ বিকল হওয়া, port 53 বন্ধ থাকা, associate না করা zone, আর ভুল address-এ পাঠানো forwarder।

পরিস্থিতি

on-premises10.20.0.0/16
us-east-1
VPC10.0.0.0/16
AZ a
AZ b
Server10.20.1.15
On-prem DNS10.20.0.53
VPN বা DX
Inbound ENI10.0.1.10
Inbound ENI10.0.2.10
VPC Resolver
Private zoneaws.internal
app EC210.0.2.40
app.aws.internal?
ধাপ 1 / 4
1

Data centre-এর একটা server-এর দরকার app.aws.internal। বরাবরের মতো সে নিজের কোম্পানির DNS server-কে জিজ্ঞেস করে।

#Outbound endpoint আর forwarding rule: AWS জিজ্ঞেস করে data centre-কে

Outbound endpoint দিয়ে VPC Resolver বেছে নেওয়া কিছু query তোমার network-এর DNS resolver-এর কাছে পাঠিয়ে দেয়। এর দুটো অংশ:

  • Outbound endpoint নিজে: তোমার VPC-তে কয়েকটা ENI, যেগুলো থেকে forward হওয়া query বেরিয়ে যায়। এর security group-এ target resolver-এর দিকে outbound TCP আর UDP 53 খোলা থাকতে হবে, আর on-premises firewall-কে ENI-গুলোর IP address মেনে নিতে হবে।
  • Resolver rule, যা বলে দেয় কোন domain কোথায় যাবে। “corp.internal → outbound endpoint X দিয়ে 10.20.0.53, 10.20.1.53”-এর মতো একটা forwarding rule (conditional forwarding rule) ওই domain আর তার সব subdomain-এ খাটে। আর rule কাজ করে শুধু সেই VPC-গুলোতে যাদের সাথে তুমি একে associate করেছ।

যে rule type গুলো চিনতে হবে:

Ruleকে বানায়কী করে
Forwardতুমিএকটা domain-এর query outbound endpoint দিয়ে rule-এ লেখা IP address-এ পাঠায়
Systemতুমি (বা AWS)“এখানেই resolve করো”: একটা subdomain-এর জন্য forward rule-কে বাতিল করে, যেমন dev.corp.internal রাখা আছে private hosted zone-এ, আর বাকি corp.internal forward হয়
Autodefined system ruleAWSAWS-এর ভেতরের নাম (EC2-এর নাম, কিছু amazonaws.com নাম, VPC range-এর reverse lookup) VPC Resolver-ই resolve করে, তুমি “.” forward করলেও
Recursive (“Internet Resolver”)AWSDefault: আর কোনো rule না মিললে public internet-এ খোঁজা হয়
Delegationতুমিনতুন ধরন: forward না করে NS-এর মতো delegation দিয়ে VPC Resolver আর তোমার network-এর resolver-এর মধ্যে একটা subdomain ভাগ করে দেয়

একাধিক rule মিললে সবচেয়ে নির্দিষ্টটা জেতে (যার label সবচেয়ে বেশি): db.dev.corp.internal-এর জন্য dev.corp.internal-এর rule হারিয়ে দেয় corp.internal-এর rule-কে। একটা forwarding rule আর একটা private hosted zone-এর নাম হুবহু এক হলে rule জেতে, আর query চলে যায় on-premises-এ। Rule মেলে পুরো label ধরে: xcorp.internal কখনো corp.internal-এর rule-এ মেলে না।

Outbound endpoint: AWS জিজ্ঞেস করে data centre-কে

Forwarding rule VPC Resolver-কে বলে দেয় কোন domain data centre-এর; outbound endpoint হলো যে দরজা দিয়ে query বেরিয়ে যায়। দেখো rule মিলে গেলে, না মিললে, সবচেয়ে নির্দিষ্ট rule জিতলে, port বন্ধ থাকলে, আর অন্য account-এ rule share করলে কী হয়।

পরিস্থিতি

us-east-1
VPC10.0.0.0/16
on-premises10.20.0.0/16
AWS RAMrule share
Public DNS
EC210.0.1.25
VPC Resolver10.0.0.2
Outbound ENI২ AZ
VPN বা DX
On-prem DNS10.20.0.53
web.corp.internal?

এই VPC-র সাথে associate করা Resolver rule

DomainTypeকোথায় যায়
corp.internalforwardoutbound দিয়ে 10.20.0.53, 10.20.1.53
dev.corp.internalsystemResolver নিজে উত্তর দেয় (private zone)
.recursive (default)Internet Resolver
ধাপ 1 / 4
1

EC2-এর একটা application-এর দরকার web.corp.internal। বরাবরের মতো সে 10.0.0.2-এ VPC Resolver-কে জিজ্ঞেস করে; instance-এ কিছুই বদলাতে হয় না।

মেলানোর ব্যাপারটা নিজে হাতে করে দেখো:

Resolver rule matcher

EC2 instance যে নামটা জানতে চায়, সেটা বেছে নাও বা লিখে দাও। VPC-র সাথে associate করা প্রতিটা rule আর private zone-এর সাথে VPC Resolver নামটা মিলিয়ে দেখে, আর যেটা সবচেয়ে নির্দিষ্ট সেটাই জেতে।

EC2 থেকে query

এই VPC-র সাথে associate করা (click করে চালু বা বন্ধ করো)

  • corp.internalForwarding rule → on-prem DNSজিতল · 2 label
  • dev.corp.internalSystem rule (+ private zone)মেলে না
  • aws.internalPrivate hosted zone associate করামেলে না
  • aws.internalএকই নামের forwarding ruleবন্ধ
  • autoec2.internalAutodefined rule: EC2-এর নামমেলে না
  • auto.Internet Resolver (default)মেলে · 0 label

ফলাফল: corp.internal

Outbound endpoint-এর ENI দিয়ে, VPN বা Direct Connect link পার হয়ে, 10.20.0.53 আর 10.20.1.53-এ forward হলো। উত্তর দেয় on-premises DNS।

#Endpoint নিয়ে যে তথ্যগুলো পরীক্ষা আর production-এ লাগে

  • অন্তত দুটো AZ-এ ENI। প্রতিটা endpoint-এ অন্তত দুটো IP address লাগে, আর সেগুলো রাখা উচিত আলাদা Availability Zone-এ। Default quota endpoint প্রতি ৬টা IP address, আর account প্রতি Region-এ ৪টা endpoint (দুটোই বাড়ানো যায়)।
  • Capacity। প্রতিটা IP address সেকেন্ডে ১০,০০০টা পর্যন্ত UDP query সামলায় (connection tracking, ধীর target বা TCP হলে অনেক কম)। AWS বলে, কোনো একটা IP ৫০%-এর বেশি ব্যস্ত হলে IP বাড়াও। নতুন endpoint না বানিয়ে আগের endpoint-এই IP যোগ করো।
  • Regional। Endpoint আর rule একটা Region-এর, আর সেই Region-এর VPC-কেই সেবা দেয়। সাধারণত Region প্রতি একটা inbound আর একটা outbound endpoint-ই যথেষ্ট; দুটো একই VPC-তে থাকতে পারে।
  • Protocol। Port 53-এ সাধারণ DNS (Do53), আর যেখানে query encrypt করতে হবে সেখানে DNS over HTTPS (DoH)।
  • খরচ। মোটামুটি ENI প্রতি ঘণ্টায় ০.১২৫ USD, সাথে endpoint দিয়ে যাওয়া query-র জন্য প্রতি দশ লাখে ০.৪০ USD (মাসের প্রথম একশো কোটি পর্যন্ত)। সবচেয়ে কম দুটো ENI-র একটা endpoint-এ query বাদে মাসে খরচ প্রায় ২ × ০.১২৫ × ৭৩০ ≈ ১৮২.৫০ USD।
  • AWS RAM দিয়ে share। Resolver rule অন্য account-এর সাথে (বা পুরো organization-এর সাথে) AWS Resource Access Manager দিয়ে share করা যায়। প্রতিটা account share করা rule নিজের VPC-র সাথে associate করে, আর query বেরোয় rule-এ লেখা একটাই outbound endpoint দিয়ে। চেনা নকশা: একটা কেন্দ্রীয় networking account endpoint আর rule-এর মালিক; প্রতিটা application account সেগুলো ব্যবহার করে।

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

Data centre-এর developer-দের db.aws.internal resolve করতে হবে, যেটা একটা Route 53 private hosted zone-এর record। Data centre Direct Connect দিয়ে VPC-র সাথে জোড়া। একজন solutions architect কী বানাবেন?

#পাশের note: Resolver-এর নতুন feature গুলো (২০২১–২০২৬)

Route 53 Developer Guide-এ যাচাই করা; পরীক্ষায় বেশি আসে প্রথম দুটো।

  • Resolver DNS Firewall instance গুলো VPC Resolver দিয়ে যে outbound DNS query পাঠায় সেগুলো ছেঁকে দেয়। Domain list দিয়ে rule group বানাও (নিজের list, অথবা malware আর botnet domain-এর AWS managed list), action দাও allow, block বা alert, তারপর VPC-র সাথে associate করো; AWS Firewall Manager পুরো organization জুড়ে এগুলো ছড়িয়ে দিতে পারে। এর আসল কাজ DNS exfiltration আটকানো, যেখানে malware DNS query-র ভেতরে লুকিয়ে attacker-এর domain-এ data পাচার করে। পরীক্ষার keyword: “instance যেন malicious domain resolve করতে না পারে” → DNS Firewall।
  • Resolver query logging তোমার VPC থেকে, inbound endpoint থেকে আর outbound endpoint দিয়ে যাওয়া query, সাথে DNS Firewall-এর action লিখে রাখে, আর পাঠায় CloudWatch Logs, S3 বা Firehose-এ; configuration AWS RAM দিয়ে share করা যায়। একে public hosted zone-এর public DNS query logging-এর সাথে গুলিয়ে ফেলো না; ওটা লেখে শুধু Route 53-এর name server-এ যে query পৌঁছায় সেগুলো।
  • Route 53 Profiles (২০২৪) private hosted zone association, Resolver rule, DNS Firewall rule group, query logging configuration আর interface VPC endpoint এক পোঁটলায় বাঁধে, আর সেটা একসাথে অনেক VPC আর account-এ লাগিয়ে দেয় (AWS RAM দিয়ে share; প্রতি VPC-তে একটা Profile)। যেখানে না হলে শত শত VPC-র সাথে ডজন ডজন zone আর rule associate করতে হতো, সেখানে Profile অনেক সহজ।
  • Route 53 Global Resolver (preview নভেম্বর ২০২৫, সবার জন্য চালু মার্চ ২০২৬) internet থেকে পৌঁছানো যায় এমন একটা anycast resolver, তোমার অনুমোদিত client-দের জন্য যেকোনো জায়গা থেকে, যেমন VPN ছাড়া laptop আর branch office। এটা public নাম আর তোমার private hosted zone দুটোই resolve করে, সাথে DNS filtering আর কেন্দ্রীয় logging। এটা নতুন, এখনো পরীক্ষায় নেই; hybrid DNS-এর প্রশ্ন মানে এখনো VPC Resolver endpoint।
  • Delegation inbound endpoint আর rule (সাম্প্রতিক) দিয়ে একটা subdomain forward না করে VPC Resolver আর on-premises resolver-এর মধ্যে delegate করা যায়।

#System design-এ registrar আর hybrid DNS

  • Production-এর domain এমন account-এ register করো যেটা তোমার ভালোভাবে নিয়ন্ত্রণে, auto-renew আর transfer lock চালু রেখে, আর registrant e-mail এমন ঠিকানায় যেটা ওই একই domain-এর ওপর নির্ভর করে না। Domain হারানো একটা কোম্পানির জন্য সবচেয়ে লম্বা outage-গুলোর একটা।
  • কাজে লাগলে registrar আর DNS আলাদা রাখো: অনেক কোম্পানি এক জায়গায় register করে আর Alias record, health check আর routing policy-র জন্য DNS রাখে Route 53-এ। আসল জিনিস NS delegation, তাই registrar-এর NS আর hosted zone-এর NS মিলছে কি না, সেটা নিয়মিত স্বয়ংক্রিয়ভাবে যাচাই করো।
  • Hosted zone-কে দীর্ঘস্থায়ী জিনিস ভাবো। Production zone কখনো মুছে আবার বানাবে না; zone যদি code দিয়ে বানানো হয়, reusable delegation set ব্যবহার করো।
  • Delegation বদলাও deployment-এর মতো করে: TTL কমাও, ফিরে যাওয়ার পরিকল্পনা রাখো (পুরনো name server), নজর রাখো, তারপর TTL বাড়াও।
  • Hybrid DNS hub: প্রতিটা Region-এ inbound আর outbound endpoint একটা কেন্দ্রীয় networking VPC-তে রাখো, data centre-এর সাথে দুটো VPN tunnel বা Direct Connect link দিয়ে জোড়ো, forwarding rule AWS RAM দিয়ে share করো, আর private hosted zone ওই hub VPC-র সাথে associate করো। Endpoint IP অন্তত দুটো AZ-এ রাখো আর endpoint-এর CloudWatch metric নজরে রাখো।
  • Security: প্রতিটা VPC-তে query logging আর DNS Firewall চালু রাখো; এরা যেসব incident ব্যাখ্যা করতে সাহায্য করে, তার তুলনায় এদের খরচ সামান্য।

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

নিজের machine থেকে একটা delegation যাচাই করো:

# Domain-এর authoritative এখন কে? (root → TLD → authoritative ধরে এগোয়)
dig NS example.com +trace

# .com server-কে সরাসরি জিজ্ঞেস করো তারা domain-এর জন্য কী publish করছে, আর TTL কত
dig NS example.com @a.gtld-servers.net +norecurse

# Zone-এর নিজের একটা name server-কে জিজ্ঞেস করো (কোনো cache-এর ভেতর দিয়ে যায় না)
dig www.example.com A @ns-203.awsdns-25.com

# Windows-এ একই কাজ
nslookup -type=NS example.com

Route 53-এর দিক (domain-এর command শুধু us-east-1-এ চলে):

# একটা public hosted zone বানাও আর তার চারটা name server দেখাও
aws route53 create-hosted-zone --name example.com --caller-reference "$(date +%s)"
aws route53 get-hosted-zone --id Z0123456789EXAMPLE --query "DelegationSet.NameServers"

# Reusable delegation set: এটা দিয়ে বানানো zone একই চারটা name server রাখে
aws route53 create-reusable-delegation-set --caller-reference "rds-$(date +%s)"

# Route 53-এ domain register, অথবা Route 53-এ register করা domain-কে অন্য name server-এ পাঠানো
aws route53domains check-domain-availability --domain-name example.org --region us-east-1
aws route53domains update-domain-nameservers --domain-name example.org --region us-east-1 \
  --nameservers Name=ns-203.awsdns-25.com Name=ns-718.awsdns-24.net \
                Name=ns-1361.awsdns-42.org Name=ns-1820.awsdns-35.co.uk
aws route53domains enable-domain-transfer-lock --domain-name example.org --region us-east-1
aws route53domains enable-domain-auto-renew --domain-name example.org --region us-east-1

Hybrid DNS (security group-এ TCP আর UDP 53 খোলা থাকতে হবে):

# Inbound endpoint: দুই AZ-এ দুটো IP
aws route53resolver create-resolver-endpoint --name onprem-to-aws --direction INBOUND \
  --creator-request-id in-001 --security-group-ids sg-0dns0123456789abc \
  --ip-addresses SubnetId=subnet-0aaa1111,Ip=10.0.1.10 SubnetId=subnet-0bbb2222,Ip=10.0.2.10

# Outbound endpoint
aws route53resolver create-resolver-endpoint --name aws-to-onprem --direction OUTBOUND \
  --creator-request-id out-001 --security-group-ids sg-0dns0123456789abc \
  --ip-addresses SubnetId=subnet-0aaa1111 SubnetId=subnet-0bbb2222

# corp.internal-এর forwarding rule, তারপর একটা VPC-র সাথে associate
aws route53resolver create-resolver-rule --name corp --rule-type FORWARD \
  --domain-name corp.internal --resolver-endpoint-id rslvr-out-0123456789abcdef \
  --target-ips Ip=10.20.0.53,Port=53 Ip=10.20.1.53,Port=53 --creator-request-id rule-001
aws route53resolver associate-resolver-rule --resolver-rule-id rslvr-rr-0123456789abcdef \
  --vpc-id vpc-0123456789abcdef0

# AWS RAM দিয়ে পুরো organization-এর সাথে rule share
aws ram create-resource-share --name dns-rules \
  --resource-arns arn:aws:route53resolver:us-east-1:111122223333:resolver-rule/rslvr-rr-0123456789abcdef \
  --principals arn:aws:organizations::111122223333:organization/o-exampleorgid

# একটা EC2 instance থেকে: forward করা নাম resolve হচ্ছে তো?
dig web.corp.internal

#সারসংক্ষেপ

মূল কথা

  • Registrar ≠ DNS service। Registrar তোমাকে বছর ধরে নামটা ভাড়া দেয় আর TLD-কে তোমার name server জানায়; DNS service zone রাখে আর query-র উত্তর দেয়। দুটো আলাদা কোম্পানি হতে পারে, জোড়া লাগে শুধু NS delegation দিয়ে।
  • Route 53-এ register করলে public hosted zone নিজে থেকেই তৈরি হয় আর তার name server বসে যায়; TLD অনুযায়ী বছরের fee, সাথে zone-এর জন্য মাসে ০.৫০ USD। Auto-renew, transfer lock আর privacy protection চালু রাখো। Transfer-এ লাগে ৬০ দিন, unlock করা domain আর একটা authorization code; আগে DNS সরাও।
  • Third-party registrar + Route 53: একটা public hosted zone বানাও, সব record বানাও, তারপর registrar-এর name server বদলে zone-এর চারটা awsdns server বসাও (ইচ্ছা করেই .com, .net, .org আর .co.uk-এ ছড়ানো)। পুরনো NS-এর TTL শেষে resolver নতুন দিকে যায়, .com-এ ২ দিন।
  • নিরাপদে সরাও: record কপি, NS TTL কমানো, DNSSEC DS record মোছা, অপেক্ষা, বদল, নজর, TTL আবার বাড়ানো। চেনা ভুল: record নেই (NXDOMAIN), পুরনো NS cache-এ, নতুন name server সহ আবার বানানো zone (SERVFAIL), মিশ্র NS, পুরনো DS রয়ে যাওয়া।
  • VPC Resolver (VPC base +2, 169.254.169.253) নিজেই EC2-এর নাম, private hosted zone আর public নামের উত্তর দেয়, কিন্তু on-premises-এর কিছুই জানে না, আর বাইরে থেকে তাকে পাওয়াও যায় না।
  • Inbound endpoint: AWS-এর private নাম resolve করতে on-premises resolver তোমার VPC-র ENI-তে query পাঠায়। Outbound endpoint + forwarding rule: VPC Resolver বেছে নেওয়া domain on-premises DNS-এ পাঠায়। Rule-কে VPC-র সাথে associate করতে হয়; সবচেয়ে নির্দিষ্ট মিলটা জেতে; কিছু না মিললে public খোঁজ।
  • Endpoint হলো অন্তত দুটো AZ-এ ENI, সাথে security group (TCP আর UDP 53), লাগে Direct Connect বা Site-to-Site VPN, খরচ ENI-ঘণ্টা প্রতি প্রায় ০.১২৫ USD, আর rule AWS RAM দিয়ে share করা যায়।
  • পরীক্ষার কৌশল: hybrid DNS → Route 53 Resolver inbound/outbound endpoint। বাড়তি: DNS Firewall (malicious domain আটকানো), query logging, Profiles (অনেক VPC আর account), Global Resolver (নতুন, এখনো পরীক্ষায় নেই)।