設定 Private Service Connect 介面的路由

本頁面說明如何設定虛擬和動態 Private Service Connect 介面的路由。

透過 Private Service Connect 介面轉送流量

建立 Private Service Connect 介面後,您必須在介面的 VM 上設定客層作業系統 (客層 OS),透過介面轉送流量。

允許 SSH 連線

請確認防火牆規則已設定為允許連入的 SSH 連線連至 Private Service Connect 介面的 VM。

找出 Private Service Connect 介面的名稱 Google Cloud

如要設定路由,您必須知道 Private Service Connect 介面的 Google Cloud 名稱。

如要找出動態 Private Service Connect 介面的 Google Cloud 名稱,請使用 Google Cloud CLI。

主控台

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體

  2. 按一下具有 Private Service Connect 介面的 VM 名稱。

  3. 在「網路介面」部分中,找出並記下虛擬 Private Service Connect 介面的名稱,例如 nic1

gcloud

  1. 使用 gcloud compute instances describe 指令

    gcloud compute instances describe VM_NAME \
        --zone=ZONE
    

    更改下列內容:

    • VM_NAME:具有 Private Service Connect 介面的 VM 名稱
    • ZONE:VM 的可用區
  2. 在指令輸出內容中,找出並記下 Private Service Connect 介面的 Google Cloud 名稱。

    • 虛擬 Private Service Connect 介面的名稱格式為 nic[interface_number],例如 nic0nic1
    • 動態 Private Service Connect 介面的名稱格式為 nic[parent_interface_number.VLAN_ID],例如 nic0.10nic1.42

設定動態 Private Service Connect 介面的自動管理功能

如要為動態 Private Service Connect 介面設定路由,請啟用動態網路介面的自動管理功能。每部 VM 只需執行一次這項操作。

找出 Private Service Connect 介面的客體 OS 名稱

如要設定路由,您必須知道 Private Service Connect 介面的客體 OS 名稱,這與 Google Cloud中的介面名稱不同。

如要在 Debian VM 上找出介面名稱,請執行下列步驟。如要瞭解其他作業系統的 VM,請參閱作業系統的公開說明文件。

  1. 連線至 Private Service Connect 介面的 VM。
  2. 執行下列指令:

    ip address
    

    在網路介面清單中,找出並記下與 Private Service Connect 介面 IP 位址相關聯的介面名稱。舉例來說,如果 Linux 客戶端代理程式管理虛擬機的網路介面,名稱會採用下列格式:

    • 虛擬 Private Service Connect 介面: ens[number]例如 ens5
    • 動態 Private Service Connect 介面: gcp.ens[parent_interface_number].[VLAN_ID]例如: gcp.ens5.10

找出 Private Service Connect 介面的閘道 IP 位址

如要設定路由,您必須知道 Private Service Connect 介面預設閘道的 IP 位址。

  1. 連線至 Private Service Connect 介面的 VM。
  2. 從介面的 VM 將 GET 要求傳送至相關聯的中繼資料伺服器

    • 如果是虛擬 Private Service Connect 介面,請傳送下列要求:

      curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/INTERFACE_NUMBER/gateway -H "Metadata-Flavor: Google" && echo
      

      INTERFACE_NUMBER 替換為介面的索引。舉例來說,如果 Private Service Connect 介面的Google Cloud 名稱nic1,請使用 1 值。

    • 如要使用動態 Private Service Connect 介面,請傳送下列要求:

      curl http://metadata.google.internal/computeMetadata/v1/instance/vlan-network-interfaces/PARENT_INTERFACE_NUMBER/VLAN_ID/gateway -H "Metadata-Flavor: Google" && echo
      

      更改下列內容:

      • PARENT_INTERFACE_NUMBER:動態 Private Service Connect 介面父項 vNIC 的索引

        舉例來說,如果 Private Service Connect 介面的Google Cloud 名稱nic1.5,請使用 1 值。

      • VLAN_ID:動態 Private Service Connect 介面的 VLAN ID

        舉例來說,如果 Private Service Connect 介面的 Google Cloud 名稱是 nic1.5,請使用 5 值。

    要求輸出內容會顯示閘道 IP 位址。

