1. 簡介
本程式碼研究室將引導您設定 Cloud DNS 傳出轉送區域,並使用完整網域名稱 (FQDN) 做為轉送目標。這項功能可讓您將 DNS 流量導向從 DNS 名稱解析的 IP 位址,而非在轉送區域設定中硬式編碼 IP 位址。當後端 DNS 解析器 IP 位址變更時,這項功能就特別實用,因為您可以更新 FQDN 的 DNS 記錄,Cloud DNS 會自動擷取變更。
完成本程式碼研究室後,您將能夠設定使用下列項目的 Cloud DNS 轉送區域:
- 與含有 A/AAAA 記錄的不公開區域相符的 FQDN 目標。
- FQDN 目標,可透過 Cloud DNS 轉送政策 (地理位置或加權輪流) 設定區域親和性或流量分配。
FQDN 轉送功能簡介
透過 Cloud DNS 轉送功能,您可以從 Google Cloud Platform 資源解析 Google Cloud Platform 以外 (例如內部部署或其他雲端) 代管的私人 DNS 名稱。傳統上,這項功能支援轉送至目標 IP 位址清單。FQDN 轉送功能可讓您在轉送區域中指定 FQDN 做為轉送目標,進而擴充上述功能。
指定 FQDN 時,Cloud DNS 會使用內部查詢解析為 IP 位址,而內部查詢會使用來源網路的解析邏輯。也就是說,FQDN 目標可以比對私人區域、DNS 路由政策 (地理位置或輪流),甚至是網際網路公用網域名稱。然後,Cloud DNS 會將查詢轉送至已解析的目的地 IP。
建構項目
使用新的私人區域進行區域 FQDN 轉送
您將建立設定,讓 DNS 流量達到區域相依性。這項操作包括建立私人 DNS 區域,並在其中設定地理位置路由政策,然後將轉送區域連結至這個 FQDN 目標。這樣可確保從特定區域 (例如 us-east1) 傳送的流量會轉送至對應的區域 DNS 伺服器。
使用現有私人區域進行 FQDN 轉送
您將瞭解如何建立轉送區域,以便將現有私人 DNS 區域中的 A/AAAA 記錄,設為 FQDN 的目標。這項操作會示範如何使用 FQDN 轉送目標,將查詢轉送至已靜態定義的 IP 位址。
課程內容
FQDN 轉送概念
您會瞭解 FQDN 轉送功能可擴充 DNS 轉送功能,讓您指定 FQDN 轉送目標,而非只指定 IP 位址做為傳出查詢的轉送目標。
FQDN 轉送的好處
您將瞭解,這項功能可讓您在後端 DNS 解析器 IP 位址變更時,不必手動更新,因為 Cloud DNS 會自動從 FQDN 的 DNS 記錄中擷取變更內容。這項功能還可讓 DNS 伺服器位於共用名稱後方,或動態調整,進而更靈活地擴充 DNS 基礎架構。
與 Cloud DNS 轉送政策整合
您將瞭解如何將 FQDN 轉送與 Cloud DNS 轉送政策 (地理位置或輪替) 結合,以便達成區域親和性、針對地理位置不同的部署作業提高效能,並根據所設定的權重分配流量。
Google Cloud CLI 指令語法
您將熟悉用於設定 FQDN 轉送區的 gcloud dns managed-zones create
指令及其相關標記 (--forwarding-targets
、--private-forwarding-targets
)。
必要條件
如要完成本程式碼研究室,您需要符合下列條件:
- Google 帳戶
- 已啟用計費功能的 Google Cloud 專案
- 已安裝並設定 gcloud 指令列工具
- 具備 Cloud DNS 和 DNS 基本概念
2. 開始設定
瞭解 FQDN 轉送情境
Cloud DNS FQDN 轉送支援多種用途:
- 含有 A/AAAA 記錄的不公開區域:如果 FQDN 與不公開區域中的 A/AAAA 記錄相符,系統會將解析的 IP 位址加入轉送清單,而這項行為與直接轉送至目標 IP 位址相同。
- 採用地理位置政策的私人區域:您可以使用地理位置政策指定來源地理位置並提供相應答案,驗證地理區域的流量分布情形。這對區域 DNS 轉送和親和性至關重要。
- 採用加權輪替 (WRR) 政策的不公開區域:WRR 政策可讓您為 DNS 名稱指定每個 IP 位址的不同權重,驗證流量是否根據設定的權重進行分配。
- 含 A/AAAA 記錄的公用區域:如果 FQDN 與同一個網路中顯示的任何私人名稱不符,Cloud DNS 會嘗試使用公用網際網路解析該名稱。
瞭解 FQDN 轉送的 Google Cloud CLI 指令
如要使用 gcloud CLI 指令建立轉送區,並設定 FQDN 轉送目標,請使用 gcloud dns managed-zones create
指令。指定 FQDN 目標的鍵旗標為 --forwarding-targets
或 --private-forwarding-targets
。如要進一步瞭解標準和私人轉送方法,請參閱這份文件。
--forwarding-targets
:區域要轉送查詢的目標名稱伺服器的 IPv4/IPv6 位址或一個網域名稱清單。系統會忽略公開瀏覽權限。非 RFC1918 位址會透過網際網路轉送至目標。RFC1918 位址會透過 VPC 轉送。--private-forwarding-targets
:區域要轉送查詢的目標名稱伺服器的 IPv4/IPv6 位址或一個網域名稱清單。系統會忽略公開瀏覽權限。系統會透過 VPC 存取所有為此參數指定的地址。
語法範例:
gcloud dns managed-zones create NAME \
--description=DESCRIPTION \
--dns-name=DNS_SUFFIX \
--networks=VPC_NETWORK_LIST \
--forwarding-targets=DEFAULT_FQDN_TARGET \
--visibility=private
請注意,您可以指定 --private-forwarding-targets
而非 --forwarding-targets
。
設定 Google Cloud Platform 專案
登入 gcloud CLI。
gcloud auth login
建立專案。
gcloud projects create my-codelab-project
啟用 Cloud DNS API。這項設定可能需要幾分鐘才會生效。
gcloud services enable dns.googleapis.com
本程式碼研究室使用的是透過新專案建立的預設虛擬私有雲端網路。您也可以建立新的網路來取代現有網路。
3. 設定區域 FQDN 轉送功能 (使用新的私人區域)
本情境說明如何實現區域 DNS 轉送,確保來自特定區域的流量會轉送至該區域內的 DNS 伺服器。
建立私人 DNS 區域
首先,請建立私人 DNS 區域 (例如 foo.com),以便代管您的 FQDN 及其相關地理位置路由政策。這個可用區必須供預設網路查看。
gcloud dns managed-zones create my-zone \
--description="Private Zone for FQDN outbound DNS forwarding." \
--dns-name=foo.com. \
--networks=default \
--visibility=private
在私人區域中建立地理位置轉送政策記錄集
接著,請在 my-zone 中建立記錄集 (例如 geo.foo.com),並套用地理位置路由政策。本範例會為 asia-east1 和 asia-west1 設定 IP 位址。
gcloud dns record-sets create geo.foo.com. \
--ttl="30" \
--type="A" \
--zone="my-zone" \
--routing-policy-type="GEO" \
--routing-policy-data="asia-east1=192.168.0.1;us-central1=192.168.0.2"
注意:如果停用地理柵格 (預設且建議使用),如果原始區域中的目標處於非健康狀態,查詢會導向最近的健康區域。
使用 FQDN 目標建立轉送可用區
建立在同一個預設網路中顯示的轉送區域 (geo.test.com.),並將 geo.foo.com. (含有地理位置轉送政策的 FQDN) 設為轉送目標。
gcloud dns managed-zones create my-geo-fwd-zone \
--description="Forwarding zone for FQDN outbound DNS forwarding for routing policy." \
--dns-name=geo.test.com. \
--networks=default \
--private-forwarding-targets=geo.foo.com. \
--visibility=private
系統現在會根據查詢的來源區域,將任何與 geo.test.com 相符的 DNS 查詢轉送至 geo.foo.com 的解析 IP (例如 192.168.0.1 或 192.168.0.2)。
4. 設定 FQDN 轉送 (使用現有的私人區域)
已擁有私人 DNS 區域
假設您已建立名為 my-zone (foo.com) 的私人 DNS 區域,且該區域可供預設網路存取。
在這個私人區域中建立 DNS 資源記錄
在現有的 my-zone 中,為 a.foo.com. 建立 A 類型記錄。
gcloud dns record-sets create a.foo.com. \
--ttl="30" \
--type="A" \
--zone="my-zone" \
--rrdatas=1.2.3.4
建立轉送可用區並指定 FQDN 目標
與地區 FQDN 情況類似,請建立轉送區域,並指定 a.foo.com. 做為轉送目標。
gcloud dns managed-zones create my-a-fwd-zone \
--description="Forwarding zone for FQDN outbound DNS forwarding for A record." \
--dns-name=a.test.com. \
--networks=default \
--private-forwarding-targets=a.foo.com. \
--visibility=private
任何與 a.test.com. 相符的 DNS 查詢都會轉送至 a.foo.com. 的解析 IP 位址 1.2.3.4。
5. 清理
在刪除私人區域之前,您必須先刪除私人區域中的所有 ResourceRecordSet (NS 和 SOA 記錄除外,這些記錄會自動產生,且必須一律存在於私人區域中)。
刪除私人區域中的地理位置路由政策。
gcloud dns record-sets delete "geo.foo.com." --type="A" --zone="my-zone"
刪除不公開區域中的 A 記錄。
gcloud dns record-sets delete "a.foo.com." --type="A" --zone="my-zone"
刪除私人區域。
gcloud dns managed-zones delete "my-zone"
刪除地理位置路由政策的轉送區域。
gcloud dns managed-zones delete "my-geo-fwd-zone"
刪除 A 記錄的轉送區域。
gcloud dns managed-zones delete "my-a-fwd-zone"
6. 恭喜
恭喜!您已成功學會使用 FQDN 傳出 DNS 轉送!