在 Google Cloud 和 Azure 之間建立高可用性 VPN 連線

本教學課程將示範如何在 Google Cloud 和 Microsoft Azure 之間建立高可用性 (HA) 虛擬私有網路 (VPN) 連線。您可以使用這些高可用性 VPN 服務,在Google Cloud 和 Microsoft Azure Virtual Network Gateway 中的虛擬私有雲 (VPC) 網路之間進行直接通訊。

本文假設您熟悉 VPC 網路、邊界閘道通訊協定 (BGP)、VPN 和網際網路通訊協定安全性 (IPsec) 通道的基礎概念。

Google Cloud 提供高可用性 (HA) VPN 服務,可透過 IPsec VPN 連線,將您的 VPC 網路連線至 Google Cloud以外執行的環境,例如 Microsoft Azure。高可用性 VPN 在根據 Google 最佳做法進行設定時,會提供服務可用性達 99.99% 的服務水準協議

架構總覽

下圖說明本文件中所述的架構。

架構總覽。

圖表中顯示的架構包含下列元件:

  • Cloud Router:這是一個全分散式和代管的 Google Cloud服務,可為您的 VPC 網路提供使用 BGP 的動態轉送功能。
  • 高可用性 VPN 閘道:在 Google Cloud上執行的 Google 管理 VPN 閘道。每個高可用性 VPN 閘道都是具備兩個介面的區域性資源:介面 0 和 1。每個介面都有專屬的外部 IP 位址。
  • VPN 通道:從 Google Cloud 上的高可用性 VPN 閘道到 Azure 上的對等互連 VPN 閘道之間的連線,用於傳送經過加密的流量。
  • 虛擬網路閘道:在 Azure 雲端服務中定義的兩個私人網路。

每個 Virtual Network Gateway 連線都會附帶兩個通道,這些通道會預先設定為指向單一客戶閘道,在本例中,就是 Google Cloud中的高可用性 VPN 閘道介面。在這種設定下,要達到 99.99% 服務可用性的服務水準協議,所需的 Cloud VPN 通道數量至少為兩個。

程序所需的 IP 位址

為完成本文件中的程序,您會在 Google Cloud 和 Azure 中使用各種 IP 位址。建立資源時,系統會自動指派部分 IP 位址。

對於未自動指派的位址,您可以根據可用的 IP 位址和貴機構的需求來定義這些 IP 位址。

Google Cloud 資源需要下列 IP 位址:

  • 為虛擬私有雲網路建立子網路時,必須使用使用者定義的 IP 位址範圍。
  • 建立高可用性 VPN 閘道後, Google Cloud會自動將兩個外部 IP 位址指派給高可用性 VPN 閘道。Google 會為閘道兩個介面各分配一個 IP 位址。您需要這些介面的 IP 位址,才能在 Azure 中設定本機網路閘道。
  • 在 Google Cloud中建立高可用性 VPN 通道時,每個通道都需要一個連線至 Cloud Router 的 BGP 介面,以及一個連線至 Azure 中主動/主動虛擬網路閘道 (VPN 閘道) 的 BGP 介面。針對每個通道,請在 169.254.21.*169.254.22.* 範圍的 /30 區塊中,決定一對連結本機 BGP 對等互連 IPv4 位址。這些範圍是 Azure APIPA BGP 對等互連 IPv4 位址的有效範圍。您必須選取四個 IP 位址。

    您選取的 BGP 對等互連 IPv4 位址,必須在 虛擬私有雲網路的所有地區的所有 Cloud Router 中皆為唯一。

Azure 資源需要下列 IP 位址:

  • 建立虛擬網路 (VNet) 時,VNet 需要網路的 IP 位址空間,以及網路子網路的 IP 位址空間。您可以使用預設的位址空間,也可以輸入使用者定義的位址空間。
  • 建立主動-主動虛擬網路閘道 (VPN 閘道) 時,閘道需要子網路位址範圍。您可以使用預設範圍,也可以輸入使用者定義的範圍。
  • 為雙主 VPN 閘道設定 BGP 時,閘道需要兩個 APIPA BGP 對等 IP 位址。如先前所述,Azure APIPA BGP 對等點 IP 位址的有效範圍為 169.254.21.*169.254.22.*
  • 建立主動/主動 VPN 閘道後,Azure 會自動為每個閘道的介面指派外部 IP 位址。您需要這些 IP 位址,才能在 Google Cloud中設定對等互連 VPN 閘道。

定義 IP 位址時,請務必為每個網路使用一組專屬的 IP 位址。

目標

  • 建立 Azure 虛擬網路 (VNet) 和主動-主動虛擬網路閘道 (VPN 閘道)。
  • 在 Google Cloud上建立必要元件:VPC 網路、Cloud Router、高可用性 VPN 閘道、對等互連 VPN 閘道,以及兩個具有 BGP 工作階段的高可用性 VPN 通道。
  • 在 Azure 中建立兩個本機網路閘道和兩個 VPN 連線。請驗證 Cloud Router 設定,並在 Google Cloud中檢查高可用性 VPN 通道的狀態。
  • 測試 Google Cloud 上的 VPC 網路與 Azure 上的虛擬網路 (VNet) 之間的 Cloud VPN 連線。

