使用第三方裝置建立連線

您可以使用 Network Connectivity Center (NCC),透過第三方網路虛擬設備,在外部網站和虛擬私有雲 (VPC) 網路資源之間建立連線。如要以這種方式建立連線,請使用 Router 設備功能。

路由器設備是 NCC 支援的多種輪輻類型之一。如要瞭解 NCC,請參閱「NCC 總覽」。如要進一步瞭解路由器設備,請參閱「路由器設備總覽」。

範例設定

在下列拓撲中,外部站點會使用路由器設備輪輻,連線至兩個虛擬私有雲網路。

代管路由器設備執行個體的主機 VM 在每個虛擬私有雲網路中都有介面,路由器設備執行個體會在這兩個網路中,與 Cloud Router 維護邊界閘道通訊協定 (BGP) 工作階段。

每個 Cloud Router 都有兩個介面。每個網路中的路由器設備介面都會與適當的 Cloud Router 介面建立對等互連,因此總共有四個對等互連工作階段。

為路由器設備建立 BGP 工作階段
站點對雲端範例拓撲 (點擊即可放大)

必要工作

如要設定範例設定,請確認您符合執行這項程序的必要條件,然後完成必要工作:

  1. 建立 Compute Engine 虛擬機器 (VM),做為路由器設備執行個體。您可以透過支援的合作夥伴解決方案或自訂映像檔建立 VM。

  2. 確認路由器設備執行個體可透過 TCP 通訊埠 179 存取 BGP 流量。如要開放存取,您可能需要建立防火牆規則。

  3. 建立兩個輪輻,每個虛擬私有雲網路各一個。 每個輪輻都使用相同的路由器設備執行個體做為支援資源。

  4. 設定兩個 Cloud Router,每個虛擬私有雲網路各一個。針對每個 Cloud Router,這項工作包含下列子工作:

    1. 在與路由器設備執行個體相同的區域建立 Cloud Router。

    2. 在每個 Cloud Router 上建立兩個介面。

    3. 在每個 Cloud Router 上設定 BGP 對接。

  5. 在路由器設備執行個體上設定 BGP 對等互連。

完成這些工作的方式可能大不相同。舉例來說,如果您使用合作夥伴解決方案建立路由器設備執行個體,系統可能會自動為您執行後續部分工作。

事前準備

開始之前,請先詳閱下列各節。

建立或選取專案

如要輕鬆設定 NCC,請先找出有效的專案。

  1. 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自體驗產品的實際應用成效。新客戶還能獲得價值 $300 美元的免費抵免額,用於執行、測試及部署工作負載。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Install the Google Cloud CLI.

  5. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  8. Verify that billing is enabled for your Google Cloud project.

  9. Install the Google Cloud CLI.

  10. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. 如果使用 Google Cloud CLI,請透過 gcloud config set 指令設定專案 ID。

    gcloud config set project PROJECT_ID

    將 PROJECT_ID 替換為專屬專案 ID。

    本頁面的 gcloud CLI 操作說明假設您已設定專案 ID。

  13. 如要確認專案 ID 設定正確無誤,請使用 gcloud config list 指令。

    gcloud config list --format='text(core.project)'

啟用 Network Connectivity API

您必須先啟用 Network Connectivity API,才能使用 NCC 執行任何工作。

控制台

如要啟用 Network Connectivity API,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Network Connectivity Center」(網路連線中心) 頁面。

    前往 Network Connectivity Center

  2. 按一下「啟用」。

或者,您也可以使用Google Cloud 控制台 API 程式庫啟用 API,如「啟用 API」一文所述。

取得存取權

如要使用 NCC,您必須具備「角色和權限」一文所述的權限。

設定 NCC 時,您也會使用虛擬私有雲網路、子網路和防火牆規則等資源。 Google Cloud如要進一步瞭解使用這些資源所需的權限,請參閱 Compute Engine 存取權控管說明文件。

IP 位址和路由器設備執行個體

如要設定路由器設備執行個體,您必須在執行個體和 Cloud Router 之間建立對等互連。如要設定對等互連,VM 必須使用 RFC 1918 內部 IP 位址。如果 VM 使用不同類型的位址,就無法對等互連這兩項資源。此外,兩個 IP 位址必須位於同一個區域。

如要瞭解如何查看 VM 的 IP 位址,請參閱下列文件:

如要瞭解 IP 位址類型定義和詳細資訊,請參閱「IP 位址」。

預留靜態內部 IP 位址 (建議)

建議您為路由器設備執行個體提供靜態內部 IP 位址,這樣位址就不會在重新啟動時變更。如果位址變更,BGP 對接就會失敗。

指派預留 IP 位址的方式有幾種。您可以預先保留 IP 位址。或者,您也可以在建立 VM 時保留 IP 位址。如果誤將暫時性地址指派給 VM,之後可以將該地址轉換為靜態地址。如要進一步瞭解靜態 IP 位址,請參閱「預留靜態 IP 位址」。

BGP 對等互連的 IP 位址

路由器設備執行個體會使用內部 IP 位址,與 Cloud Router 建立對等互連。執行個體「不」使用連結本機位址 (例如 169.254.x.x) 進行 BGP 對等互連。

同樣地,Cloud Router 會使用兩個 RFC 1918 內部 IP 位址,與路由器設備執行個體對等互連,每個介面各一個位址。這些 IP 位址可從子網路手動或自動指派,該子網路同時包含路由器設備執行個體介面和 Cloud Router 介面。

