AWS Documentation · Tiếng Việt

Amazon Route 53

Dịch vụ DNS có độ sẵn sàng cao, đăng ký tên miền và kiểm tra sức khỏe — Quản lý định tuyến lưu lượng toàn cầu cho ứng dụng của bạn

Cập nhật 07/2025
Networking · DNS
AWS Core Service
01 · Tổng quan

Route 53 là gì?

Amazon Route 53 là dịch vụ DNS (Domain Name System) web có khả năng mở rộng cao và sẵn sàng cao của AWS. Tên "Route 53" lấy từ cổng TCP/UDP 53 — cổng mặc định của giao thức DNS. Route 53 cung cấp ba chức năng chính: đăng ký tên miền, định tuyến DNS, và kiểm tra sức khỏe (health checking).

🌐
DNS Resolution
Chuyển đổi tên miền (example.com) thành địa chỉ IP. SLA 100% availability cho DNS queries.
🏷️
Domain Registration
Đăng ký và quản lý tên miền trực tiếp trên AWS. Hỗ trợ hàng trăm TLD (.com, .net, .io...).
💓
Health Checks
Giám sát sức khỏe endpoint và tự động chuyển hướng traffic khi phát hiện lỗi.
🔀
Traffic Routing
8 routing policies linh hoạt: Simple, Weighted, Latency, Failover, Geolocation, Geoproximity, Multi-value, IP-based.
🔐
DNSSEC
Bảo vệ DNS khỏi tấn công giả mạo (spoofing) bằng chữ ký số cho DNS records.
🔄
Hybrid DNS
Route 53 Resolver cho phép phân giải DNS giữa VPC và mạng on-premises.

Cách DNS hoạt động — Tổng quan

👤 Người dùng example.com? DNS Resolver ISP / VPC .2 Root NS . (13 clusters) TLD NS .com nameserver Route 53 Authoritative NS ✅ IP: 54.239.28.85 TTL: 300s ① Root → ② TLD → ③ Authoritative NS → ④ IP trả về client
💡 Tại sao Route 53 có SLA 100%?
Route 53 sử dụng mạng lưới anycast toàn cầu với hàng trăm edge location. DNS queries được tự động định tuyến đến location gần nhất. Đây là dịch vụ AWS duy nhất cam kết SLA 100% availability.

Route 53 trong hệ sinh thái AWS

Route 53 tích hợp chặt chẽ với hầu hết các dịch vụ AWS:

  • ELB / ALB / NLB: Alias record trỏ trực tiếp đến load balancer (miễn phí query)
  • CloudFront: Alias record cho CDN distribution
  • S3: Alias record cho static website hosting bucket
  • API Gateway: Custom domain name mapping
  • Elastic Beanstalk: Alias record cho environment endpoint
  • VPC: Private Hosted Zone cho internal DNS resolution
  • CloudWatch: Health check tích hợp với CloudWatch Alarms
  • AWS Global Accelerator: Alias record cho accelerator endpoint
02 · Kiến thức nền tảng

DNS Fundamentals — Các loại Record

DNS sử dụng nhiều loại record khác nhau để ánh xạ tên miền đến các tài nguyên. Hiểu rõ từng loại record là nền tảng để cấu hình Route 53 hiệu quả.

Record Type Mô tả Ví dụ Value Use Case
A Ánh xạ hostname → IPv4 address 93.184.216.34 Trỏ domain đến server IPv4
AAAA Ánh xạ hostname → IPv6 address 2001:0db8:85a3::8a2e:0370:7334 Trỏ domain đến server IPv6
CNAME Ánh xạ hostname → hostname khác app.example.com → lb-123.elb.amazonaws.com Alias cho subdomain (không dùng cho zone apex)
Alias Ánh xạ hostname → AWS resource (Route 53 riêng) example.com → d111.cloudfront.net Trỏ zone apex đến AWS resource, miễn phí query
MX Mail Exchange — chỉ định mail server 10 mail.example.com Cấu hình email cho domain
TXT Text record — lưu trữ text tùy ý "v=spf1 include:_spf.google.com ~all" SPF, DKIM, domain verification
NS Name Server — chỉ định authoritative NS cho zone ns-123.awsdns-45.com Delegate DNS cho hosted zone
SOA Start of Authority — thông tin zone ns-123.awsdns-45.com. hostmaster... Metadata của hosted zone (tự động tạo)
SRV Service record — chỉ định host/port cho service 10 5 5060 sip.example.com VoIP, LDAP, XMPP services
CAA Certificate Authority Authorization 0 issue "letsencrypt.org" Chỉ định CA nào được phép cấp SSL cho domain
PTR Pointer — reverse DNS lookup server.example.com Ánh xạ IP → hostname (reverse DNS)