新增消費者子網路的路徑

您必須為連線至 Private Service Connect 介面的每個消費者子網路,在 Private Service Connect 介面的預設閘道中新增路由。這樣一來,目的地為消費者網路的流量就會流經 Private Service Connect 介面。

以下步驟說明如何暫時更新使用 Debian 作業系統的 VM 路由表。如要永久更新表格,或在其他作業系統上更新路徑,請參閱作業系統的公開說明文件。

  1. 連線至 Private Service Connect 介面的 VM。

  2. 請針對連線至 Private Service Connect 介面的每個消費者子網路,執行下列指令:

    sudo ip route add CONSUMER_SUBNET_RANGE via GATEWAY_IP dev OS_INTERFACE_NAME
    

    更改下列內容:

  3. 執行下列指令,從快取路由表移除所有項目。 如果您使用現有執行個體,且先前已設定路由表,可能就需要執行這項操作。

    sudo ip route flush cache
    

搭配 VPC Service Controls 使用 Private Service Connect 介面

您可以搭配 VPC Service Controls 使用 Private Service Connect 介面。這樣一來,生產者虛擬私有雲網路就能透過消費者虛擬私有雲網路存取 Google API 和服務,而消費者機構則可享有 VPC Service Controls 的安全優勢。

您可以採用下列其中一種方法實作這項設定,詳情請參閱後續章節:

  • 設定客體 OS 路由
  • 使用網路命名空間或 VRF 隔離 Private Service Connect 介面,然後設定路由

設定客體 OS 路由

如要搭配 VPC Service Controls 使用 Private Service Connect 介面,請在介面 VM 的客體 OS 中設定路由。透過 Private Service Connect 介面,直接將流量傳送至 Google API 和服務。

以下步驟說明如何暫時更新使用 Debian 作業系統的 VM 路由表。如要永久更新表格,或在其他作業系統上更新路徑,請參閱作業系統的公開說明文件。

如要設定路由,請按照下列步驟操作:

  1. 允許 SSH 連線至 Private Service Connect 介面的 VM。
  2. 連線至 VM。
  3. 如要為 Private Service Connect 介面建立自訂路由表,請執行下列指令:

    echo "1 ROUTE_TABLE_NAME" | sudo tee -a /etc/iproute2/rt_tables
    

    ROUTE_TABLE_NAME 替換為路由表的名稱。

  4. 在路由表中新增路由,將流量導向 Google API 和服務。舉例來說,如要為傳送至 restricted.googleapis.com 虛擬 IP (VIP) 的流量新增路徑,請使用下列指令,指定 restricted.googleapis.com 的 IPv4 位址範圍

    sudo ip route add 199.36.153.4/30 dev OS_INTERFACE_NAME table ROUTE_TABLE_NAME
    

    OS_INTERFACE_NAME 替換為 Private Service Connect 介面的客體 OS 名稱,例如 ens5gcp.ens5.10

  5. 如要新增路由規則,針對源自 Private Service Connect 介面的封包使用自訂路由表,請使用下列指令:

    sudo ip rule add from INTERFACE_IP table ROUTE_TABLE_NAME
    

    INTERFACE_IP 替換為 Private Service Connect 介面的 IP 位址。您可以說明介面的 VM,找出介面的 IP 位址。

  6. 執行下列指令,從快取路由表移除所有項目。 如果您使用現有執行個體,且先前已設定路由表,可能就需要執行這項操作。

    sudo ip route flush cache
    

使用命名空間或 VRF 隔離 Private Service Connect 介面

或者,您也可以將 VM 設為使用網路命名空間或虛擬路由和轉送 (VRF),藉此隔離 Private Service Connect 介面。這種做法適用於容器化工作負載,例如在 Google Kubernetes Engine Pod 中執行的工作負載。

使用與隔離介面相同的環境設定路由,並確保使用 Private Service Connect 介面的工作負載位於相同環境中。