使用策略路徑

依據政策路徑,您可以依據封包目的地 IP 位址等條件選擇下一個躍點。本頁面說明如何建立、列出、描述及刪除依據政策的路線。

事前準備

必要的角色

如要取得使用政策型路由所需的權限,請要求管理員為您授予專案的 Compute Network Admin (roles/compute.networkAdmin) 身分與存取權管理角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

您或許還可透過自訂角色或其他預先定義的角色取得必要權限。

建立策略路徑

建立策略路徑時,您需要指定下列項目:

  • 路徑範圍:路徑可套用的資源。
  • 分類標準:來源 IP 位址範圍、目的地 IP 位址範圍和通訊協定,用於判斷路由適用於哪些封包。以政策為基礎的路由會套用至符合所有指定分類條件的封包。
  • 下一個躍點:下一個躍點內部直通式網路負載平衡器,或略過其他策略路由的下一個躍點。

主控台

  1. 前往 Google Cloud 控制台的「Routes」

    前往「Routes」(路徑)

  2. 按一下「路徑管理」

  3. 按一下 [Create route] (建立路徑)

  4. 輸入路徑的名稱

  5. 選用:輸入說明

  6. 按一下「Network」,然後選取要新增政策路由的網路。

  7. 按一下「路由類型」,然後選取「依據政策的路由」

  8. 在「路由範圍」部分,執行下列任一操作:

    • 如要讓路徑套用至虛擬私有雲網路中的所有虛擬機器 (VM) 執行個體、Cloud Interconnect 的 VLAN 連結和 Cloud VPN 通道,請選取「這個路徑會套用至所有 VM 執行個體、VLAN 連結和 VPN 通道」

      Google 建議您在建立這類路線時務必小心。路由會套用至符合分類條件的所有傳出封包,其中可能包含來自內部直通式網路負載平衡器後端的傳出流量。

    • 如要讓路徑只套用至特定 VM 執行個體,請選取「這個路徑只會套用至 VM 執行個體」,然後輸入這個路徑應套用的 VM 網路標記。您可以使用逗號分隔的清單輸入多個網路標記。

    • 如要將路徑套用至路徑 VPC 網路中 Cloud Interconnect 的所有 VLAN 連結,請選取「這個路徑只會套用至 VLAN 連結」

    • 如要將路徑套用至特定區域的 Cloud Interconnect VLAN 連結,請選取「這個路徑只會套用至 VLAN 連結」,然後選取 VLAN 連結的區域。您無法建立適用於特定 VLAN 連結的策略路徑。

  9. 在「分類標準」部分執行下列操作:

    1. 輸入「Source IP range」(來源 IP 範圍)
    2. 輸入目的地 IP 範圍
    3. 按一下「Protocol」,然後選取要套用此路由的通訊協定。
  10. 輸入優先順序

  11. 在「下一個躍點」專區中,按一下「下一個躍點」,然後執行下列操作:

    • 如要指定下一個躍點內部直通式網路負載平衡器,請選取「指定內部直通式網路負載平衡器的轉送規則」,然後執行下列操作:

      • 如要從現有轉送規則清單中選取轉送規則,請按照下列步驟操作:
        1. 選取「由目前專案內部負載平衡器的轉送規則使用中」
        2. 按一下「轉送規則 IP 位址」,然後選取在所選專案中與內部負載平衡器相關聯的 IP 位址。
      • 如要輸入 IP 位址,請按照下列步驟操作:

        1. 選取「未使用」
        2. 在「Forwarding rule IP address」(轉送規則 IP 位址) 欄位中,輸入 IP 位址,不含前置字串長度。IP 位址必須來自下列任一來源:

          • 您要建立這條以政策為準的路徑的虛擬私有雲網路 IP 位址範圍。
          • 透過虛擬私有雲網路對等互連功能 ((預先發布版)) 連線至路徑的虛擬私有雲網路 IP 位址範圍。

        您可以指定已與內部直通式網路負載平衡器轉送規則相關聯的 IP 位址,也可以指定未使用的 IP 位址,並在建立這個以政策為準的路徑後建立轉送規則。

    • 如要建立會略過其他策略路徑的策略路徑,請選取「略過其他策略路徑」

  12. 按一下 [建立]。

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:要轉送的流量通訊協定。選項包括 ALLTCPUDP。預設為 ALL
    • IP_VERSION:此路徑適用的單一網際協議版本。指定 IPv4IPv6 (預覽)。預設為 IPv4。如要指定 IPv6,請使用 Google Cloud CLI 的beta 版
    • PROJECT_ID:專案 ID。
    • NETWORK:要套用政策型路徑的網路名稱。
    • NEXT_HOP:路徑下一個躍點內部直通式網路負載平衡器的單一 IP 位址 (不含前置字元長度)。指定 IPv4 位址做為 IPv4 流量的下一個躍點,或指定 IPv6 位址做為 IPv6 流量(預先發布版)。負載平衡器必須位於與政策路由相同的虛擬私有雲網路,或是透過虛擬私有雲端網路對等互連 (預先發布版) 連線至路由的虛擬私有雲網路。

      如果路由適用於 IPv6 流量 (預先發布版),您必須設定負載平衡器,並使用具有 IPv6 位址範圍的子網路

      如要指定來自對等 VPC 網路的 IPv6 位址或 IP 位址,請使用 Google Cloud CLI 的Beta 版

    • 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 連結區域。如要將政策型路徑套用至路徑 VPC 網路中 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