TTL (Time To Live)

TTL xác định thời gian (giây) mà DNS resolver cache kết quả trước khi query lại. Đây là cấu hình quan trọng ảnh hưởng đến tốc độ và khả năng cập nhật DNS.

✅ TTL cao (ví dụ: 86400s = 24h)
  • Ít DNS query hơn → giảm chi phí Route 53
  • Giảm latency cho client (dùng cache)
  • Phù hợp record ít thay đổi
⚠️ TTL thấp (ví dụ: 60s)
  • Nhiều DNS query hơn → tăng chi phí
  • Thay đổi DNS propagate nhanh hơn
  • Phù hợp khi chuẩn bị thay đổi record
💡 Mẹo chuyên gia
Trước khi thay đổi DNS record quan trọng, hãy giảm TTL xuống 60s trước 24-48 giờ. Sau khi thay đổi xong và xác nhận hoạt động tốt, tăng TTL trở lại giá trị cao (300s - 86400s) để tối ưu chi phí.

FQDN (Fully Qualified Domain Name)

FQDN là tên miền đầy đủ bao gồm hostname và domain name, kết thúc bằng dấu chấm (root). Ví dụ: www.example.com. — dấu chấm cuối đại diện cho root zone.

03 · Cấu hình DNS

Hosted Zones

Hosted Zone là container chứa các DNS record cho một domain. Khi tạo hosted zone, Route 53 tự động tạo NS record và SOA record. Có hai loại hosted zone:

🌍 Public Hosted Zone
  • Chứa record định tuyến traffic từ Internet
  • Phân giải được từ bất kỳ đâu trên Internet
  • Ví dụ: example.com54.239.28.85
  • Dùng cho website, API public
  • Giá: $0.50/hosted zone/tháng
🔒 Private Hosted Zone
  • Chứa record chỉ phân giải trong VPC
  • Không thể truy cập từ Internet
  • Ví dụ: db.internal.corp10.0.1.50
  • Dùng cho internal services, database
  • Giá: $0.50/hosted zone/tháng
Public Hosted Zone example.com A → 54.239.28.85 CNAME → lb.elb.aws MX → mail.example.com TXT → "v=spf1..." 🌐 Truy cập từ Internet Private Hosted Zone internal.corp (VPC only) A → 10.0.1.50 A → 10.0.2.100 SRV → 10.0.3.25:5432 🔒 Chỉ truy cập trong VPC

Chi phí Hosted Zone

Hạng mụcGiáGhi chú
Hosted Zone$0.50/zone/tháng25 hosted zone đầu tiên. Zone thứ 26+ giá $0.10
Standard Queries$0.40/triệu queryA, AAAA, CNAME, MX, TXT...
Latency-based Queries$0.60/triệu queryRouting policy phức tạp hơn
Geo DNS Queries$0.70/triệu queryGeolocation & Geoproximity
Alias Queries (AWS resource)Miễn phíAlias trỏ đến ELB, CloudFront, S3, Beanstalk...
⚠️ Lưu ý quan trọng
Khi tạo Public Hosted Zone, bạn phải cập nhật NS record tại domain registrar (nơi mua domain) để trỏ về 4 name server mà Route 53 cung cấp. Nếu không, DNS sẽ không hoạt động.

Private Hosted Zone — Cấu hình

Để sử dụng Private Hosted Zone, bạn cần:

  1. Bật enableDnsHostnamesenableDnsSupport trong VPC
  2. Associate Private Hosted Zone với một hoặc nhiều VPC
  3. Có thể associate VPC từ các AWS account khác nhau (cross-account)
04 · Định tuyến

Routing Policies

Route 53 hỗ trợ 8 routing policies khác nhau, cho phép bạn kiểm soát cách DNS trả lời query. Mỗi policy phù hợp với một use case cụ thể.

