# 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)。
更新於