設定 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 建立的進入點

控制台

  1. 在 Google Cloud 控制台中,開啟「Cloud DNS server policies」(Cloud DNS 伺服器政策) 頁面。

    前往 Cloud DNS 伺服器政策

  2. 按一下「建立政策」

  3. 在「名稱」欄位中,輸入要建立的連入 DNS 伺服器政策名稱,例如 inbound-dns-server-policy

  4. 在「轉送連入查詢」專區中,選取「開啟」

  5. 您可以視需要啟用 DNS64,讓僅限 IPv6 的工作負載與僅限 IPv4 的目的地之間能夠通訊。詳情請參閱「設定 DNS64」。

  6. 您可以在「記錄」部分中選擇啟用私人 DNS 記錄,但這可能會增加 Cloud Logging 的費用。

  7. 在「Networks」(網路) 清單中,選取要繫結至這項 DNS 伺服器政策的虛擬私有雲網路。

    每個網路只能繫結至一項政策。如果無法從清單中選取網路,表示該網路已用於其他政策。如要查看政策使用的網路,請在「DNS 伺服器政策」頁面中,查看「使用中」欄。

  8. 點選「建立」

gcloud

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

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

更改下列內容:

  • NAME:政策名稱
  • DESCRIPTION:政策說明
  • VPC_NETWORK_LIST:以半形逗號分隔的虛擬私有雲網路清單,DNS 伺服器政策必須繫結至這些網路

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 伺服器政策。

控制台

  1. 在 Google Cloud 控制台中,開啟「Cloud DNS server policies」(Cloud DNS 伺服器政策) 頁面。

    前往 Cloud DNS 伺服器政策

  2. 按一下「建立政策」

  3. 在「名稱」欄位中,輸入要建立的傳出 DNS 伺服器政策名稱,例如 outbound-dns-server-policy

  4. 在「轉送連入查詢」專區中,選取「關閉」

  5. 您可以在「記錄」部分中選擇啟用私人 DNS 記錄,但這可能會增加 Cloud Logging 的費用。

  6. 在「替代 DNS 伺服器 (選用)」部分,按一下「新增項目」,然後在「IP 位址」欄位中輸入輸出 DNS 伺服器的 IP 位址。

    • 如要強制使用私人轉送將項目傳送至傳出 DNS 伺服器,請勾選「Private forwarding」(私人轉送) 核取方塊。
  7. 在「Networks」(網路) 清單中,選取要繫結至這項 DNS 伺服器政策的虛擬私有雲網路。

  8. 點選「建立」

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:以半形逗號分隔的虛擬私有雲網路清單,這些網路會查詢替代名稱伺服器
  • ALTERNATIVE_NAMESERVER_LIST:以半形逗號分隔的 IP 位址清單,可用做替代名稱伺服器
  • 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 伺服器政策

控制台

  1. 在 Google Cloud 控制台中,開啟「Cloud DNS server policies」(Cloud DNS 伺服器政策) 頁面。

    前往 Cloud DNS 伺服器政策

  2. 按一下「建立政策」

  3. 在「名稱」欄位中,輸入要建立的連入 DNS 伺服器政策名稱,例如 inbound-outbound-dns-server-policy

  4. 在「轉送連入查詢」專區中,選取「開啟」

  5. 您可以在「記錄」部分中選擇啟用私人 DNS 記錄,但這可能會增加 Cloud Logging 的費用。

  6. 在「替代 DNS 伺服器 (選用)」部分,按一下「新增項目」,然後在「IP 位址」欄位中輸入輸出 DNS 伺服器的 IP 位址。

    • 如要強制使用私人轉送將項目傳送至輸出 DNS 伺服器,請選取「Private forwarding」(私人轉送)
  7. 在「Networks」(網路) 清單中,選取要繫結至這項 DNS 伺服器政策的虛擬私有雲網路。

  8. 點選「建立」

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:以半形逗號分隔的虛擬私有雲網路清單,必須在這些網路中建立轉送位址,並查詢替代名稱伺服器
  • ALTERNATIVE_NAMESERVER_LIST:以半形逗號分隔的 IP 位址清單,可用做替代名稱伺服器
  • 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 伺服器政策套用至虛擬私有雲網路時,Cloud DNS 會建立一組區域內部 IP 位址,做為地端系統或名稱解析器傳送 DNS 查詢的目的地。這些位址是虛擬私有雲網路名稱解析順序的進入點。

