AWS Route53 DNS 服務設定與管理

深入了解 AWS Route53 DNS 服務,包含託管區域建立、DNS 記錄類型說明、路由政策設定,以及與其他 AWS 服務的整合應用。

前言

Amazon Route 53 是 AWS 提供的高可用性、高擴展性的雲端 DNS(Domain Name System)網域名稱系統服務。它將使用者對網域的請求轉譯為 IP 位址,讓使用者能夠透過易於記憶的網域名稱存取您的應用程式和服務。

本文將帶您了解 Route 53 的核心功能,包括託管區域的建立、各種 DNS 記錄類型、路由政策,以及如何與其他 AWS 服務進行整合。


Route53 簡介

什麼是 Route 53?

Route 53 是 AWS 的 DNS 服務,名稱來源於 DNS 協定使用的 TCP/UDP 連接埠 53。它提供三個主要功能:

  1. 網域註冊:直接在 AWS 註冊新網域
  2. DNS 路由:將網域名稱解析到正確的 IP 位址或 AWS 資源
  3. 健康檢查:監控資源的可用性並進行故障轉移

Route 53 的主要特點

  • 高可用性:使用全球分散的 DNS 伺服器,提供 100% 可用性 SLA
  • 快速傳播:DNS 變更通常在 60 秒內全球傳播
  • 整合 AWS 服務:與 ELB、CloudFront、S3 等服務無縫整合
  • 彈性路由:支援多種路由政策滿足不同需求
  • DNSSEC 支援:提供網域名稱系統安全延伸

DNS 基本概念

術語說明
Domain Name網域名稱,如 example.com
DNS RecordDNS 記錄,定義如何回應 DNS 查詢
Hosted Zone託管區域,包含網域的所有 DNS 記錄
Name Server名稱伺服器,負責回應 DNS 查詢
TTLTime To Live,DNS 記錄的快取時間

託管區域建立

什麼是託管區域?

託管區域(Hosted Zone)是包含網域 DNS 記錄的容器。當您在 Route 53 中建立託管區域時,它會自動建立 NS(名稱伺服器)和 SOA(權威起始)記錄。

託管區域類型

  1. 公有託管區域:用於在網際網路上路由流量
  2. 私有託管區域:用於在 VPC 內部路由流量

建立公有託管區域

  1. 登入 AWS 管理主控台
  2. 進入 Route 53 服務
  3. 在左側選單點擊「託管區域」
  4. 點擊「建立託管區域」
  5. 填寫設定:
    • 網域名稱:輸入您的網域名稱(如 example.com)
    • 類型:選擇「公有託管區域」
    • 描述(選填):為區域添加說明
  6. 點擊「建立託管區域」

建立私有託管區域

私有託管區域用於 VPC 內部的 DNS 解析:

  1. 在「建立託管區域」頁面
  2. 類型選擇「私有託管區域」
  3. 在「VPC」區段選擇要關聯的 VPC
  4. 可選擇多個 VPC 進行關聯
  5. 點擊「建立託管區域」

設定網域名稱伺服器

如果您的網域是在其他註冊商註冊的,需要更新 NS 記錄:

  1. 在 Route 53 中檢視託管區域的 NS 記錄
  2. 複製四個名稱伺服器位址
  3. 到您的網域註冊商更新 NS 記錄
1
2
3
4
5
# Route 53 名稱伺服器範例
ns-123.awsdns-45.com
ns-678.awsdns-90.net
ns-111.awsdns-22.org
ns-333.awsdns-44.co.uk

注意:NS 記錄變更可能需要 24-48 小時才能完全傳播。


記錄類型說明

Route 53 支援多種 DNS 記錄類型,以下是最常用的記錄類型說明:

A 記錄(Address Record)

將網域名稱對應到 IPv4 位址。

1
2
example.com    A    192.0.2.1
www.example.com    A    192.0.2.1

AAAA 記錄

將網域名稱對應到 IPv6 位址。

1
example.com    AAAA    2001:0db8:85a3:0000:0000:8a2e:0370:7334

CNAME 記錄(Canonical Name)

將一個網域名稱別名指向另一個網域名稱。

1
2
www.example.com    CNAME    example.com
blog.example.com    CNAME    myblog.wordpress.com

限制:CNAME 記錄不能用於區域頂點(Zone Apex,如 example.com),只能用於子網域。

Alias 記錄(別名記錄)

Route 53 特有的記錄類型,可將網域指向 AWS 資源,且可用於區域頂點。

1
2
example.com    Alias    d123456.cloudfront.net
api.example.com    Alias    my-alb-123456.us-east-1.elb.amazonaws.com

Alias vs CNAME 比較

特性AliasCNAME
區域頂點支援
AWS 資源整合原生支援需額外設定
查詢費用免費(指向 AWS 資源)標準費用
回應速度更快需額外 DNS 查詢