建立虛擬私有雲資源

以下各節說明如何建立虛擬私有雲網路和子網路。

建立兩個虛擬私有雲網路

如果尚未建立,請建立兩個虛擬私有雲網路。將每個網路的動態轉送模式設為 global。

如要進一步瞭解如何建立虛擬私有雲網路,請參閱「建立網路」。

控制台

如要使用 Google Cloud 控制台建立自訂虛擬私有雲網路,請參閱「建立自訂模式網路」。請務必將「動態轉送模式」設為「全域」。如要遵循範例設定中使用的命名慣例,請將網路命名為 network-a 和 network-b。

gcloud

如要建立自訂虛擬私有雲網路,請使用 gcloud compute networks create 指令。

  gcloud compute networks create NAME \
      --subnet-mode custom \
      --bgp-routing-mode global

將 NAME 替換為虛擬私有雲網路名稱,例如 network-a 或 network-b。

API

如要使用 Compute Engine API 建立自訂虛擬私有雲網路,請參閱「使用虛擬私有雲」。

建立子網路

在 network-a 和 network-b 各建立一個子網路。

控制台

如要使用 Google Cloud 控制台新增子網路,請參閱「新增子網路」。

如要採用範例設定中使用的命名慣例,請在 network-a 中使用下列子網路值:

  • Name (名稱):subnet-a
  • Region (區域):us-central1
  • 範圍:10.1.3.0/24

請為 network-b 中的子網路使用下列值:

  • Name (名稱):subnet-b
  • Region (區域):us-central1
  • 範圍:192.168.10.0/24

gcloud

如要建立虛擬私有雲子網路,請使用 gcloud compute networks subnets create 指令。

  gcloud compute networks subnets create NAME \
      --network=NETWORK \
      --region=REGION \
      --range=RANGE

更改下列內容:

  • NAME:包含路由器設備 VM 的子網路名稱,例如 subnet-a 或 subnet-b
  • NETWORK:包含子網路的網路,例如 network-a 或 network-b
  • REGION:包含子網路的區域,例如 us-central1
  • RANGE:子網路的 IP 範圍,以 CIDR 標記法表示,例如 10.1.3.0/24 或 192.168.10.0/24

API

如要使用 Compute Engine API 建立虛擬私有雲子網路,請參閱「使用虛擬私有雲」。

建立路由器設備 VM

建立做為路由器設備執行個體的 Compute Engine VM。在範例拓撲中,VM 以 router-app-a 表示。其中包含兩個介面,分別位於 network-a 和 network-b 中。

建立 VM 時,您必須選取網路虛擬設備映像檔。 這張圖片可以是下列任一類型:

如要進一步瞭解如何指定圖片,請參閱下列資源:

如要詳細瞭解如何建立 VM,請參閱「建立及啟動 VM 執行個體」。

本節中的範例假設您已為路由器設備執行個體預留 IP 位址。詳情請參閱「路由器設備的 IP 位址」。

控制台

如要建立範例設定中使用的 VM,請參閱「建立及啟動 VM 執行個體」。建立 VM 時,請選擇下列選項:

  • 如要遵循範例設定中使用的命名慣例,請使用下列值:

    • Name (名稱):router-app-a
    • 區域:us-central1
    • Zone (可用區):us-central1-a
  • 如要選取映像檔,請前往頁面的「Boot disk」(開機磁碟) 區域,按一下「Change」(變更),然後瀏覽至 VM 的適當映像檔。

  • 依序展開「Advanced options」(進階選項) 和「Networking」(網路)。請使用下列值:

    • 在「IP forwarding」(IP 轉送) 下方,選取「Enable」(啟用)。
    • 在「網路介面」下方,建立兩個介面,分別位於 network-a 和 network-b。如要建立各個介面,請選取適當的網路,然後按一下「Add a Network Interface」(新增網路介面)。填寫下列欄位:
      • 選取要放置路由器設備執行個體的「子網路」,例如 subnet-a 或 subnet-b。
      • 在「主要內部 IP」下方,選取要使用的保留 RFC 1918 內部 IP 位址,例如 10.1.3.8 或 192.168.10.3。
      • 在「Network Service Tier」(網路服務級別) 下方,選取「Premium」(進階);這個選項可盡量提高流量使用 Google 網路的程度。

gcloud

如要建立範例設定中使用的兩個路由器設備 VM,請使用 gcloud compute instances create 指令。

針對每個路由器設備執行個體,分別執行一次指令。將 INSTANCE_NAME 替換為做為路由器設備執行個體的 VM 名稱。

在下列範例中,您會將先前預留的靜態內部 IP 位址和靜態外部 IP 位址指派給 VM。您也可以指定含有供應商提供 VM 映像檔的專案,以及映像檔名稱。

  gcloud compute instances create INSTANCE_NAME \
      --project=PROJECT \
      --zone=ZONE \
      --machine-type=MACHINE_TYPE \
      --network-tier=NETWORK_TIER \
      --network-interface=[subnet=SUBNET,private-network-ip=INTERNAL_IP_ADDRESS] \
      --can-ip-forward \
      --image-project=IMAGE_PROJECT \
      --image=IMAGE

