設定 DNS 伺服器政策

本頁面說明如何設定 DNS 伺服器政策,並搭配虛擬私有雲 (VPC) 網路使用這些政策。使用這個頁面前,請先詳閱 DNS 伺服器政策總覽。

事前準備

Cloud DNS API 會要求您建立 Google Cloud 專案並啟用 Cloud DNS API。

如果您正在建立的應用程式會使用 REST API,則還必須建立一個 OAuth 2.0 用戶端 ID。

  1. 如果您還沒有 Google 帳戶,請註冊 Google 帳戶
  2. 在 Google Cloud 控制台中啟用 Cloud DNS API。您可以選擇現有的 Compute Engine 或 App Engine 專案,也可以建立新的專案。
  3. 如果您需要向 REST API 發出要求,則必須建立 OAuth 2.0 ID。請參閱「設定 OAuth 2.0」。
  4. 請注意,在後續步驟中,您必須在專案中輸入下列資訊:
    • 用戶端 ID (xxxxxx.apps.googleusercontent.com)。
    • 要使用的專案 ID。您可以在 Google Cloud 控制台的「總覽」頁面頂端找到這個 ID。您也可以要求使用者提供他們想在應用程式中使用的專案名稱。

如果您之前未執行 Google Cloud CLI,請務必執行下列指令,指定專案名稱並透過 Google Cloud 主控台進行驗證:

gcloud auth login

如要選擇先前未選取的專案,請在指令列中指定 --project 選項。

建立 DNS 伺服器政策

每個 DNS 伺服器政策物件都可以定義下列任何伺服器政策:

每個虛擬私有雲網路最多只能參照一項 DNS 伺服器政策。如果您需要為虛擬私人雲端網路定義傳入和傳出轉送,請建立一項政策,同時定義傳入和傳出政策。您無法使用傳入 DNS 伺服器政策設定 DNS64 (預先發布版)。

建立傳入 DNS 伺服器政策

如要建立傳入 DNS 伺服器政策,請按照下列操作說明進行。Cloud DNS 會根據政策適用的每個 VPC 網路中子網路的主要 IPv4 位址範圍,建立一組傳入轉寄站 IP 位址。建立政策後,您可以列出 Cloud DNS 建立的進入點

gcloud

如要建立傳入 DNS 伺服器政策,請執行 dns policies create 指令:

gcloud dns policies create NAME \
    --description=DESCRIPTION \
    --networks=VPC_NETWORK_LIST \
    --enable-inbound-forwarding

更改下列內容:

  • NAME:政策名稱
  • DESCRIPTION:政策說明
  • VPC_NETWORK_LIST:以半形逗號分隔的清單,列出必須建立傳入轉送位址的 VPC 網路

Terraform

resource "google_dns_policy" "default" {
  name                      = "example-inbound-policy"
  enable_inbound_forwarding = true

  networks {
    network_url = google_compute_network.default.id
  }
}

resource "google_compute_network" "default" {
  name                    = "network"
  auto_create_subnetworks = false
}

建立傳出 DNS 伺服器政策

如要為虛擬私人雲端網路指定替代名稱伺服器清單,您可以建立傳出 DNS 伺服器政策。

gcloud

如要建立傳出 DNS 伺服器政策,請執行 dns policies create 指令:

gcloud dns policies create NAME \
    --description=DESCRIPTION \
    --networks=VPC_NETWORK_LIST \
    --alternative-name-servers=ALTERNATIVE_NAMESERVER_LIST \
    --private-alternative-name-servers=PRIVATE_ALTERNATIVE_NAMESERVER_LIST

更改下列內容:

  • NAME:政策名稱
  • DESCRIPTION:政策說明
  • VPC_NETWORK_LIST:以半形逗號分隔的清單,當中列有查詢替代名稱伺服器的 VPC 網路
  • ALTERNATIVE_NAMESERVER_LIST:以半形逗號分隔的 IP 位址清單,可用於替代名稱伺服器;私人路由僅適用於具有 RFC 1918 位址的替代名稱伺服器
  • PRIVATE_ALTERNATIVE_NAMESERVER_LIST:以半形逗號分隔的 IP 位址清單,可用於做為替代名稱伺服器,可透過私人路由存取

Terraform

resource "google_dns_policy" "default" {
  name = "example-outbound-policy"

  alternative_name_server_config {
    target_name_servers {
      ipv4_address    = "172.16.1.10"
      forwarding_path = "private"
    }
    target_name_servers {
      ipv4_address = "172.16.1.20"
    }
  }

  networks {
    network_url = google_compute_network.default.id
  }
}

resource "google_compute_network" "default" {
  name                    = "network"
  auto_create_subnetworks = false
}

建立傳入和傳出轉送的 DNS 伺服器政策

gcloud

如要建立傳入和傳出轉送的 DNS 伺服器政策,請執行 dns policies create 指令:

