本頁面說明如何建立、更新傳出端點,以及將傳出端點與轉送區域和 DNS 伺服器政策建立關聯,以便使用虛擬私有雲網路中的私人 IP 位址,直接轉送 DNS 查詢。採用這種做法,您就能更精細地控管傳出流量。如要進一步瞭解傳出端點,請參閱「傳出端點總覽」。
事前準備
-
在 Google Cloud 控制台的專案選取器頁面中,選取或建立 Google Cloud 專案。
選取或建立專案所需的角色
- 選取專案:選取專案時,不需具備特定 IAM 角色,只要您在專案中獲派角色,即可選取該專案。
-
建立專案:如要建立專案,您必須具備專案建立者角色 (
roles/resourcemanager.projectCreator),其中包含resourcemanager.projects.create權限。瞭解如何授予角色。
-
如果尚未啟用 Cloud DNS、Compute Engine 和 Network Services API,請啟用這些 API。
啟用 API 所需的角色
如要啟用 API,您必須具備
serviceusage.services.enable權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。
請確認您有可連線至地端部署或外部 DNS 名稱伺服器的虛擬私有雲網路。在您打算部署 Outbound Endpoint 的每個區域中,虛擬私有雲網路必須在目標區域中具備一般子網路和僅限 Proxy 子網路。詳情請參閱「建立及管理虛擬私有雲網路」。
此外,請確保地端部署網路有區域性僅限 Proxy 子網路 IP 位址範圍的回傳路徑,並設定地端部署防火牆規則,允許來自區域性僅限 Proxy 子網路 IP 位址範圍的傳入 DNS 查詢 (UDP 和 TCP 通訊埠 53)。
建立傳出端點
如要建立傳出端點,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的「Cloud DNS」頁面。
前往「傳出端點」分頁,然後按一下「建立傳出端點」。
在「Name」(名稱) 欄位中,輸入端點的專屬名稱。
(選用) 在「Description」(說明) 欄位中,輸入端點說明。
在「區域」部分,選取目標區域。
在「網路」清單中,選取虛擬私有雲網路。
在「Subnet」(子網路) 中,選取所選區域中的一般子網路。
在「Endpoint IP address」(端點 IP 位址),輸入所選子網路範圍內的有效 IPv4 位址字串。
在「Proxy-only subnet」(僅限 Proxy 的子網路),控制台會自動偵測所選虛擬私有雲網路和區域中的區域性僅限 Proxy 子網路,用於傳出查詢。如果系統未偵測到僅限 Proxy 的子網路,請點選「保留子網路」建立子網路,然後再繼續操作。
點選「建立」。
gcloud
執行 gcloud beta dns outbound-endpoints create 指令:
gcloud beta dns outbound-endpoints create ENDPOINT_NAME \
--project=PROJECT_ID \
--network=VPC_NETWORK \
--subnetwork=REGULAR_SUBNET \
--location=REGION \
--endpoint-ip=IP_ADDRESS \
--description=DESCRIPTION
更改下列內容:
ENDPOINT_NAME:傳出端點的名稱PROJECT_ID:專案 IDVPC_NETWORK:與傳出端點相關聯的虛擬私有雲網路,例如projects/PROJECT_ID/global/networks/NETWORK_NAME或NETWORK_NAMEREGULAR_SUBNET:分配端點內部監聽 IP 位址的一般子網路,例如projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME或SUBNET_NAMEREGION:部署端點的區域IP_ADDRESS:來自一般子網路主要 IP 位址範圍的可用內部 IPv4 位址DESCRIPTION:端點說明 (選填)
API
執行 outboundEndpoints.create 方法:
POST https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/locations/REGION/outboundEndpoints?outboundEndpointId=ENDPOINT_NAME
{
"network": "projects/PROJECT_ID/global/networks/VPC_NETWORK",
"subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/REGULAR_SUBNET",
"endpointIp": "IP_ADDRESS",
"description": "DESCRIPTION"
}
更改下列內容:
PROJECT_ID:專案 IDREGION:部署端點的區域ENDPOINT_NAME:傳出端點的名稱VPC_NETWORK:與 Outbound Endpoint 相關聯的虛擬私有雲網路REGULAR_SUBNET:分配端點內部監聽 IP 位址的一般子網路IP_ADDRESS:一般子網路主要 IP 範圍內的可用內部 IPv4 位址DESCRIPTION:端點說明 (選填)
更新傳出端點
如要更新傳出端點,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的「Cloud DNS」頁面。
前往「Outbound endpoints」(傳出端點) 分頁,然後按一下要更新的傳出端點名稱。
按一下「編輯」,更新「說明」欄位,然後按一下「儲存」。
gcloud
執行 gcloud beta dns outbound-endpoints update 指令:
gcloud beta dns outbound-endpoints update ENDPOINT_NAME \
--project=PROJECT_ID \
--location=REGION \
--description=UPDATED_DESCRIPTION
更改下列內容:
ENDPOINT_NAME:要更新的傳出端點名稱PROJECT_ID:專案 IDREGION:部署端點的區域UPDATED_DESCRIPTION:端點的更新說明 (選用)
API
執行 outboundEndpoints.patch 方法:
PATCH https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/locations/REGION/outboundEndpoints/ENDPOINT_NAME?updateMask=description
{
"description": "UPDATED_DESCRIPTION"
}
更改下列內容:
PROJECT_ID:專案 IDREGION:部署端點的區域ENDPOINT_NAME:要更新的傳出端點名稱UPDATED_DESCRIPTION:傳出端點的更新說明
將端點與轉送區域建立關聯
控制台
前往 Google Cloud 控制台的「Cloud DNS」頁面。
前往「Zones」(區域) 分頁,然後按一下「Create zone」(建立區域),或選取現有的轉送區域,然後按一下「Edit」(編輯)。
設定區域參數:
- 在「Zone type」(區域類型) 中,選取「Private」(私人)。
- 在「Zone name」(區域名稱) 輸入區域的專屬 ID。
- 在「DNS name」(DNS 名稱) 部分,輸入要轉送的網域字尾。例如:
corp.example.com。 - (選用) 在「說明」部分輸入說明。
- 在「選項」部分,選取「將查詢轉寄到其他伺服器」。
- 在「Networks」(網路) 部分,選取有權解析這個區域查詢的虛擬私有雲網路。
在「目的地 DNS 伺服器」下方,輸入外部/地端部署名稱伺服器的目標 IPv4 位址或完整網域名稱。
在「轉送路徑」部分,選取「傳出端點」。
在「傳出端點」下方,選取一或多個端點來處理查詢轉送:
- 最少選取數量:至少選取一個傳出端點 (如果選取傳出端點做為轉送路徑,則必須選取)。
- 單一虛擬私有雲限制:所有選取的端點都必須屬於相同的虛擬私有雲網路。
- 高可用性 (HA) 最佳做法:如要進行跨區域災難復原和自動容錯移轉,請在該虛擬私有雲網路中,設定並選取至少兩個位於不同區域的端點。
按一下「建立」 (如果是現有區域,則按一下「儲存」)。
gcloud
使用 gcloud beta dns managed-zones update 指令,將端點與轉送區域建立關聯:
gcloud beta dns managed-zones update ZONE_NAME \
--project=PROJECT_ID \
--outbound-endpoints=projects/PROJECT_ID/locations/REGION_1/outboundEndpoints/ENDPOINT_NAME_1,projects/PROJECT_ID/locations/REGION_2/outboundEndpoints/ENDPOINT_NAME_2
更改下列內容:
ZONE_NAME:要更新的轉送區域名稱PROJECT_ID:專案 IDREGION_1和REGION_2:部署端點的區域ENDPOINT_NAME_1:要與轉送區域建立關聯的第一個端點名稱ENDPOINT_NAME_2:要與轉送區域建立關聯的第二個端點名稱
API
執行 managedZones.patch 方法:
PATCH https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/managedZones/ZONE_NAME
{
"name": "ZONE_NAME",
"dnsName": "DNS_NAME",
"description": "DESCRIPTION",
"visibility": "private",
"forwardingConfig": {
"outboundEndpoints": [
{
"name": "projects/PROJECT_ID/locations/REGION_1/outboundEndpoints/ENDPOINT_NAME_1"
},
{
"name": "projects/PROJECT_ID/locations/REGION_2/outboundEndpoints/ENDPOINT_NAME_2"
}
]
}
}
更改下列內容:
PROJECT_ID:專案 IDZONE_NAME:要更新的轉送區域名稱DNS_NAME:轉送區域的 DNS 名稱DESCRIPTION:(選用) 轉送區域的更新說明REGION_1和REGION_2:端點部署的區域 (forwardingConfig中列出的所有輸出端點都必須屬於同一個虛擬私有雲網路)ENDPOINT_NAME_1:要與轉送區域建立關聯的第一個端點名稱ENDPOINT_NAME_2:要與轉送區域建立關聯的第二個端點名稱
將端點與 DNS 伺服器政策建立關聯
控制台
前往 Google Cloud 控制台的「Cloud DNS」頁面。
前往「DNS 伺服器政策」分頁標籤,然後按一下「建立政策」 (或選取現有的 DNS 伺服器政策,然後按一下「編輯」)。
設定下列項目:
- 在「Policy name」(政策名稱) 部分,輸入伺服器政策的專屬名稱。
- (選用) 在「說明」部分輸入說明。
- 在「Inbound query forwarding」(傳入查詢轉送) 部分,指定外部用戶端是否會使用傳入端點查詢虛擬私有雲工作負載。
- 如為 DNS64,請視需要啟用或停用 IPv6 合成功能。
- 在「記錄」部分,視需要啟用或停用 DNS 記錄功能。
- 在「VPC networks」(虛擬私有雲網路) 部分,選取要套用伺服器政策的虛擬私有雲網路。
在「Alternative DNS servers」(替代 DNS 伺服器) 下方,輸入外部或地端部署名稱伺服器的目標 IPv4 位址。
在「轉送路徑」部分,選取「傳出端點」。
在「Outbound Endpoints」(傳出端點) 下方,選取一或多個端點,以轉送所有非私人虛擬私有雲查詢:
- 最低選取數量:至少選取一個傳出端點。
- 單一虛擬私有雲限制:所有選取的端點都必須屬於同一個虛擬私有雲網路。
- 高可用性 (HA) 最佳做法:如要進行跨區域災難復原和自動容錯移轉,請在該虛擬私有雲網路中,設定並選取至少兩個位於不同區域的端點。
按一下「建立」 (如果是現有政策,則按一下「儲存」)。
gcloud
使用 gcloud beta dns policies update 指令,將端點與 DNS 伺服器政策建立關聯:
gcloud beta dns policies update POLICY_NAME \
--project=PROJECT_ID \
--outbound-endpoints=projects/PROJECT_ID/locations/REGION_1/outboundEndpoints/ENDPOINT_NAME_1,projects/PROJECT_ID/locations/REGION_2/outboundEndpoints/ENDPOINT_NAME_2
更改下列內容:
POLICY_NAME:要更新的 DNS 伺服器政策名稱PROJECT_ID:專案 IDREGION_1和REGION_2:部署端點的區域ENDPOINT_NAME_1:要與 DNS 伺服器政策建立關聯的第一個端點名稱ENDPOINT_NAME_2:要與 DNS 伺服器政策建立關聯的第二個端點名稱
API
執行 policies.patch 方法:
PATCH https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/policies/POLICY_NAME
{
"alternativeNameServerConfig": {
"outboundEndpoints": [
{"name": "projects/PROJECT_ID/locations/REGION_1/outboundEndpoints/ENDPOINT_NAME_1"},
{"name": "projects/PROJECT_ID/locations/REGION_2/outboundEndpoints/ENDPOINT_NAME_2"}
]
}
}
更改下列內容:
PROJECT_ID:專案 IDPOLICY_NAME:要更新的 DNS 伺服器政策名稱REGION_1和REGION_2:部署端點的區域ENDPOINT_NAME_1:要與 DNS 伺服器政策建立關聯的第一個端點名稱ENDPOINT_NAME_2:要與 DNS 伺服器政策建立關聯的第二個端點名稱
查看傳出端點
如要列出或描述某個區域的傳出端點,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的「Cloud DNS」頁面。
前往「Outbound endpoints」(傳出端點) 分頁,查看專案中的所有傳出端點、區域、網路、子網路、IP 位址和健康狀態。
gcloud
如要列出區域中的所有傳出端點,請執行 gcloud beta dns outbound-endpoints list 指令:
gcloud beta dns outbound-endpoints list \
--project=PROJECT_ID \
--location=REGION
更改下列內容:
PROJECT_ID:專案 IDREGION:部署端點的區域
如要查看特定傳出端點的詳細資料,請執行 gcloud beta dns outbound-endpoints describe 指令:
gcloud beta dns outbound-endpoints describe ENDPOINT_NAME \
--project=PROJECT_ID \
--location=REGION
更改下列內容:
ENDPOINT_NAME:傳出端點的名稱PROJECT_ID:專案 IDREGION:部署端點的區域
API
如要列出區域中的所有傳出端點,請傳送 GET 要求:
GET https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/locations/REGION/outboundEndpoints
更改下列內容:
PROJECT_ID:專案 IDREGION:部署端點的區域
如要查看特定傳出端點的詳細資料,請傳送 GET 要求:
GET https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/locations/REGION/outboundEndpoints/ENDPOINT_NAME
更改下列內容:
PROJECT_ID:專案 IDREGION:部署端點的區域ENDPOINT_NAME:傳出端點的名稱
刪除傳出端點
如要刪除傳出端點,必須先取消與參照該端點的轉送區域或 DNS 伺服器政策的關聯。詳情請參閱「管理與傳出端點相關聯的網路資源」。
將傳出端點與所有轉送區域和 DNS 伺服器政策取消關聯後,請按照下列步驟刪除端點:
控制台
前往 Google Cloud 控制台的「Cloud DNS」頁面。
前往「傳出端點」分頁。
選取要刪除的傳出端點,然後按一下「Delete」(刪除)。
gcloud
執行 gcloud beta dns outbound-endpoints delete 指令:
gcloud beta dns outbound-endpoints delete ENDPOINT_NAME \
--project=PROJECT_ID \
--location=REGION
更改下列內容:
ENDPOINT_NAME:要刪除的傳出端點名稱PROJECT_ID:專案 IDREGION:部署端點的區域
API
使用 outboundEndpoints.delete 方法:
DELETE https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/locations/REGION/outboundEndpoints/ENDPOINT_NAME
更改下列內容:
PROJECT_ID:專案 IDREGION:部署端點的區域ENDPOINT_NAME:要刪除的傳出端點名稱
疑難排解
如要瞭解如何診斷及解決與傳出端點相關的錯誤,請參閱「疑難排解」。
後續步驟
- 進一步瞭解傳出端點。