設定 DNS 伺服器政策

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

事前準備

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

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

  1. 如果還沒有 Google 帳戶,請註冊 Google 帳戶
  2. 在 Trusted 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。您可以在 Trusted Cloud 控制台的「總覽」頁面頂端找到 ID。您也可以要求使用者提供要在應用程式中使用的專案名稱。

如果您先前未執行過 Google Cloud CLI,請執行下列指令,指定專案名稱並透過 Trusted 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:以半形逗號分隔的虛擬私有雲網路清單,必須在其中建立連入轉送位址

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

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

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

gcloud

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

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

更新 DNS 政策

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

變更虛擬私有雲網路

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

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

gcloud

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

gcloud dns policies update NAME \
    --networks=VPC_NETWORK_LIST

更改下列內容:

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

啟用或停用傳入轉送

您可以為只定義傳出政策 (替代名稱伺服器) 的 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 總覽,請參閱這篇文章