MX 記錄(Mail Exchange)

指定處理電子郵件的郵件伺服器。

1
2
example.com    MX    10 mail1.example.com
example.com    MX    20 mail2.example.com

數字代表優先順序,數字越小優先順序越高。

TXT 記錄

儲存文字資訊,常用於網域驗證和 SPF/DKIM 設定。

1
2
example.com    TXT    "v=spf1 include:_spf.google.com ~all"
_dmarc.example.com    TXT    "v=DMARC1; p=reject; rua=mailto:admin@example.com"

NS 記錄(Name Server)

指定網域的權威名稱伺服器。

1
example.com    NS    ns-123.awsdns-45.com

SOA 記錄(Start of Authority)

包含區域的管理資訊,Route 53 自動建立和管理。

建立 DNS 記錄

  1. 選擇託管區域
  2. 點擊「建立記錄」
  3. 填寫記錄詳細資訊:
    • 記錄名稱:子網域名稱(如 www)
    • 記錄類型:選擇適當的類型
    • :目標 IP 或網域
    • TTL:快取時間(秒)
    • 路由政策:選擇路由策略
  4. 點擊「建立記錄」

路由政策

Route 53 提供多種路由政策,讓您可以根據不同需求設定 DNS 解析行為。

簡單路由(Simple Routing)

最基本的路由政策,將流量導向單一資源。

使用場景:單一 Web 伺服器或資源

1
www.example.com -> 192.0.2.1

如果記錄包含多個值,Route 53 會隨機回傳所有值。

加權路由(Weighted Routing)

根據指定的權重比例分配流量到不同資源。

使用場景

  • A/B 測試
  • 藍綠部署
  • 逐步遷移
1
2
3
# 範例:70% 流量到舊伺服器,30% 到新伺服器
www.example.com    A    192.0.2.1    Weight: 70
www.example.com    A    192.0.2.2    Weight: 30

延遲路由(Latency-based Routing)

根據使用者到 AWS 區域的網路延遲,將流量導向延遲最低的資源。

使用場景:全球部署的應用程式,需要最佳效能

1
2
3
# 範例:根據延遲自動選擇區域
www.example.com -> us-east-1 (東岸使用者)
www.example.com -> ap-northeast-1 (亞太使用者)

故障轉移路由(Failover Routing)

設定主要和備用資源,當主要資源不健康時自動切換到備用資源。

使用場景

  • 高可用性架構
  • 災難復原
1
2
3
4
5
# 主要資源
www.example.com    A    192.0.2.1    Failover: Primary

# 備用資源
www.example.com    A    192.0.2.2    Failover: Secondary

需要搭配健康檢查使用。

地理位置路由(Geolocation Routing)

根據使用者的地理位置(國家、洲或美國各州)導向不同資源。

使用場景

  • 依地區顯示不同內容
  • 符合資料主權法規
  • 限制特定地區存取
1
2
3
4
5
6
7
8
# 台灣使用者導向亞太伺服器
www.example.com -> Taiwan -> ap-northeast-1

# 美國使用者導向美國伺服器
www.example.com -> United States -> us-east-1

# 預設(其他地區)
www.example.com -> Default -> eu-west-1

地理接近路由(Geoproximity Routing)

根據資源的地理位置和偏差設定來路由流量。可透過偏差值擴大或縮小資源的服務範圍。

使用場景:需要微調流量分配的全球部署

需要使用 Route 53 Traffic Flow 功能。

多值回應路由(Multivalue Answer Routing)

回傳多個健康的資源 IP,類似簡單路由但具有健康檢查功能。

使用場景:需要簡單負載平衡且具備健康檢查

1
2
3
4
# 最多回傳 8 個健康的 IP
www.example.com    A    192.0.2.1    Health Check: Enabled
www.example.com    A    192.0.2.2    Health Check: Enabled
www.example.com    A    192.0.2.3    Health Check: Enabled

IP 型路由(IP-based Routing)

根據使用者的來源 IP 位址範圍路由流量。

使用場景

  • 根據 ISP 優化路由
  • 企業內部流量管理

路由政策比較表

路由政策主要用途健康檢查
簡單路由單一資源不支援
加權路由流量分配比例支援
延遲路由最低延遲支援
故障轉移高可用性必須
地理位置依地區路由支援
地理接近微調地理分配支援
多值回應簡單負載平衡支援
IP 型依來源 IP支援

與其他 AWS 服務整合

Route 53 與眾多 AWS 服務無縫整合,以下是常見的整合方式:

整合 Elastic Load Balancing (ELB)

將網域指向 Application Load Balancer 或 Network Load Balancer。

  1. 在託管區域中建立記錄
  2. 選擇記錄類型為「A」或「AAAA」
  3. 開啟「別名」
  4. 路由流量至:選擇「Application/Classic Load Balancer 的別名」
  5. 選擇區域和 ALB
