# AWS - Route 53 深入細節
# Route 53
Route 53 是 AWS 的可擴展 DNS 與域名註冊服務,提供公開 / 私有 DNS、豐富的路由策略、健康檢查、Query Logging、Resolver(混合 DNS)、DNS 安全(DNSSEC、Firewall)與與其他 AWS 服務深度整合。
# 核心元件
- Hosted Zone
- Public Hosted Zone(公開 DNS,Internet 可解析)
- Private Hosted Zone(綁 VPC,僅 VPC 內解析)
- Record Set(Record)
- A/AAAA/CNAME/TXT/MX/SRV/NS/CAA 等
- Alias record(對 AWS 資源的特殊記法,可直接指向 ELB、CloudFront、S3 website、API GW、VPC Interface Endpoint 等;零費用別名查詢)
- Health Check
- 主動檢測 endpoint(HTTP (S)/TCP/HTTPS)並影響 failover/latency decisions。
- Resolver
- Route 53 Resolver(on-prem ↔ VPC 的 DNS 中介)包含 Inbound/Outbound Endpoints、Rules、Firewall。
- Traffic Flow / Policy
- 視覺化路由編排器,建立複雜策略。
- Domain registration
- Route 53 可註冊域名(WHOIS、DNS 管理整合)。
- Query Logging / Metrics
- 將 DNS query 日誌送到 CloudWatch Logs / S3 / Kinesis。
# 路由策略
- Simple:最基本,一個 name 對應一個或多個資源(輪詢由 resolver 決定);適合單一地區服務。
- Weighted:按權重分流;做 A/B testing、漸進式部署(70/30)或流量分配。
- Latency-based:依客戶到區域延遲選擇最小 latency 的資源;用於全球延遲優化。
- Failover (Active-Passive):搭配 Health Check;Primary 健康時回 Primary,否則回 Secondary;常用於 DR。
- Geolocation:依使用者來源國家 / 地區回不同 IP;適用內容地域化或法律合規分流。
- Geoproximity (Traffic Flow):依地理距離與權重調整流量(需 Traffic Flow)。
- Multi-value answer:類似 RR-set 回傳多個 A/AAAA 並進行基本健康檢查(可返回多個健康的 IP,適合簡易客戶端側 load balancing)。
- Failover + Weighted 混合:可複合使用(例如先 Weighted 再 Failover)。
# Alias vs CNAME
- Alias record
- AWS 原生:可指向 ELB/CloudFront/API GW/S3/Elastic Beanstalk 等;在 apex domain(裸域)使用,且不額外收 DNS 查詢費(對 AWS 內資源有特殊處理)。
- CNAME
- 指向另一個域名;不能用於 apex(裸域);會造成額外查詢 / 延遲。
# Route 53 Resolver(混合雲 DNS)
- Inbound Endpoints:讓 on-prem 或 partner DNS 對 VPC 的私有 Hosted Zone 做查詢(on-prem → VPC)。
- Outbound Endpoints:讓 VPC 中的資源能向 on-prem DNS 轉發查詢(VPC → on-prem)。
- Rules:
- Forwarding rules(指定某些 domain forward 到指定 IP /on-prem DNS)
- System rules / Conditional forwarding(針對特定 domain 做不同處理)
- Resolver DNS Firewall:可過濾惡意 domain、阻擋或記錄(與 rules 結合)。
- Use case:當企業有內網 AD DNS 或需要解決 split-horizon scenarios(同名域 public/private 不同回應)。
# 健檢 (Health Check) 與故障切換
- Health checks 可是 global(從多個 AWS edge location 檢測),支援 HTTP/HTTPS/TCP、字符串匹配、門檻設定。
- 與 Route 53 Failover records 結合,實現 Active-Passive DR;也可用於 Multi-region failover:Primary region down → 換到 Secondary region。
- 注意:若使用 ELB/ALB,ALB 自身也可做健康檢查;Route 53 health check 避免 ping 自身(循環依賴)。
# 整合
- CloudFront:使用 Alias 指向 CloudFront distribution(最佳做法為 apex 使用 alias)。
- ELB/ALB/NLB:用 Alias 指向 load balancer 的 DNS name(避免 CNAME)。
- S3 static website:可 Alias 指向 S3 website endpoint(但 CloudFront 更常見)。
- API Gateway:HTTP API/REST API 可使用 Custom Domain + Route 53 alias。
- VPC Endpoint (Interface):Private hosted zone + resolver rules 幫助在 VPC 內解析服務名。
- AWS Global Accelerator:通常一起用來提升 TCP/UDP 全局性能,Accelerator 為 IP 層,Route 53 控制域名解析。
# 日誌、監控、計費
- Query logging:可把 query logs 寫到 S3 / CloudWatch Logs / Kinesis Firehose,便於稽核與安全分析。
- CloudWatch metrics:DNS 查詢次數、健康檢查狀態等。
- Costs:付費項目包括:Hosted zones(每 zone / 月)、查詢次數(按百万次)、健康檢查(每個檢查 / 每月),Query Logging 也有 S3/CloudWatch/Firehose 的費用。
- 實務:高流量網站考慮 CloudFront + Geo/Latency routing 以降低直接 DNS 查詢成本。
# DNS 安全
- DNSSEC:可用於防止 DNS Spoofing(簽名 zone,驗證 response);Route 53 支援 DNSSEC(註冊與 hosted zone 的功能需確認目前支援哪種模式,實務上啟用需設定 DS record at registrar)。
- Resolver DNS Firewall:封鎖惡意 domain 或強制阻擋。
- IAM 控制:把 DNS 管理(建立 / 變更 hosted zone/records)權限最小化,使用 MFA、CloudTrail 審計 DNS 變更。
- Query Logging + SIEM:把 query logs 串進 SIEM 偵測 data-exfiltration patterns(DNS as C2 channel)。
# Private Hosted Zone 與 Split Horizon
- 私有 zone 綁 VPC(可跨多個 VPC);適合 microservice internal names。
- Split-horizon:可有同一 domain 的 public hosted zone 與 private hosted zone(public Internet vs VPC 內不同行為)。注意:同一 VPC 若有 private hosted zone,會優先解析 private zone。
- 當做 Multi-account:使用 Cross-account private hosted zone association 或透過中央化管理(Account A 建 zone,分享給 Account B)。