跳至主要內容
ESC
GCP 核心服務 — 第 9/10 篇

GCP-114:Cloud DNS 入門——全託管 DNS 服務完全指南

GCP-114

前言

每個上線的服務都離不開 DNS。Cloud DNS 是 GCP 的全託管權威 DNS 服務,跑在 Google 的全球 Anycast 網路上,而且開出業界最高的 100% 可用性 SLA

這是 GCP 入門系列的第 14 課,我們來把 Cloud DNS 的核心概念和實際操作一次搞懂。


什麼是 Cloud DNS?

Cloud DNS 是 GCP 的全託管權威 DNS 服務,負責將域名(如 example.com)解析為 IP 位址:

使用者輸入 www.example.com


Google 全球 Anycast DNS 網路


Cloud DNS 查詢 Zone 記錄


回傳 IP:203.0.113.1

核心特性

  • 100% SLA——所有 Google Cloud 服務中最高的可用性保證
  • 全球 Anycast 網路——自動路由到最近的節點以降低查詢延遲
  • 自動擴展——支援數百萬 DNS Zone 和記錄
  • 完整 API——Console、gcloud CLI、REST API、Terraform 全支援

Zone 類型

Cloud DNS 有好幾種 Zone 類型,各自對應不同的使用情境:

Zone 類型說明適用場景
Public Zone對外公開的 DNS 記錄網站、API 對外服務
Private Zone僅限指定 VPC 內部存取內部服務、微服務
Forwarding Zone將查詢轉發到指定 DNS 伺服器混合雲連接地端 DNS
Peering Zone跨 VPC 的 DNS 解析Shared VPC、跨專案
Managed Reverse LookupPTR 記錄(IP → 域名)反向 DNS 查詢

建立 Zone

# 建立 Public Zone
gcloud dns managed-zones create my-zone \
  --dns-name="example.com." \
  --description="Production zone" \
  --visibility=public

# 建立 Private Zone(綁定到 VPC)
gcloud dns managed-zones create my-private-zone \
  --dns-name="internal.example.com." \
  --description="Internal services" \
  --visibility=private \
  --networks=my-vpc-network

DNS 記錄管理

支援的記錄類型

記錄類型說明範例
AIPv4 位址203.0.113.1
AAAAIPv6 位址2001:db8::1
CNAMEDNS 別名www → example.com
MX郵件伺服器10 mail.example.com
TXT文字記錄SPF、DKIM 驗證
SRV服務位置主機 + 埠號
CAACA 授權限制發行 SSL 的 CA
NS名稱伺服器委派子域名
PTR反向解析IP → 域名

使用 Transaction 管理記錄

Cloud DNS 使用 Transaction 確保記錄變更的原子性:

# 新增 A 記錄
gcloud dns record-sets transaction start --zone=my-zone
gcloud dns record-sets transaction add "203.0.113.1" \
  --name="www.example.com." \
  --ttl=300 \
  --type=A \
  --zone=my-zone
gcloud dns record-sets transaction execute --zone=my-zone

# 新增 MX 記錄
gcloud dns record-sets transaction start --zone=my-zone
gcloud dns record-sets transaction add "10 mail.example.com." \
  --name="example.com." \
  --ttl=300 \
  --type=MX \
  --zone=my-zone
gcloud dns record-sets transaction execute --zone=my-zone

# 列出所有記錄
gcloud dns record-sets list --zone=my-zone

DNSSEC

DNSSEC(DNS Security Extensions)防止 DNS 欺騙和快取中毒攻擊。Cloud DNS 提供全託管 DNSSEC

# 建立時啟用 DNSSEC
gcloud dns managed-zones create secure-zone \
  --dns-name="secure.example.com." \
  --description="DNSSEC-enabled zone" \
  --dnssec-state=on

# 對既有 Zone 啟用 DNSSEC
gcloud dns managed-zones update my-zone --dnssec-state=on