Policy Mô tả Health Check Use Case
Simple Trả về một hoặc nhiều giá trị ngẫu nhiên Không Single resource, không cần routing phức tạp
Weighted Phân phối traffic theo tỷ lệ % (weight) A/B testing, blue-green deployment, phân tải
Latency Trả về resource có latency thấp nhất đến user Ứng dụng multi-region, tối ưu performance
Failover Active-Passive failover tự động Bắt buộc (Primary) Disaster recovery, high availability
Geolocation Routing dựa trên vị trí địa lý của user Content localization, compliance theo quốc gia
Geoproximity Routing dựa trên khoảng cách + bias Shift traffic giữa các region bằng bias value
Multi-value Trả về nhiều giá trị healthy (tối đa 8) Client-side load balancing đơn giản
IP-based Routing dựa trên IP CIDR của client Tối ưu cho ISP cụ thể, routing nội bộ

1. Simple Routing

Routing đơn giản nhất — trả về một hoặc nhiều giá trị. Nếu có nhiều giá trị, client chọn ngẫu nhiên. Không hỗ trợ health check.

Simple Routing — Nhiều giá trị
example.com  A  300  →  11.22.33.44
                         55.66.77.88
                         99.00.11.22
# Client nhận tất cả IP, chọn ngẫu nhiên 1 cái

2. Weighted Routing

Phân phối traffic theo tỷ lệ weight. Tổng weight không cần bằng 100. Nếu weight = 0, ngừng gửi traffic đến resource đó.

DNS Query app.example.com 70% 20% 10% 🟢 v2 (us-east-1) weight: 70 🟠 v1 (us-east-1) weight: 20 🔵 canary (eu-west-1) weight: 10 Tỷ lệ = weight / tổng weight 70/(70+20+10) = 70%

3. Latency-based Routing

Route 53 đo latency giữa user và các AWS Region, sau đó trả về record có latency thấp nhất. Latency được đo dựa trên network latency, không phải khoảng cách địa lý.

💡 Latency ≠ Khoảng cách
Một user ở Nhật Bản có thể có latency thấp hơn đến us-west-2 (Oregon) so với ap-northeast-1 (Tokyo) nếu đường mạng tốt hơn. Route 53 dựa vào dữ liệu latency thực tế, không phải vị trí địa lý.

4. Failover Routing

Cấu hình Active-Passive: khi Primary resource fail health check, Route 53 tự động chuyển sang Secondary resource.

DNS Query app.example.com Route 53 Failover Policy ✅ Primary (Active) us-east-1 ALB ⏳ Secondary (Passive) eu-west-1 ALB / S3 💓 Health: OK Kích hoạt khi Primary fail

5. Geolocation Routing

Routing dựa trên vị trí địa lý thực tế của user (continent, country, hoặc US state). Khác với latency-based — geolocation routing cho phép bạn kiểm soát chính xác user từ đâu sẽ được route đến đâu.

  • Continent: Africa, Antarctica, Asia, Europe, Oceania, North America, South America
  • Country: Mã quốc gia ISO 3166 (VN, US, JP...)
  • US State: Chỉ áp dụng cho Hoa Kỳ
  • Default record: Bắt buộc — dùng cho user không match location nào
⚠️ Luôn tạo Default record
Nếu không có default record và user đến từ location không được cấu hình, Route 53 sẽ trả về "no answer" — tức là user không thể truy cập website.

6. Geoproximity Routing

Tương tự Geolocation nhưng linh hoạt hơn — cho phép dùng bias để mở rộng hoặc thu hẹp vùng routing. Bias từ -99 đến +99. Cần sử dụng Route 53 Traffic Flow.

  • Bias dương (+): Mở rộng vùng → thu hút nhiều traffic hơn
  • Bias âm (-): Thu hẹp vùng → giảm traffic
  • Hỗ trợ cả AWS resource (chỉ định Region) và non-AWS resource (chỉ định latitude/longitude)

7. Multi-value Answer Routing

Trả về tối đa 8 healthy record cho mỗi query. Mỗi record có thể gắn health check riêng. Không phải thay thế cho ELB — chỉ là client-side load balancing đơn giản.

8. IP-based Routing

Routing dựa trên CIDR block của client IP. Bạn tạo CIDR collection (danh sách IP range) và map đến các record tương ứng.

IP-based Routing — Ví dụ
# CIDR Collection
Location-1: 203.0.113.0/24    →  ap-southeast-1 endpoint
Location-2: 198.51.100.0/24   →  us-east-1 endpoint
Location-3: 192.0.2.0/24      →  eu-west-1 endpoint

# User từ IP 203.0.113.50 → route đến ap-southeast-1
05 · Giám sát

Health Checks

Route 53 Health Checks giám sát sức khỏe của endpoint và tự động loại bỏ resource không healthy khỏi DNS response. Có 3 loại health check:

🔍
Endpoint Health Check
Giám sát trực tiếp endpoint (IP hoặc domain) qua HTTP, HTTPS, hoặc TCP. ~15 health checkers toàn cầu.
🧮
Calculated Health Check
Kết hợp nhiều health check con bằng AND, OR, hoặc ngưỡng (ví dụ: ≥2/3 healthy). Tối đa 256 child.
📊
CloudWatch Alarm-based
Dựa trên trạng thái CloudWatch Alarm. Hữu ích cho private resource không thể check trực tiếp.

Endpoint Health Check — Chi tiết

Cấu hìnhGiá trịMô tả
ProtocolHTTP, HTTPS, TCPGiao thức kiểm tra
IP / DomainPublic IP hoặc domain nameEndpoint cần giám sát (phải public accessible)
Port80, 443, customCổng kết nối
Path/healthĐường dẫn HTTP (chỉ HTTP/HTTPS)
Interval30s (standard) / 10s (fast)Fast interval tốn thêm phí
Failure Threshold1-10 (mặc định 3)Số lần fail liên tiếp trước khi đánh dấu unhealthy
String MatchingTối đa 5120 bytes đầu tiênKiểm tra response body chứa chuỗi cụ thể
Health Checkers~15 locations toàn cầuHealthy nếu ≥18% checkers báo healthy
Health Checkers 🇺🇸 us-east-1 🇪🇺 eu-west-1 🇯🇵 ap-northeast-1 🇧🇷 sa-east-1 🇦🇺 ap-southeast-2 ... ~15 locations Endpoint HTTP 200 OK? Body contains "OK"? ✅ Healthy ❌ Unhealthy ≥18% checkers healthy → endpoint = Healthy
🔥 Quan trọng cho thi SAA
  • Health check chỉ hoạt động với public endpoint (health checkers từ Internet)
  • Để giám sát private resource → dùng CloudWatch Alarm-based health check
  • Cần mở firewall/security group cho IP range của Route 53 health checkers

Calculated Health Check

Kết hợp nhiều health check con thành một health check cha. Hỗ trợ 3 điều kiện:

  • AND: Tất cả child phải healthy
  • OR: Ít nhất 1 child healthy
  • Threshold: Ít nhất N child healthy (ví dụ: 2/3)

CloudWatch Alarm-based Health Check

Dùng khi cần giám sát resource private (trong VPC). Quy trình:

  1. Tạo CloudWatch Metric cho resource (ví dụ: DynamoDB throttle, RDS CPU)
  2. Tạo CloudWatch Alarm dựa trên metric
  3. Tạo Route 53 Health Check liên kết với CloudWatch Alarm
  4. Khi alarm ở trạng thái ALARM → health check = unhealthy

Chi phí Health Check

LoạiGiá/thángGhi chú
AWS endpoint$0.50Endpoint trong AWS
Non-AWS endpoint$0.75Endpoint ngoài AWS
String matching (thêm)+$1.00Kiểm tra response body
Fast interval (thêm)+$1.00Check mỗi 10s thay vì 30s
HTTPS (thêm)+$1.00SSL/TLS health check
06 · Quản lý tên miền

Domain Registration & Transfer

Route 53 hoạt động như một domain registrar — bạn có thể đăng ký tên miền mới hoặc chuyển (transfer) domain từ registrar khác về Route 53.

Đăng ký tên miền mới

  1. Tìm kiếm tên miền khả dụng trong Route 53 Console
  2. Chọn TLD (.com, .net, .org, .io, .dev...)
  3. Điền thông tin liên hệ (registrant, admin, tech)
  4. Bật/tắt Privacy Protection (ẩn thông tin WHOIS)
  5. Chọn thời hạn đăng ký (1-10 năm) và auto-renew
  6. Route 53 tự động tạo Public Hosted Zone cho domain
TLDGiá/năm (tham khảo)Privacy Protection
.com$13.00Miễn phí
.net$11.00Miễn phí
.org$12.00Miễn phí
.io$39.00Miễn phí
.dev$14.00Miễn phí
.cloud$11.00Miễn phí

Transfer Domain về Route 53

Quy trình chuyển domain từ registrar khác (GoDaddy, Namecheap, Google Domains...):

  1. Unlock domain tại registrar hiện tại (tắt Transfer Lock)
  2. Lấy Authorization Code (EPP code / transfer key)
  3. Tắt DNSSEC tại registrar cũ (nếu đang bật)
  4. Trong Route 53 Console → Transfer Domain → nhập domain và auth code
  5. Xác nhận email transfer (gửi đến registrant email)
  6. Chờ 5-7 ngày để transfer hoàn tất
💡 Registrar ≠ DNS Service
Bạn có thể mua domain ở GoDaddy nhưng dùng Route 53 làm DNS service (và ngược lại). Chỉ cần cập nhật NS record tại registrar trỏ về Route 53 name servers. Không bắt buộc phải transfer domain.

Domain Lock & Protection

  • Transfer Lock: Ngăn chặn transfer domain trái phép. Mặc định bật.
  • Privacy Protection: Ẩn thông tin cá nhân trong WHOIS lookup. Miễn phí trên Route 53.
  • Auto-Renew: Tự động gia hạn domain trước khi hết hạn. Nên bật.
  • DNSSEC: Bảo vệ domain khỏi DNS spoofing (xem phần DNSSEC).
07 · So sánh quan trọng

Alias Records vs CNAME

Đây là một trong những chủ đề quan trọng nhất khi làm việc với Route 53 và thường xuất hiện trong kỳ thi AWS. Alias là tính năng riêng của Route 53, không phải DNS record chuẩn.

Tiêu chí CNAME Record Alias Record (Route 53)
Zone Apex (root domain) ❌ Không hỗ trợ (example.com) ✅ Hỗ trợ (example.com)
Target Bất kỳ hostname nào Chỉ AWS resource (ELB, CloudFront, S3...)
Chi phí query Tính phí bình thường Miễn phí (khi trỏ đến AWS resource)
TTL Tự cấu hình Tự động theo target resource (không thể set)
Record type CNAME A hoặc AAAA (trả về IP trực tiếp)
Health Check Không tự động Tự động evaluate health của target
DNS Standard RFC chuẩn Route 53 extension (không phải DNS chuẩn)

Alias Target hỗ trợ

⚖️
Elastic Load Balancer
ALB, NLB, CLB — phổ biến nhất
🌍
CloudFront Distribution
CDN distribution endpoint
📦
S3 Website Endpoint
Chỉ S3 static website (không phải S3 bucket URL)
🌿
Elastic Beanstalk
Environment endpoint
🚀
API Gateway
Regional & Edge-optimized API
🔗
VPC Interface Endpoint
PrivateLink endpoint
🌐
Global Accelerator
Accelerator endpoint
📁
Route 53 Record
Record khác trong cùng hosted zone
🔥 Không thể tạo Alias cho
  • EC2 DNS name — không thể Alias trực tiếp đến EC2 instance
  • RDS endpoint — dùng CNAME thay thế
  • Non-AWS resource — Alias chỉ dành cho AWS resource

Khi nào dùng gì?

✅ Dùng Alias khi
  • Trỏ zone apex (example.com) đến AWS resource
  • Muốn miễn phí DNS query
  • Target là ELB, CloudFront, S3, Beanstalk, API GW
  • Muốn tự động health check evaluation
⚠️ Dùng CNAME khi
  • Target là non-AWS resource
  • Target là EC2 DNS name hoặc RDS endpoint
  • Cần custom TTL
  • Chỉ dùng cho subdomain (không phải zone apex)
08 · Nâng cao

Route 53 Resolver

Route 53 Resolver cho phép phân giải DNS giữa VPC và mạng on-premises (hoặc VPC khác) thông qua InboundOutbound Endpoints. Đây là thành phần quan trọng trong kiến trúc Hybrid DNS.

Mặc định trong VPC

Mỗi VPC có sẵn một DNS resolver tại địa chỉ VPC CIDR + 2 (ví dụ: VPC 10.0.0.0/16 → resolver tại 10.0.0.2). Resolver này tự động phân giải:

  • Private Hosted Zone records
  • EC2 private DNS names (ip-10-0-1-50.ec2.internal)
  • Public DNS names (qua Internet)

Inbound Endpoint

Cho phép DNS resolver từ on-premises forward query đến Route 53 Resolver trong VPC. Use case: on-premises server cần phân giải private hosted zone trong AWS.

Outbound Endpoint

Cho phép Route 53 Resolver forward query đến DNS server on-premises. Sử dụng Resolver Rules để xác định domain nào cần forward.

🏢 On-Premises DNS Server corp.internal 🖥️ App Servers 🗄️ Database Servers Direct Connect / VPN ☁️ AWS VPC Inbound Endpoint ENI: 10.0.1.10, 10.0.2.10 Outbound Endpoint + Resolver Rules Route 53 Private Hosted Zone EC2 Instances app.internal.aws query → ← forward Inbound: On-prem → AWS (phân giải private zone) Outbound: AWS → On-prem (forward corp.internal)

