Cloud DNS FQDN 傳出 DNS 轉送

1. 簡介

ef2d068c413a15bd.png

本程式碼研究室將引導您設定 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)。

必要條件

如要完成本程式碼研究室,您需要符合下列條件:

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 轉送!

延伸閱讀

參考文件