# 取得 DS 記錄(需在域名註冊商設定)
gcloud dns dns-keys list \
  --filter='type=keySigning' \
  --format='value(ds_record())' \
  --zone=my-zone

DNSSEC 金鑰管理

  • ZSK(Zone Signing Key):自動建立和輪換
  • KSK(Key Signing Key):自動建立,但輪換需手動更新域名註冊商的 DS 記錄
  • 支援 ECDSAP256SHA256(建議)、RSASHA256 等演算法
  • 支援 NSEC 和 NSEC3 否定存在證明
  • 啟用 DNSSEC 不額外收費

Split-Horizon DNS

Split-Horizon DNS 讓同一個域名在內部和外部回傳不同 IP

外部使用者 → Public Zone → 203.0.113.1(外部 Load Balancer)

內部 VM    → Private Zone → 10.128.0.5(內部 Load Balancer)

設定方式

  1. 建立 example.comPublic Zone,指向外部 IP
  2. 建立 example.comPrivate Zone,綁定 VPC,指向內部 IP
  3. VPC 內的查詢自動走 Private Zone(Private Zone 優先於 Public Zone)
# Public Zone(對外)
gcloud dns managed-zones create example-public \
  --dns-name="example.com." \
  --visibility=public

# Private Zone(對內)
gcloud dns managed-zones create example-private \
  --dns-name="example.com." \
  --visibility=private \
  --networks=my-vpc

DNS 路由策略

Cloud DNS 可以直接在 DNS 層級做流量導引:

策略說明適用場景
加權輪詢(WRR)按權重分配流量金絲雀部署、A/B 測試
地理位置(Geolocation)按來源地理位置路由多區域服務、就近存取
故障轉移(Failover)主要/備用自動切換高可用架構

加權輪詢範例

# 90% 流量到 v1(203.0.113.1),10% 到 v2(203.0.113.2)(金絲雀部署)
gcloud dns record-sets create www.example.com. \
  --zone=my-zone \
  --type=A \
  --ttl=300 \
  --routing-policy-type=WRR \
  --routing-policy-data="0.9=203.0.113.1;0.1=203.0.113.2"

Response Policy

Response Policy 可以在 DNS 層級覆寫解析結果:

# 建立 Response Policy
gcloud dns response-policies create security-policy \
  --networks=my-vpc \
  --description="Block malicious domains"

# 封鎖惡意域名(回傳 0.0.0.0)
gcloud dns response-policies rules create block-malware \
  --response-policy=security-policy \
  --dns-name="malicious-site.com." \
  --local-data='name=malicious-site.com.,type=A,ttl=300,rrdatas=0.0.0.0'

# 豁免特定域名(passthru)
gcloud dns response-policies rules create allow-safe \
  --response-policy=security-policy \
  --dns-name="safe-site.com." \
  --behavior=passthru

常見用途

  • 安全封鎖:阻擋已知惡意域名
  • VPC Service Controls:重導 *.googleapis.com 到受限 VIP
  • 內部服務覆寫:自訂特定服務的 DNS 解析

限制:每個 VPC 只能綁定一個 Response Policy


DNS Server Policy

Server Policy 控制 VPC 內的 DNS 行為:

# 啟用 Inbound Forwarding + 查詢日誌
gcloud dns policies create my-policy \
  --networks=my-vpc \
  --enable-inbound-forwarding \
  --enable-logging

# 設定 Alternative Name Servers(轉發到地端 DNS)
gcloud dns policies create outbound-policy \
  --networks=my-vpc \
  --alternative-name-servers="10.0.0.53,10.0.0.54"
功能說明
Inbound Forwarding讓地端 DNS 可以查詢 Cloud DNS(建立進入點 IP)
Outbound Forwarding將所有 DNS 查詢轉發到指定的名稱伺服器
Query Logging記錄每一筆 DNS 查詢到 Cloud Logging

與其他 GCP 服務整合