gcloud dns policies create NAME \
    --description=DESCRIPTION \
    --networks=VPC_NETWORK_LIST \
    --alternative-name-servers=ALTERNATIVE_NAMESERVER_LIST \
    --private-alternative-name-servers=PRIVATE_ALTERNATIVE_NAMESERVER_LIST \
    --enable-inbound-forwarding

更改下列內容:

  • NAME:政策名稱
  • DESCRIPTION:政策說明
  • VPC_NETWORK_LIST:以逗號分隔的 VPC 網路清單,其中必須建立傳入轉送位址,且必須查詢替代名稱伺服器
  • ALTERNATIVE_NAMESERVER_LIST:以半形逗號分隔的 IP 位址清單,可用做替代名稱伺服器。私人路由僅適用於具有 RFC 1918 位址的替代名稱伺服器。
  • PRIVATE_ALTERNATIVE_NAMESERVER_LIST:以半形逗號分隔的 IP 位址清單,可用於做為私人路由存取的替代名稱伺服器。

Terraform

resource "google_dns_policy" "example_policy" {
  name                      = "example-policy"
  enable_inbound_forwarding = true

  enable_logging = true

  alternative_name_server_config {
    target_name_servers {
      ipv4_address    = "172.16.1.10"
      forwarding_path = "private"
    }
    target_name_servers {
      ipv4_address = "172.16.1.20"
    }
  }

  networks {
    network_url = google_compute_network.network_1.id
  }
  networks {
    network_url = google_compute_network.network_2.id
  }
}

resource "google_compute_network" "network_1" {
  name                    = "network-1"
  auto_create_subnetworks = false
}

resource "google_compute_network" "network_2" {
  name                    = "network-2"
  auto_create_subnetworks = false
}

列出傳入轉寄站進入點

當傳入 DNS 伺服器政策套用至 VPC 網路時,Cloud DNS 會建立一組區域內部 IP 位址,做為內部部署系統或名稱解析器可傳送 DNS 查詢的目的。這些位址是虛擬私人雲端網路名稱解析順序的進入點。

Google Cloud 防火牆規則不會套用至用於傳入轉送器的地區性內部地址。Cloud DNS 會自動接受通訊埠 53 上的 TCP 和 UDP 流量。

每個 inbound forwarder 都會接受並接收來自 Cloud VPN 隧道或 Cloud Interconnect 連結 (VLAN) 的查詢,這些連結位於與區域內部 IP 位址相同的區域。VM 執行個體可透過相同虛擬私有雲網路中的任何內部 IP 位址存取傳入轉送器。如要存取 inbound forwarding,網路介面必須具有外部 IP 位址,或是 NIC 的子網路必須啟用私人 Google 存取權。

gcloud

如要列出可做為傳入轉送入口點的地區性內部 IP 位址組合,請執行 compute addresses list 指令:

gcloud compute addresses list \
    --filter='purpose = "DNS_RESOLVER"' \
    --format='csv(address, region, subnetwork)'

更新 DNS 政策

以下各節將說明如何變更 VPC 網路,以及啟用或停用內送轉送。

變更虛擬私有雲網路

下表說明變更 DNS 政策套用至哪些 VPC 網路時會發生的情況:

  • 如果政策指定了傳入政策,系統會視需要在 VPC 網路中建立傳入轉送器的進入點。
  • 如果政策指定了傳出政策,則會更新每個虛擬私有雲網路的名稱解析順序,納入指定的替代名稱伺服器。

gcloud

如要修改 DNS 伺服器政策套用的網路清單,請執行 dns policies update 指令:

gcloud dns policies update NAME \
    --networks=VPC_NETWORK_LIST

更改下列內容:

  • NAME:政策名稱
  • VPC_NETWORK_LIST:政策適用的 VPC 網路清單,以半形逗號分隔;您指定的 VPC 網路清單會取代先前的清單

啟用或停用傳入轉送

您可以為只定義傳出政策 (替代名稱伺服器) 的 DNS 伺服器政策啟用傳入轉送。您也可以停用現有 DNS 政策的傳入轉送功能。

gcloud

如要為 DNS 伺服器政策啟用傳入轉送功能,請執行 dns policies update 指令:

gcloud dns policies update NAME \
    --enable-inbound-forwarding

如要停用 DNS 伺服器政策的傳入轉送,請執行 dns policies update 指令:

gcloud dns policies update NAME \
    --no-enable-inbound-forwarding

NAME 替換為政策名稱。

列出 DNS 政策

gcloud

如要列出專案中的 DNS 伺服器政策,請執行 dns policies list 指令:

gcloud dns policies list

刪除 DNS 政策

gcloud

如要刪除 DNS 伺服器政策,請執行 dns policies delete 指令:

gcloud dns policies delete NAME

NAME 替換為要刪除的政策名稱。

後續步驟

  • 如要找出使用 Cloud DNS 時可能遇到的常見問題解決方案,請參閱「疑難排解」。
  • 如要瞭解 Cloud DNS 的總體概況,請參閱 Cloud DNS 總覽