更改下列內容:

  • INSTANCE_NAME:做為路由器設備執行個體的 VM 名稱,例如 router-app-a 或 router-app-b
  • PROJECT:路由器設備 VM 所在專案的名稱,例如 my-project
  • ZONE:VM 所在的 Google Cloud 區域,例如 us-west1-a
  • MACHINE_TYPE:用於 VM 的機器類型資源,例如 n1-standard-2
  • NETWORK_TIER:建立路由器設備 VM 時,請將網路層級設為 premium,這樣可盡量讓流量使用 Google 網路
  • SUBNET:指派給 VM 主要網路介面的子網路,例如 subnet-a-1
  • INTERNAL_IP_ADDRESS:指派給連線至 Cloud Router 的 VM 介面的 RFC 1918 內部 IP 位址,例如 10.0.1.10
  • IMAGE_PROJECT:包含 image 欄位中指定圖片的專案名稱,例如 debian-cloud
  • IMAGE:要安裝的映像檔名稱,例如 debian-10-buster-v20210217

API

如要建立範例設定中使用的兩個路由器設備 VM,請使用 compute.instances.insert 方法。

如需其他建立方法,請參閱「建立及啟動 VM 執行個體」。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances
 {
   "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
   "name": "INSTANCE_NAME",
   "canIpForward": "true",
   "networkInterfaces": [{
     "subnetwork": "regions/REGION/subnetworks/SUBNET",
     "networkIP": "INTERNAL_IP_ADDRESS",
     "accessConfigs": [{
         "networkTier": "NETWORK_TIER,
       }]
     }],
    "disks": [{
      "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
   }]
 }

更改下列內容:

  • PROJECT:包含路由器設備 VM 的專案名稱,例如 my-project
  • ZONE:VM 所在的 Google Cloud 可用區,例如 us-west1-a
  • MACHINE_TYPE:VM 要使用的機型資源,例如 zones/us-west1-a/machineTypes/n1-standard-2
  • INSTANCE_NAME:VM 的名稱,例如 router-app-a 或 router-app-b
  • REGION:包含 VM 的區域,例如 us-west1
  • SUBNET:指派給 VM 主要網路介面的子網路,例如 regions/us-west1/subnetworks/subnet-a-1
  • INTERNAL_IP_ADDRESS:指派給 VM 的 RFC 1918 內部 IP 位址;請為連線至 Cloud Router 的 VM 介面設定位址,例如 10.0.1.10
  • NETWORK_TIER:建立路由器設備 VM 時,請將網路層級設為 premium,這樣可盡量讓流量使用 Google 網路
  • IMAGE_PROJECT:包含您在建立 VM 時指定映像檔的專案名稱,例如 debian-cloud
  • IMAGE:建立 VM 時要使用的映像檔名稱,例如 debian-10-buster-v20210217

建立防火牆規則,允許 BGP

建立兩項防火牆規則,分別位於 network-a 和 network-b。每項規則都應允許 TCP 通訊埠 179 上的 BGP 流量。

如要進一步瞭解防火牆指令,請參閱「使用防火牆規則」。

控制台

如要使用Google Cloud 控制台建立虛擬私有雲防火牆規則,請參閱「建立防火牆規則」。

gcloud

如要使用 Google Cloud CLI 建立虛擬私有雲防火牆規則,請參閱「建立防火牆規則」。

API

如要使用 Compute Engine API 建立虛擬私有雲防火牆規則,請參閱「建立防火牆規則」。

建立 NCC 資源

您必須先建立必要的 NCC 資源,才能使用路由器設備 VM。

建立中樞

您必須先建立中樞,才能建立 NCC 輪輻。

控制台

  1. 前往 Google Cloud 控制台的「Network Connectivity Center」(網路連線中心) 頁面。

    前往 Network Connectivity Center

  2. 在專案選單中選取專案。

  3. 輸入中樞名稱。

  4. 輸入說明 (選填)。

  5. 確認專案 ID。如果專案 ID 不正確,請使用畫面頂端的選單選取其他專案。

  6. 按一下「繼續」。

  7. 控制台會顯示表單,供您建立 Spoke。如要立即填寫,請按照「建立路由器設備輪輻」一文所述的步驟操作。

  8. 按一下「完成」。

gcloud

如要建立中樞,請使用 gcloud network-connectivity hubs create 指令。

  gcloud network-connectivity hubs create HUB_NAME \
      --description="DESCRIPTION" \
      --labels="KEY"="VALUE"

替換下列值:

  • HUB_NAME:新中樞的名稱
  • DESCRIPTION:說明中樞的選用文字
  • KEY:鍵/值組合中的鍵,用於選用標籤文字
  • VALUE:鍵/值組合中的值,用於選用標籤文字

API

如要建立中樞,請使用 networkconnectivity.hubs.create 方法。

  POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/hubs
  {
    "name":"HUB_NAME",
    "description":"DESCRIPTION",
    "labels": {
      "KEY": "VALUE"
    }
  }

替換下列值:

  • PROJECT_ID:新中樞所在專案的專案 ID
  • HUB_NAME:新中樞的名稱
  • DESCRIPTION:說明中樞的選用文字
  • KEY:鍵/值組合中的鍵,用於選用標籤文字
  • VALUE:鍵/值組合中選用標籤文字的值

建立兩個路由器設備輪輻

建立兩個路由器設備輪輻。兩個輪輻都使用相同的支援資源:您剛才建立的路由器設備執行個體。一個輪輻使用 network-a 中的介面,另一個則使用 network- b 中的介面。

您必須建立 Spoke,才能在路由器設備執行個體和 Cloud Router 之間啟用 BGP 對等互連,而您會在下一個步驟中建立 Cloud Router。