Resolver Rules

Resolver Rules xác định domain nào cần forward đến DNS server nào:

Rule TypeMô tảVí dụ
ForwardForward query đến DNS server chỉ địnhcorp.internal → 10.1.1.53
SystemDùng Route 53 Resolver mặc địnhamazonaws.com → Route 53
RecursiveForward đến Internet DNS (mặc định)Tất cả domain khác
💡 Chia sẻ Resolver Rules
Resolver Rules có thể chia sẻ qua AWS RAM (Resource Access Manager) cho các account khác trong AWS Organization. Giúp quản lý DNS tập trung cho multi-account.
09 · Bảo mật DNS

DNSSEC (DNS Security Extensions)

DNSSEC bảo vệ DNS khỏi tấn công man-in-the-middleDNS spoofing/cache poisoning bằng cách ký số (digitally sign) các DNS record. Client có thể xác minh rằng DNS response đến từ authoritative source và chưa bị thay đổi.

Cách DNSSEC hoạt động

  1. Zone Signing: Route 53 ký tất cả record trong hosted zone bằng private key (KSK - Key Signing Key)
  2. DNSKEY record: Public key được publish dưới dạng DNSKEY record
  3. DS record: Hash của public key được đăng ký tại parent zone (TLD)
  4. RRSIG record: Chữ ký số cho mỗi record set
  5. Validation: DNS resolver kiểm tra chữ ký → xác nhận tính toàn vẹn
Root Zone DS → .com trust .com TLD DS → example.com trust Route 53 example.com DNSKEY + RRSIG ✅ ✅ Validated DNS Resolver Chain of Trust: Root → TLD → Authoritative Zone → Validated Response

Bật DNSSEC trên Route 53

Quy trình bật DNSSEC
# Bước 1: Tạo KSK (Key Signing Key) trong AWS KMS
# - KMS key phải ở us-east-1
# - Key type: Asymmetric, ECC_NIST_P256
# - Key usage: Sign and verify

# Bước 2: Enable DNSSEC signing cho hosted zone
aws route53 enable-hosted-zone-dnssec \
  --hosted-zone-id Z1234567890

# Bước 3: Tạo DS record tại parent zone (TLD registrar)
# Route 53 cung cấp DS record value → nhập vào registrar

# Bước 4: Thiết lập CloudWatch Alarm cho DNSSECInternalFailure
# và DNSSECKeySigningKeysNeedingAction
⚠️ Lưu ý DNSSEC
  • KMS key cho DNSSEC phải ở us-east-1
  • Nên thiết lập CloudWatch Alarm để giám sát DNSSEC health
  • Khi tắt DNSSEC, phải xóa DS record tại registrar trước
  • Route 53 hỗ trợ DNSSEC cho public hosted zone (không hỗ trợ private)
10 · Visual Editor

Traffic Flow

Route 53 Traffic Flow là visual editor cho phép tạo các routing policy phức tạp bằng giao diện kéo-thả. Thay vì tạo từng record riêng lẻ, bạn thiết kế Traffic Policy dưới dạng decision tree.

Thành phần Traffic Flow

🗺️
Traffic Policy
Template định nghĩa routing logic. Có version control — tạo version mới khi thay đổi.
📌
Policy Record
Áp dụng traffic policy vào hosted zone cụ thể. Một policy có thể áp dụng cho nhiều zone.
🔀
Routing Rules
Kết hợp nhiều routing policy: Geolocation → Latency → Weighted → Failover.
app.example.com 🌍 Geolocation Rule Asia Europe Default ⚡ Latency Rule ap-southeast-1 ap-northeast-1 ⚖️ Weighted Rule eu-west-1 weight: 70 eu-central-1 weight: 30 🔄 Failover Rule us-east-1 ✅ us-west-2 ⏳

Chi phí Traffic Flow

Hạng mụcGiáGhi chú
Traffic PolicyMiễn phíTạo và lưu trữ policy miễn phí
Policy Record$50/policy record/thángMỗi lần áp dụng policy vào hosted zone
⚠️ Chi phí cao
$50/tháng cho mỗi policy record là khá đắt. Chỉ nên dùng Traffic Flow khi cần routing logic phức tạp (kết hợp nhiều policy). Với routing đơn giản, tạo record thủ công sẽ tiết kiệm hơn.
11 · Tham khảo

Các lỗi thường gặp & Best Practices

Lỗi thường gặp

1. DNS không phân giải sau khi tạo Hosted Zone

❌ Nguyên nhân
Chưa cập nhật NS record tại domain registrar. Khi tạo hosted zone mới, Route 53 cung cấp 4 NS record — bạn phải copy chúng vào registrar (GoDaddy, Namecheap...).

2. CNAME cho zone apex không hoạt động

❌ Nguyên nhân
CNAME không được phép tại zone apex (example.com) theo RFC. Dùng Alias record thay thế.

3. Health check luôn unhealthy

❌ Nguyên nhân phổ biến
  • Security Group / NACL chặn traffic từ Route 53 health checkers
  • Endpoint trả về HTTP status code khác 2xx hoặc 3xx
  • String matching không tìm thấy chuỗi trong 5120 bytes đầu tiên
  • Endpoint là private IP (health checker không thể truy cập)

4. DNS propagation chậm

⚠️ Giải pháp
TTL cũ vẫn đang được cache. Giảm TTL xuống 60s trước khi thay đổi record. Chờ TTL cũ hết hạn (tối đa = giá trị TTL cũ).

5. Private Hosted Zone không phân giải

❌ Checklist
  • VPC đã enable enableDnsHostnames = true?
  • VPC đã enable enableDnsSupport = true?
  • Private Hosted Zone đã associate với VPC?
  • EC2 instance có dùng VPC DNS resolver (CIDR+2)?

Best Practices

🎯
Dùng Alias thay CNAME
Khi target là AWS resource, luôn dùng Alias — miễn phí query, hỗ trợ zone apex, tự động health check.
💓
Luôn gắn Health Check
Với Weighted, Latency, Failover routing — luôn gắn health check để tự động loại bỏ unhealthy resource.
⏱️
TTL Strategy
TTL cao (300-86400s) cho record ổn định. Giảm TTL trước khi thay đổi. Alias record TTL tự động.
🔐
Bật DNSSEC
Bảo vệ domain khỏi DNS spoofing. Thiết lập CloudWatch Alarm giám sát DNSSEC health.
🌍
Default Record cho Geolocation
Luôn tạo default record khi dùng Geolocation routing để tránh "no answer" cho user không match.
📊
Giám sát với CloudWatch
Monitor health check status, DNS query volume, DNSSEC validation failures qua CloudWatch metrics.
🔒
Transfer Lock
Luôn bật Transfer Lock và auto-renew cho domain quan trọng. Bật Privacy Protection.
🏗️
Private Hosted Zone cho Internal
Dùng Private Hosted Zone cho internal service discovery thay vì hardcode IP address.

Giới hạn (Quotas) quan trọng

ResourceDefault LimitCó thể tăng?
Hosted zones / account500
Records / hosted zone10,000
Health checks / account200
Reusable delegation sets100Không
Traffic policies / account50
Policy records / traffic policy5
VPCs / private hosted zone300
12 · CLI Reference

AWS CLI Cheat Sheet

Tổng hợp các lệnh AWS CLI thường dùng nhất cho Route 53. Tất cả lệnh đều sử dụng aws route53 hoặc aws route53domains.

Hosted Zone

Quản lý Hosted Zone
# Liệt kê tất cả hosted zones
aws route53 list-hosted-zones

# Tạo public hosted zone
aws route53 create-hosted-zone \
  --name example.com \
  --caller-reference "unique-string-$(date +%s)"

# Tạo private hosted zone
aws route53 create-hosted-zone \
  --name internal.corp \
  --caller-reference "unique-string-$(date +%s)" \
  --vpc VPCRegion=ap-southeast-1,VPCId=vpc-0123456789abcdef0 \
  --hosted-zone-config PrivateZone=true

# Xem chi tiết hosted zone
aws route53 get-hosted-zone --id Z1234567890

# Xóa hosted zone (phải xóa hết record trước)
aws route53 delete-hosted-zone --id Z1234567890

DNS Records

Quản lý DNS Records
# Liệt kê records trong hosted zone
aws route53 list-resource-record-sets \
  --hosted-zone-id Z1234567890

# Tạo/Cập nhật A record
aws route53 change-resource-record-sets \
  --hosted-zone-id Z1234567890 \
  --change-batch '{
    "Changes": [{
      "Action": "UPSERT",
      "ResourceRecordSet": {
        "Name": "app.example.com",
        "Type": "A",
        "TTL": 300,
        "ResourceRecords": [{"Value": "54.239.28.85"}]
      }
    }]
  }'

# Tạo Alias record trỏ đến ALB
aws route53 change-resource-record-sets \
  --hosted-zone-id Z1234567890 \
  --change-batch '{
    "Changes": [{
      "Action": "UPSERT",
      "ResourceRecordSet": {
        "Name": "example.com",
        "Type": "A",
        "AliasTarget": {
          "HostedZoneId": "Z35SXDOTRQ7X7K",
          "DNSName": "my-alb-123456.us-east-1.elb.amazonaws.com",
          "EvaluateTargetHealth": true
        }
      }
    }]
  }'

# Tạo Weighted routing record
aws route53 change-resource-record-sets \
  --hosted-zone-id Z1234567890 \
  --change-batch '{
    "Changes": [{
      "Action": "UPSERT",
      "ResourceRecordSet": {
        "Name": "app.example.com",
        "Type": "A",
        "SetIdentifier": "us-east-1-v2",
        "Weight": 70,
        "TTL": 60,
        "ResourceRecords": [{"Value": "11.22.33.44"}]
      }
    }]
  }'

# Xóa record
aws route53 change-resource-record-sets \
  --hosted-zone-id Z1234567890 \
  --change-batch '{
    "Changes": [{
      "Action": "DELETE",
      "ResourceRecordSet": {
        "Name": "old.example.com",
        "Type": "A",
        "TTL": 300,
        "ResourceRecords": [{"Value": "1.2.3.4"}]
      }
    }]
  }'

Health Checks

Quản lý Health Checks
# Liệt kê health checks
aws route53 list-health-checks

# Tạo HTTP health check
aws route53 create-health-check \
  --caller-reference "hc-$(date +%s)" \
  --health-check-config '{
    "Type": "HTTP",
    "FullyQualifiedDomainName": "app.example.com",
    "Port": 80,
    "ResourcePath": "/health",
    "RequestInterval": 30,
    "FailureThreshold": 3
  }'

# Xem trạng thái health check
aws route53 get-health-check-status \
  --health-check-id abcdef12-3456-7890

# Xóa health check
aws route53 delete-health-check \
  --health-check-id abcdef12-3456-7890

Domain Management

Quản lý Domain
# Liệt kê domains đã đăng ký
aws route53domains list-domains

# Kiểm tra domain khả dụng
aws route53domains check-domain-availability \
  --domain-name example.com

# Xem chi tiết domain
aws route53domains get-domain-detail \
  --domain-name example.com

# Bật/tắt Transfer Lock
aws route53domains enable-domain-transfer-lock \
  --domain-name example.com

aws route53domains disable-domain-transfer-lock \
  --domain-name example.com

# Bật auto-renew
aws route53domains enable-domain-auto-renew \
  --domain-name example.com

Resolver

Route 53 Resolver
# Tạo Resolver Inbound Endpoint
aws route53resolver create-resolver-endpoint \
  --creator-request-id "inbound-$(date +%s)" \
  --name "inbound-endpoint" \
  --security-group-ids sg-0123456789abcdef0 \
  --direction INBOUND \
  --ip-addresses SubnetId=subnet-aaa,Ip=10.0.1.10 \
                 SubnetId=subnet-bbb,Ip=10.0.2.10

# Tạo Resolver Rule (Forward)
aws route53resolver create-resolver-rule \
  --creator-request-id "rule-$(date +%s)" \
  --name "forward-corp-internal" \
  --rule-type FORWARD \
  --domain-name "corp.internal" \
  --resolver-endpoint-id rslvr-out-abcdef1234567890 \
  --target-ips Ip=10.1.1.53,Port=53

# Liệt kê resolver endpoints
aws route53resolver list-resolver-endpoints

# Liệt kê resolver rules
aws route53resolver list-resolver-rules

Kiểm tra DNS (Debug)

Debug DNS — Công cụ hữu ích
# Test DNS resolution bằng Route 53 test tool
aws route53 test-dns-answer \
  --hosted-zone-id Z1234567890 \
  --record-name app.example.com \
  --record-type A

# Dùng dig để kiểm tra DNS
dig app.example.com A
dig app.example.com A +short
dig @ns-123.awsdns-45.com app.example.com A

# Kiểm tra NS record
dig example.com NS +short

# Kiểm tra DNSSEC
dig example.com DNSKEY +dnssec
dig example.com A +dnssec

# Dùng nslookup
nslookup app.example.com
nslookup -type=MX example.com

# Kiểm tra propagation
# Dùng https://www.whatsmydns.net/ để check toàn cầu