服務整合方式
GKECloud DNS 可取代 kube-dns 作為叢集 DNS
Cloud Run自訂域名映射到 Cloud Run 服務
Load Balancer路由策略搭配健康檢查做故障轉移
Shared VPCCross-Project Binding Zone 支援跨專案
Service Directory服務探索,統一微服務端點註冊

定價

Zone 費用

層級費用(每 Zone / 月)
前 25 個 Zone$0.20
第 26~10,000 個$0.10
超過 10,000 個$0.03

查詢費用

類型層級費用(每百萬次查詢)
標準查詢前 10 億次 / 月$0.40
標準查詢超過 10 億次 / 月$0.20
路由策略查詢前 10 億次 / 月$0.70
路由策略查詢超過 10 億次 / 月$0.35

使用 WRR、Geolocation 或 Failover 路由策略的查詢,費用較標準查詢高。

成本估算

10 個 Zone + 1 億次查詢 / 月:

  • Zone:10 × $0.20 = $2.00
  • 查詢:100 × $0.40 = $40.00
  • 合計:~$42 / 月

Cloud DNS 沒有免費層,但 GCP 新帳號有 $300 免費試用額度可折抵。


配額與限制

資源預設限制
每個專案的 Zone 數量10,000
每個 Zone 的記錄數量10,000
每個網路的 Peering Zone1,000
每個 VPC 的 Response Policy1
每個 Forwarding Zone 的轉發目標50

ACE 考試重點整理

必背知識點

  1. Cloud DNS 是全託管權威 DNS 服務,跑在 Google Anycast 網路上
  2. 100% SLA——GCP 所有服務中最高
  3. Private Zone 優先於 Public Zone(VPC 內查詢)
  4. Split-Horizon DNS:同一域名內外回傳不同 IP
  5. DNSSEC:全自動管理 KSK/ZSK 輪換
  6. Response Policy:DNS 層級封鎖惡意域名
  7. DNS 路由策略:WRR(加權)、Geolocation(地理)、Failover(故障轉移)

常見陷阱題

Q:需要讓同一域名在公司內部和外部解析到不同 IP,怎麼做? A:Split-Horizon DNS。建立同名的 Public Zone 和 Private Zone,VPC 內查詢自動走 Private Zone。

Q:Cloud DNS 的 SLA 是多少? A:100%。這是 GCP 所有服務中最高的 SLA。

Q:如何在 DNS 層級阻擋員工存取惡意網站? A:使用 Response Policy,建立規則將惡意域名導向 0.0.0.0。

Q:地端伺服器需要查詢 Cloud DNS 的 Private Zone,怎麼設定? A:建立 DNS Server Policy 並啟用 Inbound Forwarding,建立進入點 IP 供地端 DNS 轉發查詢。

Q:Cloud DNS 和 Cloud Domains 有什麼不同? A:Cloud DNS 是 DNS 代管服務(管理 DNS 記錄)。Cloud Domains 是域名註冊服務(購買和管理域名)。兩者是獨立的服務,通常搭配使用。


總結

Cloud DNS 就是 GCP 幫你全託管的 DNS,把幾個重點收一下:

  • 定位:全託管權威 DNS,100% SLA,全球 Anycast 網路
  • Zone 類型:Public(對外)、Private(對內)、Forwarding(混合雲)、Peering(跨 VPC)
  • 安全:DNSSEC 自動管理、Response Policy 封鎖惡意域名
  • 路由:WRR、Geolocation、Failover 三種策略
  • Split-Horizon:同一域名內外不同解析
  • 定價:$0.20 / Zone / 月 + $0.40 / 百萬查詢

下一課 ACE-215:GCP 基礎架構即代碼(IaC)策略,學習 Terraform、Infrastructure Manager 和 Config Connector 的實戰應用。

GCP 核心服務 — 9/10 完成 查看系列全覽 →

留言討論

徽章解鎖!