如要進一步瞭解如何建立輪輻,請參閱「使用中樞和輪輻」。

控制台

輸入基本輪輻詳細資料

  1. 前往 Google Cloud 控制台的「Network Connectivity Center」(網路連線中心) 頁面。

    前往 Network Connectivity Center

  2. 在專案選單中選取專案。

  3. 按一下「Spokes」分頁標籤。

  4. 按一下「Add spokes」(新增輪輻)。

  5. 在「新增輪輻」表單中,將「輪輻類型」設為「路由器設備」。

  6. 輸入輪輻名稱,例如 spoke-a 或 spoke-b

  7. 您也可以選擇輸入「Description」(說明)。

  8. 選取新輪輻的「Region」(區域) 欄位。

  9. 在「站對站資料移轉」下方,選取「關閉」。

  10. 在「虛擬私有雲網路」下拉式選單中,選取一個網路。

輸入路由器設備詳細資料

  1. 在「將執行個體附加至 Spoke」下方,使用下拉式清單選取路由器設備,例如 router-app-a。
  2. 如要將更多路由器設備執行個體新增至這個輪輻,請按一下「Add instance」(新增執行個體),然後重複上述步驟。
  3. 完成後,按一下「完成」,然後繼續儲存你的 Spoke。

儲存輪輻

  1. 如要新增第二個 Spoke,請按一下「新增 Spoke」,然後再次開始程序,首先輸入 Spoke 名稱。
  2. 新增完輪輻後,按一下「建立」。 「NCC」頁面會更新,顯示您建立的輪輻詳細資料。

gcloud

如要建立路由器設備輪輻,請使用 gcloud network-connectivity spokes linked-router-appliances create 指令。請執行指令兩次,每個輪輻各一次。

  gcloud network-connectivity spokes linked-router-appliances create NAME \
      --hub="HUB_URI" \
      --description="DESCRIPTION" \
      --router-appliance=instance="ROUTER_APPLIANCE_URI",ip=IP_ADDRESS \
      --region=REGION \
      --labels="KEY"="VALUE"
 

替換下列值:

  • NAME:Spoke 的名稱,例如 spoke-a
  • HUB_URI:要附加輪輻的中樞 URI
  • DESCRIPTION:說明輪輻的選用文字
  • ROUTER_APPLIANCE_URI:路由器設備執行個體 URI,例如:
    https://www.googleapis.com/compute/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME 
  • IP_ADDRESS:路由器設備執行個體的內部 IP 位址,位於適當的虛擬私有雲網路中,例如 10.1.3.8 或 192.168.10.3
  • REGION:要放置輪輻的 Google Cloud 區域,例如 us-central1
  • KEY:鍵/值組合中的鍵,用於選用標籤文字
  • VALUE:鍵/值組合中的值,用於選用標籤文字

    舉例來說,下列指令會建立路由器設備輪輻,並使用 router-app-a 做為基礎資源。這個指令會使用路由器設備執行個體的 network-a 介面參照該執行個體:

    gcloud network-connectivity spokes linked-router-appliances create spoke-a \
       --hub=my-hub \
       --description="Test spoke 1" \
       --router-appliance=instance="https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/router-app-a",ip=10.1.3.8 \
       --region=us-central1 \
    

    舉例來說,下列指令會建立路由器設備輪輻,並使用 router-app-a 做為基礎資源。這項指令會使用路由器設備執行個體的 network-b 介面參照該執行個體:

    gcloud network-connectivity spokes linked-router-appliances create spoke-b \
       --hub=my-hub \
       --description="Test spoke 1" \
       --router-appliance=instance="https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/router-app-a",ip=192.168.10.3\
       --region=us-central1 \
    

API

如要建立路由器設備 Spoke,請使用 networkconnectivity.spokes.create 方法。針對要與輪輻建立關聯的每個路由器設備執行個體,請使用 linkedRouterApplianceInstances.instances 陣列新增執行個體。

  POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/spokes/SPOKE_NAME
  {
    "hub": "HUB_URI",
    "labels": {"KEY": "VALUE"},
    "linkedRouterApplianceInstances": {
      "instances": [
        {
          "virtualMachine": "ROUTER_APPLIANCE_URI",
          "ipAddress": INTERNAL_IP_ADDRESS,
        },
      ],
      "siteToSiteDataTransfer": BOOLEAN
    }
  }
 

替換下列值:

  • PROJECT_ID:專案的專案 ID
  • REGION:要放置 Spoke 的 Google Cloud 區域,例如 us-west1
  • SPOKE_NAME:要為 Spoke 命名的名稱
  • HUB_URI:要附加輪輻的中樞 URI,例如
    http://networkconnectivity.googleapis.com/v1/projects/PROJECT_NAME/locations/global/hubs/HUB_NAME 
  • KEY:鍵/值組合中的鍵,用於選用標籤文字
  • VALUE:鍵/值組合中的值,用於選用標籤文字
  • ROUTER_APPLIANCE_URI:路由器設備執行個體 URI,例如:
    https://www.googleapis.com/compute/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME 
  • IP_ADDRESS:適用於適當虛擬私有雲網路的路由器設備執行個體內部 IP 位址,例如 10.1.3.8 或 192.168.10.3
  • BOOLEAN:決定是否為這個 Spoke 啟用站對站資料移轉的值;在這個用途中,請將這個選項設為 false

    舉例來說,如要在 network-a 中建立使用 router-app-a 做為介面的 Spoke,要求主體應採用下列結構:

    {
      "hub": "http://networkconnectivity.googleapis.com/v1/projects/my-project/locations/global/hubs/my-hub",
    
      "labels": {
        "environment" : "test"
      },
    
      "linkedRouterApplianceInstances": {
        "instances": [
          {
            "virtualMachine": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/router-app-a",
            "ipAddress": "10.1.3.8",
          },
        ],
        "siteToSiteDataTransfer": false
      }
    }
    
    

    如要建立使用 router-app-a 做為介面的 Spoke (位於 network-b 中),要求主體應採用下列結構:

    {
      "hub": "http://networkconnectivity.googleapis.com/v1/projects/my-project/locations/global/hubs/my-hub",
    
      "labels": {
        "environment" : "test"
      },
    
      "linkedRouterApplianceInstances": {
        "instances": [
          {
            "virtualMachine": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/router-app-a",
            "ipAddress": "192.168.10.3",
          },
        ],
        "siteToSiteDataTransfer": false
      }
    }
    
    

設定 Cloud Router

路由器設備會使用 Cloud Router 與虛擬私有雲網路交換路由。因此,您必須在每個虛擬私有雲網路中建立 Cloud Router,並完成其他幾項設定工作。

建立 Cloud Router

如果您使用與範例拓撲相同的值,請建立兩個 Cloud Router,一個位於 network-a,另一個位於 network-b。兩個 Cloud Router 都應位於 us-central1。

詳情請參閱「建立 Cloud Router」。

控制台

如要在 Google Cloud 控制台建立 Cloud Router,請使用下列其中一種方法:

  • 如「建立 Cloud Router」一文所述,使用「Cloud Router」頁面。

  • 使用「Network Connectivity Center」頁面。這種做法的優點是可同時建立路由器、介面和 BGP 工作階段。如要進一步瞭解如何一併完成所有這些步驟,請參閱「在 Cloud Router 上設定 BGP 對等互連」。

gcloud

如要建立 Cloud Router,請使用 gcloud compute routers create 指令。

  gcloud compute routers create NAME \
      --region=REGION \
      --network=NETWORK \
      --asn=ASN \
      --project=PROJECT_ID

更改下列內容:

  • NAME:Cloud Router 的名稱,例如 cloud-router-a 或 cloud-router-b
  • REGION:包含 Cloud Router 的區域,例如 us-central1
  • NETWORK:包含 Cloud Router 的虛擬私有雲網路,例如 network-a 或 network-b
  • ASN:Cloud Router 的自治系統編號 (ASN),這個 ASN 必須是 RFC 6996 定義的 16 位元或 32 位元私人 ASN,例如 65000
  • PROJECT_ID:Cloud Router 的專案 ID,例如 my-project

API

如要建立 Cloud Router,請使用 compute.routers.insert 方法。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers
{
 "name": "NAME",
 "network": "NETWORK",
 "bgp": {
   "asn": ASN
  }
}

更改下列內容:

  • PROJECT_ID:Cloud Router 的專案 ID,例如 my-project
  • REGION:包含 Cloud Router 的區域,例如 us-central1
  • NAME:Cloud Router 的名稱,例如 cloud-router-a 或 cloud-router-b
  • NETWORK:包含 Cloud Router 的虛擬私有雲網路 URI,例如 /global/networks/network-a 或 /global/networks/network-b
  • ASN:Cloud Router 的自治系統編號 (ASN)。這個 ASN 必須是 RFC 6996 中定義的 16 位元或 32 位元私有 ASN,例如 65000

在每個 Cloud Router 上建立兩個介面

如要建立備援,請在每個 Cloud Router 上建立兩個介面。在每個 Cloud Router 上,這兩個介面必須與對應的路由器設備介面相關聯的子網路相同。如果您使用範例拓撲中的值,請執行下列操作:

  • 針對 cloud-router-a,請在 subnet-a 中建立兩個介面。
  • 如果是 cloud-router-b,請在 subnet-b 中建立兩個介面。

每個 Cloud Router 介面都會使用區域內部 IP 位址。如果您明確指定介面的內部 IP 位址,該 IP 位址必須屬於子網路的主要 IP 位址範圍。不得由其他資源使用,例如 VM 或其他 Cloud Router 介面。

這個步驟沒有 Google Cloud 控制台操作說明。如果您使用 Google Cloud 控制台,完成下一個工作 (在每個 Cloud Router 上建立 BGP 對等互連) 時,系統會自動建立介面。

gcloud

如要在 Cloud Router 上建立備援介面,請使用 gcloud compute routers add-interface 指令。