Google Cloud 防火牆規則不會套用至區域內部位址,這些位址會做為輸入轉送器的進入點。Cloud DNS 會自動接受通訊埠 53 的 TCP 和 UDP 流量。

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

控制台

查看政策的輸入轉送器進入點清單:

  1. 在 Google Cloud 控制台中,開啟「Cloud DNS server policies」(Cloud DNS 伺服器政策) 頁面。

    前往 Cloud DNS 伺服器政策

  2. 按一下政策名稱。

  3. 在「政策詳細資料」頁面中,按一下「使用對象」分頁標籤。

繫結至政策的每個網路都會列出「傳入查詢轉送 IP」位址。

gcloud

如要列出做為所有傳入轉送政策進入點的地區性內部 IP 位址集,請執行 compute addresses list 指令:

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

更新 DNS 政策

以下各節提供變更虛擬私有雲網路,以及啟用或停用連入轉送的相關資訊。

變更虛擬私有雲網路

以下列出變更 DNS 政策適用虛擬私有雲網路清單時會發生的情況:

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

控制台

  1. 前往 Google Cloud 控制台的「Cloud DNS server policies」(Cloud DNS 伺服器政策) 頁面。

    前往 Cloud DNS 伺服器政策

  2. 按一下要變更的政策名稱。

  3. 按一下「編輯政策」

  4. 在「Networks」(網路) 清單中,選取或取消勾選虛擬私有雲網路旁的核取方塊。

  5. 按一下 [儲存]

gcloud

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

gcloud dns policies update NAME \
    --networks="VPC_NETWORK_LIST"

更改下列內容:

  • NAME:政策名稱
  • VPC_NETWORK_LIST:以半形逗號分隔的虛擬私有雲網路清單,政策會套用至這些網路;您指定的虛擬私有雲網路清單會取代先前的清單

啟用或停用傳入轉送

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

控制台

為 DNS 伺服器政策啟用傳入轉送:

  1. 前往 Google Cloud 控制台的「Cloud DNS server policies」(Cloud DNS 伺服器政策) 頁面。

    前往 Cloud DNS 伺服器政策

  2. 按一下要變更的政策名稱。

  3. 按一下「編輯政策」

  4. 在「轉送連入查詢」專區中,選取「開啟」

  5. 按一下 [儲存]

停用 DNS 伺服器政策的傳入轉送:

  1. 開啟「Cloud DNS 伺服器政策」頁面。
  2. 按一下要變更的政策名稱。
  3. 按一下「編輯政策」
  4. 在「轉送連入查詢」專區中,選取「關閉」
  5. 按一下 [儲存]

gcloud

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

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

如要為 DNS 伺服器政策停用傳入轉送,請指定 --no-enable-inbound-forwarding 旗標:

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

NAME 替換為政策名稱。

列出 DNS 政策

控制台

  1. 前往 Google Cloud 控制台的「Cloud DNS server policies」(Cloud DNS 伺服器政策) 頁面。

    前往 Cloud DNS 伺服器政策

  2. 系統會列出專案中建立的所有 DNS 伺服器政策。

gcloud

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

gcloud dns policies list

刪除 DNS 政策

控制台

如要刪除 DNS 伺服器政策,該政策不得繫結至任何網路。更新政策,先移除所有網路,再刪除政策。

  1. 前往 Google Cloud 控制台的「Cloud DNS server policies」(Cloud DNS 伺服器政策) 頁面。

    前往 Cloud DNS 伺服器政策

  2. 找出要刪除的政策,並按一下該項政策名稱旁的「刪除」

gcloud

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

gcloud dns policies delete NAME

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

後續步驟

  • 如要瞭解使用 Cloud DNS 時可能遇到的常見問題解決方案,請參閱這篇文章
  • 如要查看 Cloud DNS 總覽,請參閱這篇文章