費用

本文件中的程序會使用 Google Cloud的可計費元件,包括:

如要預估 Google Cloud 元件的費用,請使用 Google Cloud Pricing Calculator

本文件中的程序會使用 Microsoft Azure Cloud 服務的可計費元件,包括:

  • VPN 閘道
  • 區域網路閘道

如要預估 Azure 元件的費用,請使用 Azure 定價計算工具

事前準備

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Make sure that billing is enabled for your Google Cloud project.

  3. Enable the Compute Engine API.

    Enable the API

  4. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  5. 請確認您具備必要的管理員角色,才能設定網路元件:

    • 聯播網管理員:compute.networkAdmin
    • 安全性管理員:compute.securityAdmin
    • Compute 管理員:compute.admin

    如要進一步瞭解這些角色的用途,請參閱「網路相關職務的 IAM 角色」。

在 Azure 中建立 VNet 和主動/主動 VPN 閘道

您需要在 Azure 中設定下列元件:

  • 可讓 Azure 資源與 Google Cloud VPN 通訊的 Azure 虛擬網路 (VNet)。
  • 雙主機虛擬網路閘道 (VPN 閘道),可讓閘道虛擬機器 (VM) 的兩個執行個體建立連線至 Google Cloud VPN 的 VPN 通道。

建立 VNet

VNet 可讓 Azure 資源安全地相互通訊,以及與網際網路和其他網路 (例如 Cloud VPN) 通訊。如要進一步瞭解如何建立 VNet,請參閱 Azure 說明文件 (關於建立 VNet)

  1. 登入 Azure 入口網站。
  2. 在「Search resources, service, and docs (G+/)」方塊中,輸入 virtual network
  3. 在「市集」結果清單中,選取「虛擬網路」
  4. 在「Virtual network」(虛擬網路) 頁面中,選取「Create」(建立)
  5. 在「建立虛擬網路」頁面的「基本」分頁中,針對「專案詳細資料」和「執行個體詳細資料」設定下列 VNet 設定:

    1. 在「訂閱」方塊中,確認所列訂閱項目是否正確。如要變更訂閱項目,請從清單中選取訂閱項目。
    2. 如要指定資源群組,請按一下「建立新群組」,然後輸入資源群組名稱,例如 azure‑to‑google‑resgroup
    3. 在「名稱」方塊中輸入 VNet 的名稱,例如 azure‑to‑google‑network
    4. 在「Region」方塊中,選取 VNet 的位置。

      您選取的位置會決定您部署至這個虛擬網路的資源儲存位置。

  6. 在「IP 位址」分頁標籤的「IPv4 位址空間」方塊中,使用 Azure 建立的預設位址空間和子網路。

  7. 在「Security」分頁中,將「BastionHost」、「DDos Protection Standard」和「Firewall」的值保留為預設值「Disable」

  8. 如要驗證 VNet 設定,請選取「查看 + 建立」

  9. 驗證設定後,請選取「建立」

建立主動/主動 VPN 閘道

下列程序會建立主動/主動 VPN 閘道:

  • 第一個程序會定義專案和執行個體詳細資料
  • 第二個程序會指定閘道的 IP 位址。

您目前只需建立主動-主動 VPN 閘道。您必須先建立 Google Cloud 元件,才能在 Azure 中設定必要的通道。如要進一步瞭解如何建立主動/主動 VPN 閘道,請參閱 Azure 說明文件中的「使用入口網站設定主動/主動 VPN 閘道」一文。

定義閘道詳細資料

  1. 登入 Azure 入口網站。
  2. 在「Search resources, service, and docs (G+/)」中,輸入 virtual network gateway
  3. 在搜尋結果的「服務」下方,找出並選取「虛擬網路閘道」
  4. 在「Virtual network gateway」頁面中,選取「Create」
  5. 在「Create virtual network gateway」頁面的「Basics」分頁中,在「Project details」和「Instance details」部分指定下列選項值:

    1. 在「訂閱」清單中,選取要使用的訂閱項目。
    2. 選用:在「閘道子網路位址範圍」方塊中,輸入子網路的位址範圍。
    3. 確認「Resource Group」顯示與您在此頁面上選取的虛擬網路相對應的資源群組。
    4. 在「名稱」中,輸入閘道的名稱,例如 azure‑to‑google‑gateway
    5. 在「區域」部分,選取與建立 VNET 時相同的區域。
    6. 在「閘道類型」中,選取「VPN」
    7. 在「VPN 類型」中,選取「依據路徑」VPN 類型。

    8. 在「SKU」SKU清單中,選取要使用的網關 SKU。

      下拉式清單中列出的 SKU 會因所選 VPN 類型而異。

    9. 在「世代」清單中,選取要使用的世代。

    10. 在「Virtual network」(虛擬網路) 清單中,選取先前建立的 VNet

  6. 請保留這個頁面,以便執行下一個程序。

定義閘道 IP 位址

  1. 在「建立虛擬網路閘道」頁面的「基本」分頁中,按照下列步驟建立主動/主動 VPN 閘道使用的外部 IP 位址:

    1. 在「Public IP address」(公開 IP 位址) 部分,選取「新建」

      Azure 會自動將外部 IP 位址指派給雙主機 VPN 閘道。

    2. 在「公開 IP 位址名稱」方塊中,輸入外部 IP 位址例項的名稱,例如 azure‑to‑google‑network‑ip1

    3. 在「啟用主動-主動模式」部分,選取「已啟用」

    4. 選用:如果您的地區提供供應區域,請設定供應區域。例如,您可以選取「區域備援」

    5. 在「第二個公開 IP 位址」部分,選取「建立新項目」

    6. 在「公開 IP 位址名稱」方塊中,輸入第二個外部 IP 位址的名稱,例如 azure‑to‑google‑network‑ip2

    7. 在「Configure BGP」部分,選取「Enabled」

    8. 針對自治系統編號 (ASN),請將 ASN 設為可接受且有效的值。

      您可以在Google Cloud中為通道設定 BGP 工作階段時,使用這個 ASN 值。將這個值記錄為 AZURE_ASN,以便參照這個主動/主動 VPN 閘道。

    9. 在「自訂 Azure APIPA BGP IP 位址」中,輸入第一個 APIPA BGP IP 位址,並將值記錄為 AZURE_BGP_IP_0。Azure APIPA BGP IP 位址的有效範圍為 169.254.21.*169.254.22.*

    10. 在「第二個自訂 Azure APIPA BGP IP 位址」中,輸入第二個 APIPA BGP IP 位址,並將值記錄為 AZURE_BGP_IP_1。您會在 Google Cloud中設定 BGP 工作階段時使用這些變數。

  2. 如要執行驗證,請選取「Review + create」

  3. 驗證完成後,請選取「建立」來部署 VPN 閘道。

查看並記錄主動/主動 VPN 閘道的外部 IP 位址

您需要 Azure 自動指派給主動-主動 VPN 閘道的外部 IP 位址。您可以使用這些 IP 位址,在 Google Cloud中建立對等互連 VPN 閘道資源。

  1. 在剛建立的雙活閘道的「總覽」頁面中,找出閘道的外部 IP 位址。
  2. 記下畫面上顯示的 IP 位址:
    • 將第一個外部 IP 位址記錄為 AZURE_GW_IP_0
    • 將第二個外部 IP 位址記錄為 AZURE_GW_IP_1

稍後,本文會將這些 IP 位址稱為 AZURE_GW_IP_0AZURE_GW_IP_1

建立 Google Cloud 元件

在 Google Cloud上,您需要設定下列元件:

  • 虛擬私有雲網路。
  • 高可用性 VPN 閘道。
  • Cloud Router。
  • 對等互連 VPN 閘道。
  • 含有 BGP 工作階段的高可用性 VPN 通道。

下列程序假設您已按照「事前準備」一文所述設定 Google Cloud 。如果您尚未完成這些步驟,請立即完成。

在 Google Cloud上建立 VPC 網路、子網路、高可用性 VPN 閘道和 Cloud Router

在 Google Cloud上建立虛擬私有雲網路、建立高可用性 VPN 閘道、建立 Cloud Router,然後在 Google Cloud上設定防火牆規則。

  1. 在 Google Cloud Shell 中,請確認您使用的是您建立或選取的 Cloud 專案:

    gcloud config set project YOUR_PROJECT_ID
    
    export PROJECT_ID=`gcloud config list   --format="value(core.project)"`

    使用您的 Cloud 專案 ID 取代 YOUR_PROJECT_ID

  2. 建立自訂虛擬私有雲網路,當中含有單一子網路:

    gcloud compute networks create NETWORK \
        --subnet-mode SUBNET_MODE \
        --bgp-routing-mode BGP_ROUTING_MODE

    更改下列內容:

    • NETWORK:網路名稱,例如 google‑to‑azure‑vpc
    • SUBNET_MODE子網路模式設為 custom
  3. BGP_ROUTING_MODEBGP 路由模式設為 global

    指令應如下所示:

    gcloud compute networks create google-to-azure-vpc \
        --subnet-mode custom \
        --bgp-routing-mode global
  4. 建立一個子網路來代管測試 VM:

    gcloud compute networks subnets create SUBNET_NAME \
        --network NETWORK \
        --region SUBNET_REGION \
        --range SUBNET_IP_ADDRESS_RANGE

    更改下列內容:

    指令應如下所示:

    gcloud compute networks subnets create subnet-central1  \
        --network google-to-azure-vpc \
        --region us-central1 \
        --range 10.1.1.0/24
    
  5. 建立高可用性 VPN 閘道:

    gcloud compute vpn-gateways create HA_VPN_GATEWAY_NAME \
        --network NETWORK \
        --region REGION

    HA_VPN_GATEWAY_NAME 替換為 HA VPN 閘道的名稱。

    指令應如下所示:

    gcloud compute vpn-gateways create ha-vpn-gw-a \
       --network google-to-azure-vpc \
       --region us-central1
    

    您建立的閘道應類似下列範例輸出內容:

    Created [https://www.googleapis.com/compute/v1/projects/YOUR_PROJECT_ID/regions/us-central1/vpnGateways/ha-vpn-gw-a].
    NAME          INTERFACE0     INTERFACE1     NETWORK     REGION
    ha-vpn-gw-a   203.0.113.1   203.0.113.2   google-to-azure-vpc   us-central1
    

    輸出內容會列出已自動指派給各個閘道介面 (INTERFACE0INTERFACE1) 的外部 IPv4 位址。在 Azure 上設定本機網路閘道時,您需要這些 IP 位址:

    • HA_VPN_INT_0 中記錄 INTERFACE0 的 IP 位址。
    • HA_VPN_INT_1 中記錄 INTERFACE1 的 IP 位址。
  6. 建立 Cloud Router:

    gcloud compute routers create ROUTER_NAME \
        --region REGION \
        --network NETWORK \
        --asn GOOGLE_ASN \

    更改下列內容:

    • ROUTER_NAME:Cloud Router 的名稱。
    • REGION:建立高可用性 VPN 閘道和通道的地區。
    • GOOGLE_ASN:您要建立的 Cloud Router 專屬自治系統編號 (ASN)。這可以是任何未在同個地區和網路中用做對等 ASN 的私人 ASN,範圍為 64512-655344200000000-4294967294

    指令應如下所示:

    gcloud compute routers create cloud-router \
        --region us-central1 \
        --network google-to-azure-vpc \
        --asn 65534
    

為 Azure VPN 建立對等互連 VPN 閘道

在本節中,您將建立外部 VPN 閘道資源,以便提供 Azure 中主動/主動 VPN 閘道的相關資訊。 Google Cloud 您可以建立單一對等互連 VPN 閘道,使用兩個個別介面,每個介面都有專屬的外部 IP 位址。

建立具有兩個介面的單一外部對等互連 VPN 閘道:

gcloud compute external-vpn-gateways create AZURE_GW_NAME \
     --interfaces 0=AZURE_GW_IP_0,1=AZURE_GW_IP_1

更改下列內容:

  • AZURE_GW_NAME:Azure 主動-主動 VPN 閘道的名稱
  • AZURE_GW_IP_0:對等互連閘道中一個介面的外部 IP 位址
  • AZURE_GW_IP_1:對等閘道其他介面的外部 IP 位址

您建立的對等互連 VPN 閘道資源應類似於以下範例,其中 AZURE_GW_IP_0AZURE_GW_IP_1 會顯示對等閘道介面的實際外部 IP 位址:

gcloud compute external-vpn-gateways create azure-peer-gw \
     --interfaces 0=203.0.113.1,1=203.0.113.2

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/externalVpnGateways/peer-gw].
NAME     INTERFACE0    INTERFACE1
azure-peer-gw  203.0.113.1  203.0.113.2

建立 VPN 通道

您需要建立兩個 VPN 通道:對等 VPN 閘道中的每個介面一個通道。設定連往 Azure 的 VPN 通道時,請使用 IKEv2 加密通訊協定。

針對本節使用的指令,請取代下列項目:

  • TUNNEL_NAME_IF0TUNNEL_NAME_IF1:通道的名稱;透過加入閘道介面名稱來命名通道,有助於日後識別通道。
  • AZURE_GW_NAME:先前建立的外部對等互連閘道的名稱
  • AZURE_GW_INT_NUM_0AZURE_GW_INT_NUM_1:先前在外部對等閘道上設定的介面編號。
  • IKE_VERS:針對 IKEv2 使用 2
  • SHARED_SECRET:預先共用金鑰 (共用密鑰),必須與您在 Azure 中設定 VPN 連線時指定的預先共用金鑰相符。如需最佳化建議,請參閱「產生高強度的預先共用金鑰」。
  • HA_VPN_GATEWAY_NAME:高可用性 VPN 閘道的名稱。
  • INT_NUM_0:您先前建立的高可用性 VPN 閘道中,第一個介面的編號 0
  • INT_NUM_1:您先前建立的高可用性 VPN 閘道中,第二個介面的編號 1

請按照下列步驟建立 VPN 通道:

  1. 為介面 0 建立 VPN 通道:

    gcloud compute vpn-tunnels create TUNNEL_NAME_IF0 \
       --peer-external-gateway=AZURE_GW_NAME \
       --peer-external-gateway-interface=AZURE_GW_INT_NUM_0  \
       --region=REGION \
       --ike-version=IKE_VERS \
       --shared-secret=SHARED_SECRET \
       --router=ROUTER_NAME \
       --vpn-gateway=HA_VPN_GATEWAY_NAME \
       --interface=INT_NUM_0

    指令應如下所示:

    gcloud compute vpn-tunnels create azure-tunnel-1 \
       --peer-external-gateway azure-peer-gw \
       --peer-external-gateway-interface 0  \
       --region us-central1  \
       --ike-version 2 \
       --shared-secret xo2aTKHipD/oE1GAXgj3lMwjBmJXZjqD \
       --router cloud-router \
       --vpn-gateway ha-vpn-gw-a \
       --interface 0
  2. 為介面 1 建立 VPN 通道:

    gcloud compute vpn-tunnels create TUNNEL_NAME_IF1 \
      --peer-external-gateway=AZURE_GW_NAME \
      --peer-external-gateway-interface=AZURE_GW_INT_NUM_1 \
      --region=REGION \
      --ike-version=IKE_VERS \
      --shared-secret=SHARED_SECRET \
      --router=ROUTER_NAME \
      --vpn-gateway=HA_VPN_GATEWAY_NAME \
      --interface=INT_NUM_1

    指令應如下所示:

    gcloud compute vpn-tunnels create azure-tunnel-2 \
       --peer-external-gateway azure-peer-gw \
       --peer-external-gateway-interface 1  \
       --region us-central1  \
       --ike-version 2 \
       --shared-secret xo2aTKHipD/oE1GAXgj3lMwjBmJXZjqD \
       --router cloud-router \
       --vpn-gateway ha-vpn-gw-a \
       --interface 1

建立 BGP 工作階段

如要進行動態轉送,您可以使用 Cloud Router,在 Google Cloud 和 Azure 之間建立 BGP 工作階段。如同「Cloud VPN 總覽」和「Cloud VPN 網路和通道轉送」一文所述,建議您盡可能使用動態轉送,而非靜態轉送。

您必須為每個 VPN 通道建立 BGP 工作階段。每個 BGP 工作階段都包含一個連線至 Cloud Router 的 BGP 介面和一個 BGP 對等點。您為剛建立的兩個 VPN 通道各建立一個 BGP 對等端。

針對本節使用的指令,請取代下列項目:

  • ROUTER_NAME:您指派給 Cloud Router 的名稱。
  • ROUTER_INTERFACE_NAME_0ROUTER_INTERFACE_NAME_1:Cloud Router BGP 介面的名稱;建議使用與先前設定的通道名稱相關的名稱。
  • MASK_LENGTH:指定 30;同一個 Cloud Router 上的每個 BGP 工作階段都必須使用 169.254.0.0/16 區塊中的不重複 /30CIDR。
  • GOOGLE_BGP_IP_0GOOGLE_BGP_IP_1:您設定的 HA VPN 閘道介面 BGP 對接 IP 位址;每個通道都會使用不同的閘道介面。由於 Azure APIPA BGP 對等 IP 位址的許可範圍為 169.254.21.*169.254.22.*,因此您必須在這些範圍的 /30 CIDR 中選取可用的 IP 位址,用於 Cloud Router BGP 對等 IP 位址。
  • AZURE_BGP_IP_0AZURE_BGP_IP_1:您已在 Azure 主動/主動 VPN 閘道上設定的 APIPA BGP 對等互連 IP 位址;每個通道都會使用不同的位址。
  • TUNNEL_NAME_IF0TUNNEL_NAME_IF1:與您設定的高可用性 VPN 閘道介面相關聯的通道。
  • AZURE_ASN:您在 Azure 中為主動-主動對等點 VPN 閘道設定的 ASN。
  • BGP_PEER_NAME_1BGP_PEER_NAME_2 分別為每個 BGP 對等端提供不重複的名稱。例如 azure‑bgp‑peer‑1azure‑bgp‑peer‑2

如要為 VPN 通道建立 BGP 工作階段,請按照下列步驟操作:

  1. 針對第一個 VPN 通道,請將 BGP 介面新增至 Cloud Router:

    gcloud compute routers add-interface ROUTER_NAME \
       --interface-name=ROUTER_INTERFACE_NAME_0 \
       --mask-length=MASK_LENGTH \
       --vpn-tunnel=TUNNEL_NAME_IF0 \
       --ip-address=GOOGLE_BGP_IP_0 \
       --region=REGION

    指令應如下所示:

    gcloud compute routers add-interface cloud-router \
       --interface-name azure-tunnel-1-int-0 \
       --mask-length 30 \
       --vpn-tunnel azure-tunnel-1 \
       --ip-address 169.254.21.2 \
       --region us-central1
    
  2. 針對第一個 VPN 通道,將 BGP 對等點新增至介面:

    gcloud compute routers add-bgp-peer ROUTER_NAME \
       --peer-name=BGP_PEER_NAME_1 \
       --peer-asn=AZURE_ASN \
       --interface=ROUTER_INTERFACE_NAME_0 \
       --peer-ip-address=AZURE_BGP_IP_0 \
       --region=REGION

    指令應如下所示:

    gcloud compute routers add-bgp-peer cloud-router \
       --peer-name azure-bgp-peer-1 \
       --peer-asn 65515 \
       --interface azure-tunnel-1-int-0 \
       --peer-ip-address 169.254.21.1 \
       --region us-central1
    
  3. 針對第二個 VPN 通道,請將 BGP 介面新增至 Cloud Router:

    gcloud compute routers add-interface ROUTER_NAME \
       --interface-name=ROUTER_INTERFACE_NAME_1 \
       --mask-length=MASK_LENGTH \
       --vpn-tunnel=TUNNEL_NAME_IF0 \
       --ip-address=GOOGLE_BGP_IP_1 \
       --region=REGION

    指令應如下所示:

    gcloud compute routers add-interface cloud-router \
       --interface-name azure-tunnel-2-int-1 \
       --mask-length 30 \
       --vpn-tunnel azure-tunnel-2 \
       --ip-address 169.254.22.2 \
       --region us-central1
    
  4. 針對第二個 VPN 通道,將 BGP 對等點新增至介面:

    gcloud compute routers add-bgp-peer ROUTER_NAME \
       --peer-name=BGP_PEER_NAME_2 \
       --peer-asn=AZURE_ASN \
       --interface=ROUTER_INTERFACE_NAME_1 \
       --peer-ip-address=AZURE_BGP_IP_1 \
       --region=REGION

    指令應如下所示:

    gcloud compute routers add-bgp-peer cloud-router \
      --peer-name azure-bgp-peer-2 \
      --peer-asn 65515 \
      --interface azure-tunnel-2-int-1 \
      --peer-ip-address 169.254.22.1 \
      --region us-central1
    

在 Azure 中建立本機網路閘道和 VPN 連線

Google Cloud 元件建立及設定完成後,請返回 Azure 環境,完成與 Azure 的連線 Google Cloud 。如要完成這項連線,您必須在 Azure 中建立下列元件:

  • 兩個代表 Azure 中 Google Cloud VPN 的本機網路閘道。
  • 兩個 VPN 連線,對應至您在 Google Cloud中設定的兩個高可用性 VPN 通道。

建立兩個本機網路閘道

本機網路閘道是代表 Azure 中 Google Cloud VPN 的特定物件。建立本機網路閘道時,請指定下列資訊:

  • 本機網路閘道的名稱。
  • 在連線中使用的高可用性 VPN 介面 IP 位址。
  • 您要建立連線的 Google Cloud Router IP 位址。
  • 透過 VPN 閘道轉送至 Cloud Router 的 IP 位址前置字串。您指定的位址前置字串是位於 Cloud VPN 中的前置字串。如果雲端虛擬私人網路有所變更,或您需要變更 Cloud Router 的外部 IP 位址,可以稍後更新這些值。

您需要建立兩個本機網路閘道:一個閘道連結至 Google Cloud 上的第 1 個高可用性 VPN 通道介面,另一個閘道連結至第 2 個高可用性 VPN 通道介面。

詳情請參閱 Azure 說明文件中「在 Azure 入口網站中建立站對站 VPN 連線」教學課程中的「建立本機網路閘道」部分。

如要建立第一個本機網路閘道,請按照下列步驟操作:

  1. 登入 Azure 入口網站。
  2. 在「Search resources, services, and docs (G+/)」中,輸入「local network gateway」
  3. 在「市集」下方的搜尋結果中,找出並選取「本機網路閘道」
  4. 按一下 [建立]。
  5. 在「建立本機網路閘道」頁面的「基本」分頁中,為本機網路閘道指定下列值:

    1. 在「訂閱」清單中,確認系統顯示的訂閱項目正確無誤。
    2. 在「資源群組」清單中,選取與您在本文件前述為 VNet 建立的資源群組相同的資源群組。
    3. 在「Region」 中,選取 VNet 所在的位置。
    4. 在「名稱」中,輸入本機網路閘道的名稱,例如 azure-to-google-locgateway1
    5. 在「Endpoint」部分,選取「IP address」
    6. 在「IP 位址」方塊中,輸入高可用性 VPN 的 INTERFACE0 IP 位址 (也就是輸入 HA_VPN_INT_0)。
    7. 在「位址空間」中,輸入這個本機網路代表的網路位址範圍。

      您可以新增多個位址空間範圍。請確認您在此處指定的範圍,不會與您要連線的其他網路範圍重疊。

  6. 在「進階」分頁中,按照下列步驟設定 BGP:

    1. 在「設定 BGP 設定」部分,選取「是」
    2. 在「自治系統編號 (ASN)」中,輸入 Cloud Router 的 ASN (也就是輸入 GOOGLE_ASN)。
    3. 在「BGP 對等點 IP 位址」中,輸入通道 1 中 Cloud Router 的 BGP IP 位址 (也就是輸入 GOOGLE_BGP_IP_0)。
  7. 如要驗證本機網路閘道設定,請按一下頁面底部的「Review and」「create」

  8. 驗證通過後,按一下「建立」建立本機網路閘道。

如要建立第二個本機網路閘道,請按照下列步驟操作:

  1. 在 Azure 入口網站的「Search resources, service, and docs (G+/)」中,輸入 local network gateway
  2. 在搜尋結果的「市集」下方,找出並選取「本機網路閘道」
  3. 在「建立本機網路閘道」頁面的「基本」分頁中,為本機網路閘道指定下列值:

    1. 在「訂閱」清單中,確認系統顯示的訂閱項目正確無誤。
    2. 在「資源群組」清單中,選取與您在本文件前述為 VNet 建立的資源群組相同的資源群組。
    3. 在「區域」中,選取與 VNet 相同的區域。
    4. 在「名稱」中,輸入本機網路閘道的名稱,例如 azure-to-google-locgateway2
    5. 在「Endpoint」部分,選取「IP address」
    6. 在「IP 位址」方塊中,輸入 HA VPN 的 INTERFACE1 IP 位址 (也就是輸入 HA_VPN_INT_1)。
    7. 在「位址空間」中,輸入這個區域網路代表的網路位址範圍。

    您可以新增多個位址空間範圍。請確認您在此處指定的範圍,不會與您要連線的其他網路範圍重疊。

  4. 在「進階」分頁中,按照下列步驟設定 BGP:

    1. 在「設定 BGP 設定」部分,選取「是」
    2. 在「自治系統編號 (ASN)」中,輸入 Cloud Router 的 ASN (也就是輸入 GOOGLE_ASN)。
    3. 在「BGP 對等點 IP 位址」中,輸入通道 1 中 Cloud Router 的 BGP IP 位址 (也就是輸入 GOOGLE_BGP_IP_1)。
  5. 如要驗證本機網路閘道設定,請按一下頁面底部的「檢查」和「建立」

  6. 驗證通過後,按一下「建立」建立本機網路閘道。

建立兩個 VPN 連線

如要在 Azure 中建立 VPN 連線,您需要在 Google Cloud上設定高可用性 VPN 通道時,所設定的預先共用金鑰或 SHARED_SECRET

  1. 在 Azure 入口網站中,找出您在「建立主動/主動 VPN 閘道」一文中建立的主動/主動 VPN 閘道。
  2. 選取「連線」
  3. 在「連線」頁面頂端選取「+ 新增」
  4. 在「新增連線」頁面中,為第一個連線指定下列值:
    1. 在「名稱」部分輸入連線名稱,例如 azure-vnet-to-google1
    2. 在「連線類型」部分,選取「站對站 (IPsec)」
    3. 針對「Local network gateway」(區域網路閘道),請指定您建立的第一個區域網路閘道,例如 azure-to-google-locgateway1
    4. 針對「共用金鑰 (PSK)」,請指定您為第一個高可用性 VPN 通道設定的共用金鑰。
    5. 選取「啟用 BGP」
    6. 在「IKE Protocol」(IKE 通訊協定) 中,選取「IKEv2」
    7. 按一下 [確定]
    8. 在「Connections」頁面上,選取「+Add」新增第二個連線,並使用下列值:
    9. 在「名稱」部分,輸入連線的名稱,例如 azure-vnet-to-google2
    10. 在「連線類型」部分,選取「站對站 (IPsec)」
    11. 在「Local network gateway」 中,指定您建立的第二個區域網路閘道,例如 azure-to-google-locgateway2
    12. 針對「共用金鑰 (PSK)」,指定您為第二個高可用性 VPN 通道設定的共用金鑰。
    13. 選取「啟用 BGP」
    14. 在「IKE Protocol」(IKE 通訊協定) 中,選取「IKEv2」
    15. 按一下 [確定]
  5. 在「Connections」頁面上,確認兩個連線的狀態均為「Connected」

驗證設定

在 Google Cloud中,您可以先檢查 (列出) Cloud Router 設定,然後檢查高可用性 VPN 通道的狀態,藉此驗證高可用性 VPN 設定。

  1. 在 Cloud Shell 中,列出 Cloud Router 選擇的 BGP 對等 IP 位址:

    gcloud compute routers get-status ROUTER_NAME \
       --region=REGION \
       --format='flattened(result.bgpPeerStatus[].name,
         result.bgpPeerStatus[].ipAddress, result.bgpPeerStatus[].peerIpAddress)'

    指令應如下所示:

    gcloud compute routers get-status cloud-router \
        --region us-central1 \
    --format='flattened(result.bgpPeerStatus[].name,result.bgpPeerStatus[].ipAddress,result.bgpPeerStatus[].peerIpAddress)'
    

    管理兩個高可用性 VPN 通道 (索引 0 和索引 1) 的 Cloud Router 預期輸出內容應如以下範例所示:

    result.bgpPeerStatus[0].ipAddress:     169.254.21.2
    result.bgpPeerStatus[0].name:          azure-bgp-peer-1
    result.bgpPeerStatus[0].peerIpAddress: 169.254.21.1
    result.bgpPeerStatus[1].ipAddress:     169.254.22.2
    result.bgpPeerStatus[1].name:          azure-bgp-peer-2
    result.bgpPeerStatus[1].peerIpAddress: 169.254.22.1
    
  2. 在 Cloud Shell 中查看第一個高可用性 VPN 通道的狀態:

    gcloud compute vpn-tunnels describe TUNNEL_NAME_IF0 \
       --region=REGION

    更改下列內容:

    • TUNNEL_NAME_IF0:與您設定的第一個高可用性 VPN 閘道介面相關聯的通道。
    • REGION:部署高可用性 VPN 閘道的區域。

    指令應如下所示:

    gcloud compute vpn-tunnels describe azure-tunnel-1 -–region=us-central1
    

    隧道的預期輸出內容應如下所示:

    creationTimestamp: '2022-09-28T17:13:21.592-07:00'
    description: ''
    detailedStatus: Tunnel is up and running.
    id: '278561789474069966'
    ikeVersion: 2
    kind: compute#vpnTunnel
    localTrafficSelector:
    -   0.0.0.0/0
    name: azure-tunnel-1
    peerExternalGateway: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/global/externalVpnGateways/azure-peer-gw
    peerExternalGatewayInterface: 0
    peerIp: 203.0.113.1
    region: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/regions/us-central1
    remoteTrafficSelector:
    -   0.0.0.0/0
    router: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/regions/us-central1/routers/cloud-router
    selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/regions/us-central1/vpnTunnels/azure-tunnel-1
    sharedSecret: '*************'
    sharedSecretHash: ALDZGgSMUxj8KFahMoG_L0Fz9paz
    status: ESTABLISHED
    vpnGateway: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/regions/us-central1/vpnGateways/ha-vpn-gw-a
    vpnGatewayInterface: 0
    
  3. 在 Cloud Shell 中查看第二個高可用性 VPN 通道的狀態:

    gcloud compute vpn-tunnels describe TUNNEL_NAME_IF1 \
       --region=REGION

    更改下列內容:

    • TUNNEL_NAME_IF1:與您設定的第二個高可用性 VPN 閘道介面相關聯的通道。
    • REGION:部署高可用性 VPN 閘道的區域。

    指令應如下所示:

    gcloud compute vpn-tunnels describe azure-tunnel-2 --region=us-central1
    

    隧道的預期輸出內容應如下所示:

    creationTimestamp: '2022-09-28T17:13:21.592-07:00'
    description: ''
    detailedStatus: Tunnel is up and running.
    id: '5665972275117479944'
    ikeVersion: 2
    kind: compute#vpnTunnel
    localTrafficSelector:
    -   0.0.0.0/0
    name: azure-tunnel-2
    peerExternalGateway: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/global/externalVpnGateways/azure-peer-gw
    peerExternalGatewayInterface: 1
    peerIp: 203.0.113.2
    region: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/regions/us-central1
    remoteTrafficSelector:
    -   0.0.0.0/0
    router: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/regions/us-central1/routers/cloud-router
    selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/regions/us-central1/vpnTunnels/azure-tunnel-2
    sharedSecret: '*************'
    sharedSecretHash: ALDZGgSMUxj8KFahMoG_L0Fz9ddd
    

測試連線能力

如要測試高可用性 VPN 連線,您必須先在通道的兩端建立 VM。

接著,請確認您已在 Google Cloud 中定義防火牆規則,允許來自 Azure 網路子網路的傳入 ICMP 流量。設定 VM 和防火牆規則後,您可以使用 ping 測試連線能力,並使用 iperf 測試頻寬。

  1. 在通道的兩端建立測試 VM,以便測試 ping 要求。

    您也必須設定 Azure 網路防火牆,允許來自虛擬私有雲中所用子網路前置字的流量。

  2. 在 Google Cloud上,設定防火牆規則,允許來自 Azure VPN 的傳入 ICMP 流量:

    gcloud compute firewall-rules create RULE_NAME \
        --network NETWORK \
        --direction ingress \
        --action allow \
        --source-ranges AZURE_VNET_RANGE \
        --rules icmp \

    AZURE_VNET_RANGE 替換為已指派給 Azure VNet 的 IP 位址範圍。

    指令應如下所示:

    gcloud compute firewall-rules create allow-azure-icmp \
      --network google-to-azure-vpc \
      --direction ingress \
      --action allow \
      --source-ranges 10.0.0.0/16 \
      --rules icmp
    
  3. 使用 ping 指令測試連線。

  4. 使用 iperf 測量測試機器之間的頻寬。

清除所用資源

刪除您在本教學課程中建立的 Google Cloud 和 Azure 資源。

刪除 Google Cloud 專案

如要避免系統向您的 Google Cloud 帳戶收取本教學課程中所用資源的費用,您可以刪除專案:

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

刪除 Azure 資源群組

刪除建立 VNet 時建立的 Azure Manager 資源群組。在本教學課程中,範例資源群組的名稱為 azure-to-google-resgroup

詳情請參閱「Azure Resource Manager 資源群組和資源刪除作業」。

後續步驟