請完成下列步驟兩次,一次用於 cloud-router-a,另一次用於 cloud-router-b:

  1. 為每個 Cloud Router 建立第一個介面:

    gcloud compute routers add-interface ROUTER_NAME \
        --interface-name=FIRST_INTERFACE_NAME \
        --ip-address=FIRST_INTERFACE_IP_ADDRESS \
        --subnetwork=SUBNET \
        --region=REGION \
        --project=PROJECT_ID
    

    更改下列內容:

    • ROUTER_NAME:要更新的 Cloud Router 名稱,例如 cloud-router-a 或 cloud-router-b
    • FIRST_INTERFACE_NAME:介面名稱,例如 interface-1
    • FIRST_INTERFACE_IP_ADDRESS:用於第一個介面的 RFC 1918 內部 IP 位址;如未指定值,Google 會嘗試在子網路的主要 IP 位址範圍中尋找可用位址
    • SUBNET:包含 Cloud Router 介面和對應路由器設備執行個體介面的子網路
    • REGION:Cloud Router 所在的 Google Cloud 區域,例如 us-central1
    • PROJECT_ID:Cloud Router 的專案 ID,例如 my-project
  2. 為每個 Cloud Router 建立第二個介面:

    gcloud compute routers add-interface ROUTER_NAME \
        --interface-name=SECOND_INTERFACE_NAME \
        --ip-address=SECOND_INTERFACE_IP_ADDRESS \
        --subnetwork=SUBNET \
        --redundant-interface=FIRST_INTERFACE_NAME \
        --region=REGION \
        --project=PROJECT_ID
    

    更改下列內容:

    • ROUTER_NAME:要更新的 Cloud Router 名稱,例如 cloud-router-a 或 cloud-router-b
    • SECOND_INTERFACE_NAME:介面名稱,例如 interface-2
    • SECOND_INTERFACE_IP_ADDRESS:用於第二個介面的 RFC 1918 內部 IP 位址;如未指定值,Google 會嘗試在子網路的主要 IP 位址範圍中尋找可用位址
    • SUBNET:包含兩個 Cloud Router 介面和對應路由器設備執行個體介面的子網路
    • FIRST_INTERFACE_NAME:您在步驟 1 中建立的介面名稱
    • REGION:Cloud Router 所在的 Google Cloud 區域,例如 us-central1
    • PROJECT_ID:Cloud Router 的專案 ID,例如 my-project

    cloud-router-a 的指令範例

    下列指令會在 cloud-router-a 上建立第一個介面:

    gcloud compute routers add-interface cloud-router-a \
       --interface-name=interface-1 \
       --ip-address=10.1.3.14 \
       --subnetwork=subnet-a \
       --region=us-central1 \
       --project=my-project
    

    下列指令會在 cloud-router-a 上建立第二個介面:

    gcloud compute routers add-interface cloud-router-a \
        --interface-name=interface-2 \
        --ip-address=10.1.3.15 \
        --subnetwork=subnet-a \
        --redundant-interface=interface-1 \
        --region=us-central1 \
        --project=my-project
    

    「cloud-router-b」的指令範例

    下列指令會在 cloud-router-b 上建立第一個介面:

    gcloud compute routers add-interface cloud-router-b \
        --interface-name=interface-1 \
        --ip-address=192.168.10.14 \
        --subnetwork=subnet-b \
        --region=us-central1 \
        --project=my-project
    

    下列指令會在 cloud-router-b 上建立第二個介面:

    gcloud compute routers add-interface cloud-router-b \
       --interface-name=interface-2 \
       --ip-address=192.168.10.15 \
       --subnetwork=subnet-b \
       --redundant-interface=interface-1 \
       --region=us-central1 \
       --project=my-project
    

API

如要在 Cloud Router 上建立備援介面,請使用 compute.routers.patch 方法。

請使用下列要求兩次,一次用於 cloud-router-a,另一次用於 cloud-router-b:

    "PATCH
    https"://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/NAME
    {
      "region":"REGION",
      "interfaces":[
        {
          "name":"FIRST_INTERFACE_NAME",
          "privateIpAddress:"FIRST_INTERFACE_IP_ADDRESS",
          "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET"
        },
        {
          "name":"SECOND_INTERFACE_NAME",
          "privateIpAddress:"SECOND_INTERFACE_IP_ADDRESS",
          "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET",
          "redundantInterface": "FIRST_INTERFACE_NAME"
        }
      ]
    }
  

更改下列內容:

  • PROJECT_ID:Cloud Router 的專案 ID,例如 my-project
  • REGION:Cloud Router 所在的 Google Cloud 區域,例如 us-central1
  • NAME:要更新的 Cloud Router 名稱,例如 cloud-router-a 或 cloud-router-b
  • NETWORK:包含 Cloud Router 的虛擬私有雲網路,例如 network-a
  • FIRST_INTERFACE_NAME:第一個介面的名稱,例如 interface-1
  • FIRST_INTERFACE_IP_ADDRESS:用於第一個介面的 RFC 1918 內部 IP 位址;如未指定值,Google 會嘗試在子網路的主要 IP 位址範圍中尋找可用位址
  • SUBNET:包含兩個 Cloud Router 介面和對應路由器設備執行個體介面的子網路
  • SECOND_INTERFACE_NAME:第二個介面的名稱,例如 interface-2
  • SECOND_INTERFACE_IP_ADDRESS:用於第二個介面的 RFC 1918 內部 IP 位址;如未指定值,Google 會嘗試在子網路的主要 IP 位址範圍中尋找可用位址

    「cloud-router-a」的指令範例

    下列指令會在 cloud-router-a 上建立兩個介面:

     "PATCH https"://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/routers/cloud-router-a
      {
       "region":"us-central1",
       "interfaces":[
         {
          "name":"router-appliance-interface-0",
          "privateIpAddress:"10.1.3.14",
          "subnetwork": "https://www.googleapis.com/compute/v1/projects/my-project/regions/us-west1/subnetworks/subnet-a"
         },
         {
          "name":"router-appliance-interface-1",
          "privateIpAddress:"10.1.3.15",
          "subnetwork": "https://www.googleapis.com/compute/v1/projects/my-project/regions/us-west1/subnetworks/subnet-a",
          "redundantInterface": "router-appliance-interface-0"
         }
       ]
      }
     

    cloud-router-b 的指令範例

    下列指令會在 cloud-router-b 上建立兩個介面:

    "PATCH https"://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/routers/cloud-router-b
     {
       "region":"us-central1",
       "interfaces":[
         {
          "name":"router-appliance-interface-0",
          "privateIpAddress:"192.168.10.14",
          "subnetwork": "https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/subnetworks/subnet-b"
       },
       {
          "name":"router-appliance-interface-1",
          "privateIpAddress:"192.168.10.15",
          "subnetwork": "https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/subnetworks/subnet-b",
          "redundantInterface": "router-appliance-interface-0"
       }
     ]
    }
    

在各個 Cloud Router 設定 BGP 對接

您必須為路由器設備執行個體上的每個介面建立兩個 BGP 對等互連工作階段,每個 Cloud Router 介面各一個。如果您使用範例拓撲中的值,請執行下列操作:

  • 在 cloud-router-a 和 router-app-a 的 network-a 介面之間建立兩個對等互連工作階段。

  • 在 cloud-router-b 和 router-app-a 的 network-b 介面之間建立兩個對等互連工作階段。

控制台

請完成下列步驟兩次,一次是針對 spoke-a,另一次是針對 spoke-b:

  1. 前往「Network Connectivity Center」頁面。
  2. 前往 Network Connectivity Center
  3. 在專案選單中選取專案。
  4. 按一下「輪輻」分頁標籤。
  5. 在「Spoke name」(Spoke 名稱) 欄中選取 Spoke,即可查看「Spoke details」(Spoke 詳細資料) 頁面。例如,選取 spoke-a 或 spoke-b。
  1. 在「名稱」欄中找到 router-app-a。 按一下展開圖示,即可顯示「設定 BGP 工作階段」連結。點選任一連結。系統隨即會顯示「設定 Cloud Router 和 BGP 工作階段」面板。

  1. 在「Cloud Router」部分,執行下列其中一項操作:

    • 如要選取現有的 Cloud Router,請按一下「使用現有項目」。使用「Cloud Router」欄位找出適當的資源,然後按一下「選取並繼續」。
    • 如要在「Network Connectivity Center」頁面建立 Cloud Router,請按一下「Create new」(新建),然後按照提示建立 Cloud Router。然後按一下「建立並繼續」。
  2. 在「BGP 工作階段」下方,設定兩個 BGP 工作階段。請完成下列步驟兩次,每次各針對一個工作階段:
    1. 按一下「編輯 BGP 工作階段」。
    2. 填寫表單,輸入「名稱」、「對等互連 ASN」和「Advertise 路徑的優先順序 (MED)」。 按一下「儲存並繼續」。
  3. 點選「建立」。

gcloud

如要在 Cloud Router 上建立 BGP 對等互連,請使用 gcloud compute routers add-bgp-peer 指令。

請完成下列步驟兩次,一次用於 cloud-router-a,另一次用於 cloud-router-b:

  1. 建立第一個 BGP 對等互連:

    gcloud compute routers add-bgp-peer NAME \
        --peer-name=PEER_NAME \
        --interface=INTERFACE \
        --peer-ip-address=PEER_IP_ADDRESS \
        --peer-asn=PEER_ASN \
        --instance=ROUTER_APPLIANCE \
        --instance-zone=ROUTER_APPLIANCE_ZONE \
        --region=REGION
    
  2. 建立第二個 BGP 對等互連:

    gcloud compute routers add-bgp-peer NAME \
        --peer-name=PEER_NAME \
        --interface=INTERFACE \
        --peer-ip-address=PEER_IP_ADDRESS \
        --peer-asn=PEER_ASN \
        --instance=ROUTER_APPLIANCE \
        --instance-zone=ROUTER_APPLIANCE_ZONE \
        --region=REGION
    

    更改下列內容:

    • NAME:要更新的 Cloud Router 名稱,例如 cloud-router-a 或 cloud-router-b
    • PEER_NAME:要與路由器設備執行個體建立的 BGP 對接工作階段名稱
    • INTERFACE:這個 BGP 對等互連的介面名稱
    • PEER_IP_ADDRESS:對等路由器 (路由器設備執行個體) 的內部 IP 位址,例如 10.1.3.8 或 192.168.10.3
    • PEER_ASN:這個 BGP 對等互連的 BGP 自治系統編號 (ASN),必須是 RFC 6996 定義的 16 位元或 32 位元私人 ASN
    • ROUTER_APPLIANCE:做為路由器設備執行個體的 VM 名稱,例如 router-app-a
    • ROUTER_APPLIANCE_ZONE:做為路由器設備執行個體的 VM 所在可用區,例如 us-central1-a
    • REGION:做為路由器設備執行個體的 VM 所在區域,例如 us-central1

    cloud-router-a 的指令範例

    使用下列指令為 cloud-router-a 建立 BGP 對等互連:

    gcloud compute routers add-bgp-peer cloud-router-a \
       --peer-name=router-appliance-bgp-peer-router-app-a-0 \
       --interface=router-appliance-interface-0 \
       --peer-ip-address=10.1.3.8 \
       --peer-asn=65001 \
       --instance=router-app-a \
       --instance-zone=us-central1-a \
       --region=us-central1
    
    gcloud compute routers add-bgp-peer cloud-router-a \
      --peer-name=router-appliance-bgp-peer-router-app-a-1 \
      --interface=router-appliance-interface-1 \
      --peer-ip-address=10.1.3.8 \
      --peer-asn=65001 \
      --instance=router-app-a \
      --instance-zone=us-central1-a \
      --region=us-central1
    

    「cloud-router-b」的指令範例

    使用下列指令為 cloud-router-b 建立 BGP 對等互連:

    gcloud compute routers add-bgp-peer cloud-router-b \
       --peer-name=router-appliance-bgp-peer-router-app-a-0 \
       --interface=router-appliance-interface-0 \
       --peer-ip-address=192.168.10.3 \
       --peer-asn=65001 \
       --instance=router-app-a \
       --instance-zone=us-central1-a \
       --region=us-central1
    
    gcloud compute routers add-bgp-peer cloud-router-b \
      --peer-name=router-appliance-bgp-peer-router-app-a-1 \
      --interface=router-appliance-interface-1 \
      --peer-ip-address=192.168.10.3 \
      --peer-asn=65001 \
      --instance=router-app-a \
      --instance-zone=us-central1-a \
      --region=us-central1
    