POST 要求傳送至 policyBasedRoutes.create 方法

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:要轉送的流量通訊協定。選項包括 ALLTCPUDP。預設為 ALL
    • IP_VERSION:路徑適用的單一網際網路通訊協定版本。指定 IPv4IPv6 (預覽)。預設為 IPv4。如要指定 IPv6 位址,請使用 v1beta API
    • NETWORK:要套用政策型路徑的網路名稱。這個路徑會套用至符合其他分類條件的網路內執行個體輸出流量。
    • NEXT_HOP:路徑下一個躍點內部直通式網路負載平衡器的單一 IP 位址 (不含前置字元長度)。指定 IPv4 位址做為 IPv4 流量的下一個躍點,或指定 IPv6 位址做為 IPv6 流量(預先發布版)。負載平衡器必須位於與政策路由相同的虛擬私有雲網路,或是透過虛擬私有雲端網路對等互連 (預先發布版) 連線至路由的虛擬私有雲網路。

      如果路由適用於 IPv6 流量 (預先發布版),您必須設定負載平衡器,並使用具有 IPv6 位址範圍的子網路

      如要指定對等 VPC 網路的 IPv6 位址或 IP 位址,請使用 v1beta API

    • 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 連結區域。如要將依據政策的路徑套用至路徑 VPC 網路中 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」。

列出策略路徑

您可以列出策略路徑,查看專案或網路和區域中的所有策略路徑。

主控台

  1. 前往 Google Cloud 控制台的「Routes」

    前往「Routes」(路徑)

    • 如要查看 VPC 網路和區域中的所有政策路徑,請按照下列步驟操作:

      1. 按一下「有效路徑」
      2. 按一下「網路」,然後選取網路。
      3. 按一下「地區」,然後選取所需地區。
      4. 點按「查看」。
    • 如要查看專案中所有策略路徑,請按照下列步驟操作:

      1. 按一下「路徑管理」

gcloud

使用 policy-based-routes list 指令

gcloud network-connectivity policy-based-routes list

API

GET 要求傳送至 policyBasedRoutes.list 方法

GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/policyBasedRoutes

PROJECT_ID 替換為要列出政策路線的專案 ID。

說明策略路徑

您可以描述以政策為準的路由,查看路由的詳細資料。

主控台

  1. 前往 Google Cloud 控制台的「Routes」

    前往「Routes」(路徑)

  2. 按一下「有效路徑」

  3. 按一下「網路」,然後選取網路。

  4. 按一下「地區」,然後選取所需地區。

  5. 點按「查看」。

  6. 按一下以政策為準則的路徑的「名稱」,即可查看詳細資料。

gcloud

如要描述政策路徑,請使用 policy-based-routes describe 指令

gcloud network-connectivity policy-based-routes describe NAME

NAME 替換為要說明的路徑名稱。

API

GET 要求傳送至 policyBasedRoutes.get 方法

GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/policyBasedRoutes/ROUTE_NAME

更改下列內容:

  • PROJECT_ID:專案 ID。
  • ROUTE_NAME:要說明的政策路徑名稱。

刪除策略路徑

您可以刪除策略路徑,將其從 VPC 網路中移除。

主控台

  1. 前往 Google Cloud 控制台的「Routes」

    前往「Routes」(路徑)

  2. 按一下「有效路徑」

  3. 按一下「網路」,然後選取網路。

  4. 按一下「地區」,然後選取所需地區。

  5. 點按「查看」。

  6. 按一下策略路徑的「名稱」

  7. 依序點選「Delete」和「Delete」 確認操作。

gcloud

如要刪除策略路徑,請使用 policy-based-routes delete 指令

gcloud network-connectivity policy-based-routes delete NAME

NAME 替換為要刪除的路線名稱。

API

DELETE 要求傳送至 policyBasedRoutes.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) 叢集的 VPC 網路中建立政策型路由,請注意下列事項:

  • 請勿建立目的地包含叢集節點或 Pod IP 位址的政策路徑。
  • 請勿建立目的地包含叢集控制層私人端點的策略路徑。
    • 部分 公開 Google Kubernetes Engine (GKE) 叢集有 Private Service Connect 控制層私人端點。對於這些叢集,根據預設,GKE 會在叢集子網路的主要 IPv4 位址範圍中,建立 Private Service Connect 控制層私人端點。如要為 Private Service Connect 控制層私人端點選擇自訂子網路範圍 (同一個區域中的子網路),請參閱「建立叢集並選取控制層 IP 範圍」。
    • 建立私人 GKE 叢集時,您會為控制層私人端點 (--master-ipv4-cidr) 指定 IP 位址範圍。請確認您不會建立目的地包含此範圍的政策路徑。詳情請參閱「私人叢集中的端點」。

已發布服務的政策路徑和 Private Service Connect

您無法使用政策型路徑,將 VM 的流量轉送至已發布服務的 Private Service Connect 端點已發布服務的 Private Service Connect 後端。針對已發布服務使用政策型路由和 Private Service Connect 時:

  • 使用網路標記,讓依據政策的路徑套用至特定 VM。
  • 請勿建立來源或目的地 IP 位址範圍為 0.0.0.0/0 的策略路徑。
  • 如果您需要建立以政策為準的路由,且目的地範圍包含 Private Service Connect 端點或後端的 IP 位址,請建立優先順序較高的以政策為準路由,略過其他以政策為準路由。使用更明確的 IP 位址範圍 (包含 Private Service Connect 端點或後端的 IP 位址),設定優先順序較高的政策路徑。

以政策為準的路由和存取 Google API 和服務

Google Cloud 不支援透過其他 VM 執行個體或自訂下一個躍點,將流量轉送至 Google API 和服務,包括在以政策為準的路由中,下一個躍點內部直通式網路負載平衡器的 VM 後端。

如果您使用下列任一方式存取 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)