使用策略路徑
您可以依據封包目的地 IP 位址等條件,透過策略路徑選擇下一個躍點。本頁說明如何建立、列出、說明及刪除依據政策的路由。
事前準備
- 如要使用本指南提供的指令列範例,請安裝或更新至最新版 Google Cloud CLI。
- 您必須在專案中啟用 Network Connectivity API。
- 您需要內部直通式網路負載平衡器。我們建議啟用全域存取權,這樣一來,內部直通式網路負載平衡器就不會捨棄來自其他區域的封包 (定義負載平衡器的區域除外)。
必要的角色
如要取得使用以政策為準的路由所需的權限,請要求管理員授予您專案的Compute Network Admin (roles/compute.networkAdmin
) 身分與存取權管理角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
建立策略路徑
建立策略路徑時,請指定下列項目:
- 路徑範圍:路徑可套用的資源。
- 分類條件:來源 IP 位址範圍、目的地 IP 位址範圍和通訊協定,這些條件會決定路徑適用的封包。如果封包完全符合指定的分類條件,系統就會套用以政策為依據的路徑。
下一個躍點:下一個躍點內部直通式網路負載平衡器,或略過其他策略路由的下一個躍點。
主控台
前往 Google Cloud 控制台的「Routes」頁面。
按一下「路徑管理」。
按一下 [Create route] (建立路徑)。
輸入路徑名稱。
選用:輸入說明。
按一下「網路」,然後選取要新增以原則為準的路由的網路。
點選「路由類型」,然後選取「依據政策的路由」。
選取 IP 版本。
在「路徑範圍」部分,執行下列任一操作:
如要將路徑套用至虛擬私有雲網路中的所有虛擬機器 (VM) 執行個體、Cloud Interconnect 的 VLAN 連結和 Cloud VPN 通道,請選取「這個路徑會套用至所有 VM 執行個體、VLAN 連結和 VPN 通道」。
Google 建議您建立這類路線時務必小心。這項路由會套用至符合分類條件的所有輸出封包,包括來自內部直通式網路負載平衡器後端的輸出流量。
如要讓路徑僅適用於特定 VM 執行個體,請選取「這個路徑只會套用至 VM 執行個體」,然後輸入要套用這個路徑的 VM 網路標記。您可以使用逗號分隔清單的形式輸入多個網路標記。
如要將路徑套用至路徑虛擬私有雲網路中 Cloud Interconnect 的所有 VLAN 連結,請選取「這個路徑只會套用至 VLAN 連結」。
如要將路徑套用至特定區域中 Cloud Interconnect 的 VLAN 連結,請選取「這個路徑只會套用至 VLAN 連結」,然後選取 VLAN 連結的區域。您無法建立適用於特定 VLAN 連結的策略路由。
在「分類條件」部分,執行下列操作:
- 輸入來源 IP 範圍。
- 輸入目的地 IP 範圍。
- 按一下「通訊協定」,然後選取要套用這條路徑的通訊協定。
輸入優先順序。
在「下一個躍點」部分,按一下「下一個躍點」,然後執行下列操作:
如要指定下一個躍點內部直通式網路負載平衡器,請選取「指定內部直通式網路負載平衡器的轉送規則」,然後執行下列操作:
- 如要從現有轉送規則清單中選取轉送規則:
- 選取「使用中,目前由專案內部負載平衡器的轉送規則使用」。
- 按一下「轉送規則 IP 位址」,然後選取與所選專案中內部負載平衡器相關聯的 IP 位址。
如要輸入 IP 位址,請按照下列步驟操作:
- 選取「未使用」。
在「Forwarding rule IP address」(轉送規則 IP 位址) 欄位中,輸入 IP 位址 (不含前置字串長度)。IP 位址必須來自下列其中一個來源:
- 您要建立這項策略路徑的虛擬私有雲網路 IP 位址範圍。
- 透過虛擬私有雲網路對等互連連線至路徑虛擬私有雲網路的虛擬私有雲網路 IP 位址範圍。
您可以指定已與內部直通式網路負載平衡器轉送規則建立關聯的 IP 位址,也可以指定未使用的 IP 位址,並在建立這個策略路徑後建立轉送規則。
- 如要從現有轉送規則清單中選取轉送規則:
如要建立會略過其他策略路徑的策略路徑,請選取「略過其他策略路徑」。
點選「建立」。
gcloud
使用 policy-based-routes create
指令。
如要將路徑套用至虛擬私有雲網路中的所有 VM 執行個體、Cloud Interconnect 的 VLAN 連結和 Cloud VPN 通道,請使用下列指令。
Google 建議您建立這類路線時務必小心。這項路由會套用至符合分類條件的所有輸出封包,包括來自內部直通式網路負載平衡器後端的輸出流量。
gcloud network-connectivity policy-based-routes create ROUTE_NAME \ --source-range=SOURCE_RANGE \ --destination-range=DESTINATION_RANGE \ --ip-protocol=PROTOCOL \ --protocol-version=IP_VERSION \ --network="projects/PROJECT_ID/global/networks/NETWORK" \ --next-hop-ilb-ip=NEXT_HOP \ --description=DESCRIPTION \ --priority=PRIORITY
更改下列內容:
ROUTE_NAME
:以策略為準的路由名稱。SOURCE_RANGE
:來源 IP CIDR 範圍。DESTINATION_RANGE
:目的地 IP CIDR 範圍。PROTOCOL
:要轉送的流量通訊協定。選項包括ALL
、TCP
或UDP
。預設值為ALL
。IP_VERSION
:這個路徑適用的單一網際網路通訊協定版本。指定IPv4
或IPv6
。 預設值為IPv4
。PROJECT_ID
:專案 ID。NETWORK
:要套用以政策為準路徑的網路名稱。NEXT_HOP
:單一 IP 位址,不含前置字元長度,適用於路徑的下一個躍點內部直通式網路負載平衡器。指定 IPv4 位址做為 IPv4 流量的下一個躍點,或指定 IPv6 位址做為 IPv6 流量的下一個躍點。負載平衡器必須位於與策略型路由相同的虛擬私有雲網路,或透過虛擬私有雲端網路對等互連連線至路由虛擬私有雲網路的虛擬私有雲網路。如果路徑適用於 IPv6 流量,您必須使用具有 IPv6 位址範圍的子網路設定負載平衡器。
DESCRIPTION
:路線的選填說明。PRIORITY
:策略路徑的優先順序,相較於其他策略路徑。
如要只將路徑套用至特定 VM 執行個體,請使用下列指令:
gcloud network-connectivity policy-based-routes create ROUTE_NAME \ --source-range=SOURCE_RANGE \ --destination-range=DESTINATION_RANGE \ --ip-protocol=PROTOCOL \ --protocol-version=IP_VERSION \ --network="projects/PROJECT_ID/global/networks/NETWORK" \ --next-hop-ilb-ip=NEXT_HOP \ --description=DESCRIPTION \ --priority=PRIORITY \ --tags=NETWORK_TAGS
將
NETWORK_TAGS
改成要套用路徑的 VM 的一或多個網路標記,您可以在逗號分隔清單中加入多個網路標記。如要只將路徑套用至 Cloud Interconnect 的 VLAN 連結,請使用下列指令。您可以將路徑套用至特定地區的 Cloud Interconnect VLAN 連結,或是虛擬私有雲網路中的所有 Cloud Interconnect VLAN 連結。
gcloud network-connectivity policy-based-routes create ROUTE_NAME \ --source-range=SOURCE_RANGE \ --destination-range=DESTINATION_RANGE \ --ip-protocol=PROTOCOL \ --protocol-version=IP_VERSION \ --network="projects/PROJECT_ID/global/networks/NETWORK" \ --next-hop-ilb-ip=NEXT_HOP \ --description=DESCRIPTION \ --priority=PRIORITY \ --interconnect-attachment-region=INTERCONNECT_REGION
將
INTERCONNECT_REGION
替換為 Cloud Interconnect 的 VLAN 連結區域,以便將路徑套用至該區域。如要將政策型路徑套用至路徑虛擬私有雲網路中 Cloud Interconnect 的所有 VLAN 連結,請使用all
。如要指定下一個躍點,略過網路標記所識別特定 VM 的其他策略路由,請使用下列指令:
gcloud network-connectivity policy-based-routes create ROUTE_NAME \ --source-range=SOURCE_RANGE \ --destination-range=DESTINATION_RANGE \ --ip-protocol=PROTOCOL \ --protocol-version=IP_VERSION \ --network="projects/PROJECT_ID/global/networks/NETWORK" \ --next-hop-other-routes=DEFAULT_ROUTING \ --description=DESCRIPTION \ --priority=PRIORITY \ --tags=NETWORK_TAGS
API
對 policyBasedRoutes.create
方法發出 POST
要求:
POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/policyBasedRoutes?policyBasedRouteId=ROUTE_NAME
如要將路徑套用至虛擬私有雲網路中的所有 VM 執行個體、Cloud Interconnect 的 VLAN 連結和 Cloud VPN 通道,請加入下列要求主體。
Google 建議您建立這類路線時務必小心。這項路由會套用至符合分類條件的所有輸出封包,包括來自內部直通式網路負載平衡器後端的輸出流量。
{ "filter": { "srcRange": "SOURCE_RANGE", "destRange": "DESTINATION_RANGE", "ipProtocol": "PROTOCOL", "protocolVersion": "IP_VERSION" }, "network": "projects/PROJECT_ID/global/networks/NETWORK", "nextHopIlbIp": "NEXT_HOP", "description": "DESCRIPTION", "priority": "PRIORITY" }
更改下列內容:
PROJECT_ID
:專案 ID。ROUTE_NAME
:以策略為準的路由名稱。SOURCE_RANGE
:來源 IP CIDR 範圍。DESTINATION_RANGE
:目的地 IP CIDR 範圍。PROTOCOL
:要轉送的流量通訊協定。選項包括ALL
、TCP
或UDP
。預設值為ALL
。IP_VERSION
:路徑套用到的單一網際網路通訊協定版本。指定IPv4
或IPv6
。預設值為IPv4
。NETWORK
:要套用以政策為準路徑的網路名稱。這個路徑會套用至此網路中符合其他分類條件的執行個體輸出流量。NEXT_HOP
:單一 IP 位址,不含前置字元長度,適用於路徑的下一個躍點內部直通式網路負載平衡器。指定 IPv4 位址做為 IPv4 流量的下一個躍點,或指定 IPv6 位址做為 IPv6 流量的下一個躍點。負載平衡器必須位於與策略型路由相同的虛擬私有雲網路,或透過虛擬私有雲端網路對等互連連線至路由虛擬私有雲網路的虛擬私有雲網路。如果路徑適用於 IPv6 流量,您必須使用具有 IPv6 位址範圍的子網路設定負載平衡器。
DESCRIPTION
:路線的選填說明。PRIORITY
:策略路徑的優先順序,相較於其他策略路徑。
如要只將路徑套用至特定 VM 執行個體,請加入下列要求主體:
{ "filter": { "srcRange": "SOURCE_RANGE", "destRange": "DESTINATION_RANGE", "ipProtocol": "PROTOCOL", "protocolVersion": "IP_VERSION" }, "network": "projects/PROJECT_ID/global/networks/NETWORK", "nextHopIlbIp": "NEXT_HOP", "description": "DESCRIPTION", "priority": "PRIORITY", "virtualMachine": { "tags": [ "NETWORK_TAGS" ] } }
將
NETWORK_TAGS
替換為一或多個網路標記。政策型路徑會套用至具有至少一個這類標記的執行個體輸出流量。您可以在下列表單中加入多個標記:"tag1","tag2","tag3"
。如要只將路徑套用至 Cloud Interconnect 的 VLAN 連結,請加入下列要求主體。您無法建立適用於特定 VLAN 連結的策略路徑。
{ "filter": { "srcRange": "SOURCE_RANGE", "destRange": "DESTINATION_RANGE", "ipProtocol": "PROTOCOL", "protocolVersion": "IP_VERSION" }, "interconnectAttachment": { "region": "INTERCONNECT_REGION" }, "network": "projects/PROJECT_ID/global/networks/NETWORK", "nextHopIlbIp": "NEXT_HOP", "description": "DESCRIPTION", "priority": "PRIORITY" }
將
INTERCONNECT_REGION
替換為 Cloud Interconnect 的 VLAN 連結區域,以便將這條路徑套用至該區域。如要將依據政策的路徑套用至路徑虛擬私有雲網路中 Cloud Interconnect 的所有 VLAN 連結,請使用all
。如要指定下一個躍點,略過網路標記所識別特定 VM 的其他策略路由,請使用下列指令:
{ "filter": { "srcRange": "SOURCE_RANGE", "destRange": "DESTINATION_RANGE", "ipProtocol": "PROTOCOL", "protocolVersion": "IP_VERSION" }, "network": "projects/PROJECT_ID/global/networks/NETWORK", "nextHopOtherRoutes": "DEFAULT_ROUTING", "description": "DESCRIPTION", "priority": "PRIORITY", "virtualMachine": { "tags": [ "NETWORK_TAGS" ] } }
驗證策略路徑的連線
連線測試是一種診斷工具,可檢查網路中端點之間的連線。系統會分析您的設定,有時還會執行執行階段驗證。連線能力測試支援策略路徑。如要使用策略路由執行 Connectivity Tests,請參閱「建立及執行 Connectivity Tests」。
列出策略路徑
您可以列出策略路由,查看專案、網路和區域中的所有策略路由。
主控台
前往 Google Cloud 控制台的「Routes」頁面。
如要查看虛擬私有雲網路和區域中的所有策略路徑,請執行下列步驟:
- 按一下「有效路徑」。
- 按一下「網路」,然後選取網路。
- 按一下「地區」,然後選取所需地區。
- 點按「查看」。
如要查看專案中的所有策略路徑,請按照下列步驟操作:
- 按一下「路徑管理」。
gcloud
使用 policy-based-routes list
指令。
gcloud network-connectivity policy-based-routes list
API
對 policyBasedRoutes.list
方法發出 GET
要求。
GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/policyBasedRoutes
將 PROJECT_ID
替換為要列出以原則為準的路由的專案 ID。
說明策略路徑
您可以描述策略路由,查看路由的詳細資料。
主控台
前往 Google Cloud 控制台的「Routes」頁面。
按一下「有效路徑」。
按一下「網路」,然後選取網路。
按一下「地區」,然後選取所需地區。
點按「查看」。
按一下以政策為依據的路徑名稱,即可查看詳細資料。
gcloud
如要描述策略路徑,請使用 policy-based-routes describe
指令。
gcloud network-connectivity policy-based-routes describe NAME
將 NAME
替換為要說明的路徑名稱。
API
對 policyBasedRoutes.get
方法發出 GET
要求。
GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/policyBasedRoutes/ROUTE_NAME
更改下列內容:
PROJECT_ID
:專案 ID。ROUTE_NAME
:要說明的以政策為準路徑名稱。
刪除策略路徑
您可以刪除策略路徑,從 VPC 網路中移除該路徑。
主控台
前往 Google Cloud 控制台的「Routes」頁面。
按一下「有效路徑」。
按一下「網路」,然後選取網路。
按一下「地區」,然後選取所需地區。
點按「查看」。
按一下策略路徑的名稱。
按一下「刪除」,然後再次點選「刪除」來確認操作。
gcloud
如要刪除策略路徑,請使用 policy-based-routes delete
指令。
gcloud network-connectivity policy-based-routes delete NAME
將 NAME
替換為要刪除的路徑名稱。
API
對 policyBasedRoutes.delete
方法發出 DELETE
要求。
DELETE https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/policyBasedRoutes/ROUTE_NAME
更改下列內容:
PROJECT_ID
:專案 ID。ROUTE_NAME
:要刪除的政策型路徑名稱。
相容性
如要透過下列方式使用依據政策的路徑,必須進行特殊設定。
搭配 GKE 使用策略路徑
如果您在含有 Google Kubernetes Engine (GKE) 叢集的虛擬私有雲網路中建立以政策為準的路由,請注意下列事項:
- 請勿建立目的地包含叢集節點或 Pod IP 位址的策略路由。
- 請勿建立目的地包含叢集控制層私人端點的策略路徑。
- 部分公開 Google Kubernetes Engine (GKE) 叢集具有 Private Service Connect 控制層私人端點。對於這類叢集,GKE 預設會在叢集子網路的主要 IPv4 位址範圍中,建立 Private Service Connect 控制層私人端點。如要為 Private Service Connect 控制層私人端點選擇自訂子網路範圍 (位於同一區域的子網路),請參閱「建立叢集並選取控制層 IP 範圍」。
- 建立私人 GKE 叢集時,請指定控制層私人端點的 IP 位址範圍 (
--master-ipv4-cidr
)。請務必不要建立目的地包含這個範圍的原則式路徑。詳情請參閱「私人叢集中的端點」。
已發布服務的政策型路由和 Private Service Connect
以政策為準的路由無法將流量轉送至已發布服務的 Private Service Connect 端點,或已發布服務的 Private Service Connect 後端。使用以政策為準的路由和 Private Service Connect 發布服務時,請注意下列事項:
- 使用網路標記,讓策略路徑套用至特定 VM。
- 請避免建立來源或目的地 IP 位址範圍為
0.0.0.0/0
的策略路徑。 - 如要建立策略路由,且目的地範圍包含 Private Service Connect 端點或後端的 IP 位址,請建立優先順序較高的策略路由,略過其他策略路由。設定優先順位較高的以原則為準路由目的地,使用包含 Private Service Connect 端點或後端 IP 位址的更具體 IP 位址範圍。
策略路由和存取 Google API 與服務
Google Cloud 不支援透過其他 VM 執行個體或自訂下一個躍點,將流量轉送至 Google API 和服務,包括轉送至策略路由中下一個躍點內部直通式網路負載平衡器的 VM 後端。
如果您使用下列任一方式存取 Google API 和服務,請參閱下一節列出的最佳做法:
- 使用私人 Google 存取權存取 Google API 和服務
- 從具有外部 IP 位址的 VM 存取 Google API 和服務
- 使用 Google API 的 Private Service Connect 端點
- 使用 Private Service Connect 後端存取 Google API
最佳做法
針對上述存取 Google API 和服務的方式,我們建議採取下列最佳做法:
- 使用網路標記,將策略路徑套用至特定 VM。
- 請避免建立來源或目的地範圍為
0.0.0.0/0
的策略路徑。 - 如果您建立的以政策為準路由包含 Google API 和服務使用的目的地範圍、Google API 的 Private Service Connect 端點,或是 API 的 Private Service Connect 後端,請建立優先順序較高的以政策為準路由,略過其他以政策為準路由。將這些優先順序較高的政策型路由目的地設為與您使用的 Google API 和服務、Private Service Connect 端點或 Private Service Connect 後端 IP 位址相符。Google API 和服務使用的 IP 位址範圍包括:
- Google API 和服務使用的預設網域 IP 位址
- Private Google Access 虛擬 IP 位址 (VIP):
private.googleapis.com
(199.36.153.8/30)restricted.googleapis.com
(199.36.153.4/30)