API

如要在 Cloud Router 上建立 BGP 對等互連,請使用 compute.routers.patch 方法。請使用這個方法兩次,一次用於 cloud-router-a,另一次用於 cloud-router-b。

 PATCH
https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/NAME
   {
    "bgpPeers": [
     {
       "name": "PEER_NAME",
       "interfaceName": "INTERFACE_NAME",
       "ipAddress": "IP_ADDRESS",
       "peerIpAddress": "PEER_IP_ADDRESS",
       "routerApplianceInstance": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zone/ROUTER_APPLIANCE_ZONE/instances/ROUTER_APPLIANCE_INSTANCE",
       "peerAsn": PEER_ASN,
     }
     {
       "name": "PEER_NAME",
       "interfaceName": "INTERFACE_NAME",
       "ipAddress": "IP_ADDRESS",
       "peerIpAddress": "PEER_IP_ADDRESS",
       "routerApplianceInstance": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zone/ROUTER_APPLIANCE_ZONE/instances/ROUTER_APPLIANCE_INSTANCE",
       "peerAsn": PEER_ASN
     }
    ]
   }
 

更改下列內容:

  • PROJECT_ID:Cloud Router 的專案 ID
  • REGION:做為路由器設備執行個體的 VM 所在區域
  • NAME:要更新的 Cloud Router 名稱
  • PEER_NAME:要與路由器設備執行個體建立的 BGP 對等互連工作階段名稱
  • INTERFACE_NAME:要新增對等的 Cloud Router 介面名稱
  • IP_ADDRESS:用於對等互連連線的 Cloud Router RFC 1918 內部 IP 位址
  • PEER_IP_ADDRESS:做為路由器設備執行個體的 VM 內部 IP 位址,例如 10.1.3.8 或 192.168.10.3
  • ROUTER_APPLIANCE_INSTANCE:以網址格式表示的名稱,適用於做為路由器設備執行個體的 VM
  • ROUTER_APPLIANCE_ZONE:做為路由器設備執行個體的 VM 所在的可用區
  • PEER_ASN:這個 BGP 對等互連的 BGP 自治系統編號 (ASN);這個 ASN 必須是 RFC 6996 中定義的 16 位元或 32 位元私有 ASN

    「cloud-router-a」的指令範例

    PATCH
    https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-west1/routers/cloud-router-a
    {
     "bgpPeers": [
     {
       "name": "router-appliance-bgp-peer-router-app-a-0",
       "interfaceName": "router-appliance-interface-0",
       "ipAddress": "10.1.3.14",
       "peerIpAddress": "10.1.3.8",
       "routerApplianceInstance": "https://compute.googleapis.com/compute/v1/projects/my-project/zone/us-central1-a/instances/router-app-a",
       "peerAsn": 65001,
     }
     {
       "name": "router-appliance-bgp-peer-router-app-a-1",
       "interfaceName": "router-appliance-interface-1",
       "ipAddress": "10.1.3.15",
       "peerIpAddress": "10.1.3.8",
       "routerApplianceInstance": "https://compute.googleapis.com/compute/v1/projects/my-project/zone/us-central1-a/instances/router-app-a",
       "peerAsn": 65001
     }
     ]
    }
    

    「cloud-router-b」的指令範例

    PATCH
    https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-west1/routers/cloud-router-b
    {
     "bgpPeers": [
     {
       "name": "router-appliance-bgp-peer-router-app-a-0",
       "interfaceName": "router-appliance-interface-0",
       "ipAddress": "192.168.10.14",
       "peerIpAddress": "192.168.10.3",
       "routerApplianceInstance": "https://compute.googleapis.com/compute/v1/projects/my-project/zone/us-central1-a/instances/router-app-a",
       "peerAsn": 65001,
     }
     {
       "name": "router-appliance-bgp-peer-router-app-a-1",
       "interfaceName": "router-appliance-interface-1",
       "ipAddress": "192.168.10.15,
       "peerIpAddress": "192.168.10.3",
       "routerApplianceInstance": "https://compute.googleapis.com/compute/v1/projects/my-project/zone/us-central1-a/instances/router-app-a",
       "peerAsn": 65001
     }
     ]
    }
    

在路由器設備執行個體上設定 BGP

設定路由器設備執行個體,以便與兩個 Cloud Router 建立 BGP 連線。如要這麼做,請參閱路由器設備映像檔的供應商說明文件。

後續步驟