1
api.example.com -> Alias -> my-alb.us-east-1.elb.amazonaws.com

整合 Amazon CloudFront

將網域指向 CloudFront 發行版,提供全球 CDN 加速。

  1. 建立別名記錄
  2. 路由流量至:選擇「CloudFront 分發的別名」
  3. 選擇您的 CloudFront 發行版
1
cdn.example.com -> Alias -> d123456.cloudfront.net

注意:需要在 CloudFront 中設定替代網域名稱(CNAME)並配置 SSL 憑證。

整合 Amazon S3

將網域指向 S3 靜態網站託管。

前提條件

  • S3 儲存貯體名稱必須與網域名稱相同
  • 儲存貯體必須啟用靜態網站託管
  1. 建立別名記錄
  2. 路由流量至:選擇「S3 網站端點的別名」
  3. 選擇區域和儲存貯體
1
www.example.com -> Alias -> www.example.com.s3-website-us-east-1.amazonaws.com

整合 Amazon API Gateway

將自訂網域指向 API Gateway 端點。

  1. 在 API Gateway 中設定自訂網域名稱
  2. 在 Route 53 建立別名記錄
  3. 指向 API Gateway 的區域端點
1
api.example.com -> Alias -> d-abcd1234.execute-api.us-east-1.amazonaws.com

整合 EC2 執行個體

直接將網域指向 EC2 執行個體的公有 IP 或 Elastic IP。

  1. 建立 A 記錄
  2. 輸入 EC2 執行個體的公有 IP 位址
1
server.example.com    A    54.123.45.67

建議:使用 Elastic IP 確保 IP 位址不會在執行個體停止後變更。

整合 Amazon RDS

雖然 RDS 不能直接使用別名記錄,但可以使用 CNAME 記錄。

1
db.example.com    CNAME    mydb.abc123.us-east-1.rds.amazonaws.com

健康檢查與 CloudWatch 整合

Route 53 健康檢查可與 CloudWatch 整合,實現監控和警示。

  1. 建立健康檢查:

    • 在 Route 53 選擇「健康檢查」
    • 點擊「建立健康檢查」
    • 設定端點、協定、連接埠和路徑
  2. 設定 CloudWatch 警示:

    • 健康檢查會自動建立 CloudWatch 指標
    • 可設定警示在健康狀態變更時通知
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 使用 AWS CLI 建立健康檢查
aws route53 create-health-check --caller-reference $(date +%s) --health-check-config '{
  "IPAddress": "192.0.2.1",
  "Port": 443,
  "Type": "HTTPS",
  "ResourcePath": "/health",
  "FullyQualifiedDomainName": "example.com",
  "RequestInterval": 30,
  "FailureThreshold": 3
}'

使用 AWS CLI 管理 Route 53

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# 列出所有託管區域
aws route53 list-hosted-zones

# 列出特定託管區域的記錄
aws route53 list-resource-record-sets --hosted-zone-id Z1234567890

# 建立/更新 DNS 記錄
aws route53 change-resource-record-sets --hosted-zone-id Z1234567890 --change-batch '{
  "Changes": [{
    "Action": "UPSERT",
    "ResourceRecordSet": {
      "Name": "www.example.com",
      "Type": "A",
      "TTL": 300,
      "ResourceRecords": [{"Value": "192.0.2.1"}]
    }
  }]
}'

# 檢查變更狀態
aws route53 get-change --id /change/C1234567890

最佳實務

安全性建議

  1. 啟用 DNSSEC:防止 DNS 欺騙攻擊
  2. 使用 IAM 政策:限制對 Route 53 資源的存取
  3. 啟用查詢記錄:記錄 DNS 查詢以便稽核
  4. 定期審查記錄:移除不需要的 DNS 記錄

效能優化

  1. 適當設定 TTL

    • 穩定服務:較長 TTL(3600 秒或更長)
    • 頻繁變更:較短 TTL(60-300 秒)
  2. 使用別名記錄:指向 AWS 資源時優先使用別名記錄

  3. 善用健康檢查:確保流量只導向健康的資源

成本優化

  1. 整合託管區域:相關網域使用同一託管區域
  2. 使用別名記錄:查詢 AWS 資源時免費
  3. 合理設定健康檢查間隔:根據需求選擇適當的檢查頻率

總結

本文介紹了 AWS Route 53 DNS 服務的核心功能,包括:

  • Route 53 的基本概念和主要特點
  • 如何建立和管理託管區域
  • 各種 DNS 記錄類型及其使用場景
  • 多種路由政策的應用
  • 與其他 AWS 服務的整合方式

Route 53 是 AWS 雲端架構中的重要組件,掌握其設定與管理技巧,能幫助您建立高可用性、全球化的應用程式架構。

參考資源

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy