本教學課程說明如何在 Google Cloud 和 Microsoft Azure 之間建立高可用性 (HA) 虛擬私有網路 (VPN) 連線。您可以使用這些高可用性 VPN 服務,在Google Cloud 中的虛擬私有雲網路與 Microsoft Azure 虛擬網路閘道之間直接通訊。
本文假設您熟悉虛擬私有雲網路、邊界閘道通訊協定 (BGP)、VPN 和網際網路通訊協定安全性 (IPsec) 通道的基本概念。
Google Cloud 提供高可用性 (HA) VPN 服務,透過 IPsec VPN 連線,將虛擬私有雲網路連線至 Google Cloud外部執行的環境,例如 Microsoft Azure。如果按照 Google 最佳做法設定,高可用性 VPN 的服務水準協議 (SLA) 可提供 99.99% 的服務可用性。
架構總覽
下圖顯示本文所述的架構。
架構圖顯示下列元件:
- Cloud Router:全分散式代管服務,可使用 BGP 為虛擬私有雲網路提供動態轉送。 Google Cloud
- 高可用性 VPN 閘道:在 Google Cloud上執行的 Google 代管 VPN 閘道。每個高可用性 VPN 閘道都是區域性資源,具有兩個介面:介面 0 和 1。每個介面都有專屬的外部 IP 位址。
- VPN 通道:從 Azure 上的高可用性 VPN 閘道 Google Cloud 到對等互連 VPN 閘道的連線,加密流量會通過這些連線。
- 虛擬網路閘道:在 Azure 雲端服務中定義的兩個私人網路。
每個虛擬網路閘道連線都包含兩個通道,這些通道已預先設定為指向單一客戶閘道,在本例中為 Google Cloud中的高可用性 VPN 閘道介面。採用這項設定時,如要達到 99.99% 服務可用性的服務水準協議,至少需要兩個 Cloud VPN 通道。
程序所需的 IP 位址
如要完成本文中的程序,您會在 Google Cloud 和 Azure 中使用各種 IP 位址。建立資源時,系統會自動指派部分 IP 位址。
對於未自動指派的位址,您可以根據可用的 IP 位址和貴機構的需求,定義這些 IP 位址。
Google Cloud 資源需要下列 IP 位址:
- 如要為虛擬私有雲網路建立子網路,必須使用使用者定義的 IP 位址範圍。
- 建立高可用性 VPN 閘道後, Google Cloud會自動為高可用性 VPN 閘道指派兩個外部 IP 位址。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上建立必要元件:虛擬私有雲網路、Cloud Router、高可用性 VPN 閘道、對等互連 VPN 閘道,以及兩個具有 BGP 工作階段的高可用性 VPN 通道。
- 在 Azure 中建立兩個本機網路閘道和兩個 VPN 連線。驗證 Cloud Router 設定,並在 Google Cloud中檢查高可用性 VPN 通道的狀態。
- 測試 Google Cloud 上的虛擬私有雲網路與 Azure 上的虛擬網路 (VNet) 之間的 Cloud VPN 連線。
費用
本文中的程序會使用 Google Cloud的計費元件,包括:
如要估算 Google Cloud 元件的費用,請使用 Google Cloud Pricing Calculator。
本文中的程序會使用 Microsoft Azure Cloud 服務的計費元件,包括:
- VPN 閘道
- 區域網路閘道
如要估算 Azure 元件的費用,請使用 Azure 定價計算機。
事前準備
-
在 Google Cloud 控制台的專案選擇器頁面中,選取或建立 Google Cloud 專案。
選取或建立專案所需的角色
- 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您在專案中獲派角色,即可選取該專案。
-
建立專案:如要建立專案,您需要專案建立者角色 (
roles/resourcemanager.projectCreator),其中包含resourcemanager.projects.create權限。瞭解如何授予角色。
如果尚未啟用,請啟用 Compute Engine API。
啟用 API 時所需的角色
如要啟用 API,您必須具備
serviceusage.services.enable權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。-
在 Google Cloud 控制台中啟用 Cloud Shell。
-
確認您具備必要的管理員角色,可設定網路元件:
- 網路管理員:
compute.networkAdmin - 安全管理員:
compute.securityAdmin - Compute 管理員:
compute.admin
如要進一步瞭解這些角色的用途,請參閱「網路相關職務的 IAM 角色」。
- 網路管理員:
在 Azure 建立 VNet 和主動-主動 VPN 閘道
在 Azure 中,您需要設定下列元件:
- Azure 虛擬網路 (VNet),可讓 Azure 資源與 Google Cloud VPN 通訊。
- 主動-主動虛擬網路閘道 (VPN 閘道),可讓閘道虛擬機器 (VM) 的兩個執行個體,與 Google Cloud VPN 建立 VPN 通道。
建立 VNet
VNet 可讓 Azure 資源安全地與其他資源、網際網路和其他網路 (例如 Cloud VPN) 通訊。如要進一步瞭解如何建立虛擬網路,請參閱 Azure 虛擬網路建立說明文件。
- 登入 Azure 入口網站。
- 在「Search resources, service, and docs (G+/)」(搜尋資源、服務和文件 (G+/)) 方塊中,輸入
virtual network。 - 在 Marketplace 結果清單中,選取「虛擬網路」。
- 在「虛擬網路」頁面中,選取「建立」。
在「建立虛擬網路」頁面的「基本」分頁中,針對「專案詳細資料」和「執行個體詳細資料」,設定下列虛擬網路設定:
- 在「訂閱」方塊中,確認列出的訂閱項目是否正確。如要變更訂閱方案,請從清單中選取訂閱項目。
- 如要指定資源群組,請按一下「建立新群組」,然後輸入資源群組名稱,例如
azure‑to‑google‑resgroup。 - 在「Name」(名稱) 方塊中,輸入 VNet 的名稱,例如
azure‑to‑google‑network。 在「Region」(區域) 方塊中,選取 VNet 的位置。
您選取的位置會決定部署至這個虛擬網路的資源儲存位置。
在「IP Addresses」(IP 位址) 分頁的「IPv4 address space」(IPv4 位址空間) 方塊中,使用 Azure 建立的預設位址空間和子網路。
在「安全性」分頁中,將「BastionHost」、「DDos Protection Standard」和「Firewall」的值保留為預設值「Disable」。
如要驗證 VNet 設定,請選取「Review + create」(檢查並建立)。
驗證設定後,選取「建立」。
建立作用中/作用中 VPN 閘道
下列程序會建立主動-主動 VPN 閘道:
- 第一個程序會定義專案和執行個體詳細資料
- 第二個程序會指定閘道的 IP 位址。
目前只需建立主動-主動 VPN 閘道。您必須先建立 Google Cloud 元件,才能在 Azure 中設定必要的通道。如要進一步瞭解如何建立作用中-作用中 VPN 閘道,請參閱 Azure 說明文件中的「使用入口網站設定作用中-作用中 VPN 閘道」主題。
定義閘道詳細資料
- 登入 Azure 入口網站。
- 在「Search resources, service, and docs (G+/)」中,
輸入
virtual network gateway。 - 在搜尋結果的「服務」下方,找出並選取「虛擬網路閘道」。
- 在「虛擬網路閘道」頁面中,選取「建立」。
在「Create virtual network gateway」(建立虛擬網路閘道) 頁面的「Basics」(基本) 分頁中,為「Project details」(專案詳細資料) 和「Instance details」(執行個體詳細資料) 區段中的選項指定下列值:
- 在「Subscription」(訂閱項目) 清單中,選取要使用的訂閱項目。
- 選用:在「閘道子網路位址範圍」方塊中,輸入子網路的位址範圍。
- 確認「資源群組」顯示的資源群組,對應於您在這個頁面選取的虛擬網路。
- 在「Name」(名稱) 中輸入閘道名稱,例如
azure‑to‑google‑gateway。 - 在「Region」(區域) 部分,選取您建立 VNET 時使用的區域。
- 在「閘道類型」部分,選取「VPN」。
在「VPN 類型」中,選取「路由型」VPN 類型。
在「SKU」SKU清單中,選取要使用的閘道 SKU。
下拉式選單中列出的 SKU 會因您選取的 VPN 類型而異。
在「Generation」(世代) 清單中,選取要使用的世代。
在「虛擬網路」清單中,選取先前建立的 VNet
請留在這個頁面,繼續執行下一個程序。
定義閘道 IP 位址
在「建立虛擬網路閘道」頁面的「基本」分頁中,按照下列步驟建立作用中/作用中 VPN 閘道使用的外部 IP 位址:
在「公開 IP 位址」部分,選取「新建」。
Azure 會自動將外部 IP 位址指派給您的作用中-作用中 VPN 閘道。
在「Public IP address name」(公開 IP 位址名稱) 方塊中,輸入外部 IP 位址執行個體的名稱,例如
azure‑to‑google‑network‑ip1。在「Enable active-active mode」(啟用主動-主動模式) 部分選取「Enabled」(已啟用)。
選用:如果您的區域支援,請設定可用區。 例如,您可以選取「區域備援」。
在「Second Public IP Address」部分,選取「Create new」。
在「Public IP address name」(公開 IP 位址名稱) 方塊中,輸入第二個外部 IP 位址的名稱,例如
azure‑to‑google‑network‑ip2。在「設定 BGP」部分,選取「已啟用」。
如為自治系統編號 (ASN),請將 ASN 設為允許的有效值。
在Google Cloud中設定通道的 BGP 工作階段時,您會使用這個 ASN 值。請將這個值記錄為
AZURE_ASN,以便參照這個作用中-作用中 VPN 閘道。在「Custom Azure APIPA BGP IP address」(自訂 Azure APIPA BGP IP 位址) 部分,輸入第一個 APIPA BGP IP 位址,並將值記錄為
AZURE_BGP_IP_0。Azure APIPA BGP IP 位址的有效範圍為169.254.21.*和169.254.22.*。在「Second Custom Azure APIPA BGP IP address」(第二個自訂 Azure APIPA BGP IP 位址) 中,輸入第二個 APIPA BGP IP 位址,並將該值記錄為
AZURE_BGP_IP_1。在 Google Cloud中設定 BGP 工作階段時,您會使用這些變數。
如要執行驗證,請選取「檢查並建立」。
驗證完成後,選取「建立」即可部署 VPN 閘道。
查看並記錄作用中-作用中 VPN 閘道的外部 IP 位址
您需要 Azure 自動指派給作用中-作用中 VPN 閘道的外部 IP 位址。您可以使用這些 IP 位址,在 Google Cloud中建立對等互連 VPN 閘道資源。
- 在您剛建立的「作用中-作用中」閘道「總覽」頁面中,找出閘道的外部 IP 位址。
- 記下畫面上顯示的 IP 位址:
- 將第一個外部 IP 位址記錄為
AZURE_GW_IP_0。 - 將第二個外部 IP 位址記錄為
AZURE_GW_IP_1。
- 將第一個外部 IP 位址記錄為
本文稍後會將這些 IP 位址稱為 AZURE_GW_IP_0 和 AZURE_GW_IP_1。
建立 Google Cloud 元件
在 Google Cloud中,您需要設定下列元件:
- 虛擬私有雲網路。
- 高可用性 VPN 閘道。
- Cloud Router。
- 對等互連 VPN 閘道。
- 具有 BGP 工作階段的高可用性 VPN 通道。
下列程序假設您已按照「事前準備」一節所述設定 Google Cloud 。如果尚未完成這些步驟,請立即完成。
在 Google Cloud上建立虛擬私有雲網路、子網路、高可用性 VPN 閘道和 Cloud Router
在 Google Cloud上,您會建立虛擬私有雲網路、高可用性 VPN 閘道和 Cloud Router,然後在 Google Cloud上設定防火牆規則。
在 Google Cloud Shell 中,確認您正在建立或選取的雲端專案中工作:
gcloud config set project YOUR_PROJECT_ID export PROJECT_ID=`gcloud config list --format="value(core.project)"`
使用您的 Cloud 專案 ID 取代
YOUR_PROJECT_ID。建立含有單一子網路的自訂虛擬私有雲網路:
gcloud compute networks create NETWORK \ --subnet-mode SUBNET_MODE \ --bgp-routing-mode BGP_ROUTING_MODE
更改下列內容:
NETWORK:網路名稱,例如google‑to‑azure‑vpc。SUBNET_MODE:子網路模式設為custom。
BGP_ROUTING_MODE:BGP 轉送模式設為global。指令應如下列範例所示:
gcloud compute networks create google-to-azure-vpc \ --subnet-mode custom \ --bgp-routing-mode global
建立一個子網路來代管測試 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建立高可用性 VPN 閘道:
gcloud compute vpn-gateways create HA_VPN_GATEWAY_NAME \ --network NETWORK \ --region REGION
將
HA_VPN_GATEWAY_NAME替換為高可用性 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
輸出內容會列出自動指派給每個閘道介面的外部 IPv4 位址 (
INTERFACE0和INTERFACE1)。在 Azure 上設定本機網路閘道時,您需要這些 IP 位址:- 記錄
INTERFACE0在HA_VPN_INT_0中的 IP 位址。 - 記錄
INTERFACE1在HA_VPN_INT_1中的 IP 位址。
- 記錄
建立 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)。可以是64512-65534或4200000000-4294967294範圍內的任何私人 ASN,但不得與相同區域和網路中的對等互連 ASN 重複。
指令應如下列範例所示:
gcloud compute routers create cloud-router \ --region us-central1 \ --network google-to-azure-vpc \ --asn 65534
為 Azure VPN 建立對等互連 VPN 閘道
在本節中,您將建立外部 VPN 閘道資源,向 Google Cloud 提供 Azure 中主動-主動 VPN 閘道的相關資訊。您建立單一對等互連 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_0 和 AZURE_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_IF0和TUNNEL_NAME_IF1:通道名稱;如果以閘道介面名稱命名通道,日後有助於識別通道。AZURE_GW_NAME:先前建立的外部對等互連閘道名稱AZURE_GW_INT_NUM_0和AZURE_GW_INT_NUM_1:先前在外部對等閘道上設定的介面編號。IKE_VERS:使用2進行 IKEv2。SHARED_SECRET:預先共用金鑰 (共用密鑰),必須與您在 Azure 設定 VPN 連線時指定的預先共用金鑰相對應。如需相關建議,請參閱「產生高強度預先共用金鑰」。HA_VPN_GATEWAY_NAME:高可用性 VPN 閘道的名稱。INT_NUM_0:您先前建立的高可用性 VPN 閘道上第一個介面的編號0。INT_NUM_1:您先前建立的高可用性 VPN 閘道上第二個介面的編號1。
請按照下列步驟建立 VPN 通道:
為介面 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
為介面 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_0和ROUTER_INTERFACE_NAME_1:Cloud Router BGP 介面的名稱,建議使用與先前設定的通道名稱相關的名稱。MASK_LENGTH:指定30;同一 Cloud Router 上的每個 BGP 工作階段,都必須使用169.254.0.0/16區塊中的不重複/30CIDR。GOOGLE_BGP_IP_0和GOOGLE_BGP_IP_1:您設定的高可用性 VPN 閘道介面 BGP 對等互連 IP 位址;每個通道使用不同的閘道介面。由於 Azure APIPA BGP 對等互連 IP 位址的允許範圍為169.254.21.*和169.254.22.*,因此您必須在這些範圍的/30CIDR 中選取可用的 IP 位址,做為 Cloud Router BGP 對等互連 IP 位址。AZURE_BGP_IP_0和AZURE_BGP_IP_1:您已在 Azure 主動-主動 VPN 閘道上設定的 APIPA BGP 對接 IP 位址;每個通道都使用不同的位址。TUNNEL_NAME_IF0和TUNNEL_NAME_IF1:與您設定的高可用性 VPN 閘道介面相關聯的通道。AZURE_ASN:您在 Azure 中為作用中/作用中對等互連 VPN 閘道設定的 ASN。BGP_PEER_NAME_1和BGP_PEER_NAME_2每個 BGP 對等互連都有專屬名稱。 例如azure‑bgp‑peer‑1和azure‑bgp‑peer‑2。
如要為 VPN 通道建立 BGP 工作階段,請按照下列步驟操作:
為第一個 VPN 通道,在 Cloud Router 新增 BGP 介面:
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
為第一個 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
為第二個 VPN 通道,在 Cloud Router 新增 BGP 介面:
gcloud compute routers add-interface ROUTER_NAME \ --interface-name=ROUTER_INTERFACE_NAME_1 \ --mask-length=MASK_LENGTH \ --vpn-tunnel=TUNNEL_NAME_IF1 \ --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
針對第二個 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 虛擬私人網路有變更,或是需要變更 Cloud Router 的外部 IP 位址,您稍後可以更新這些值。
您必須建立兩個區域網路閘道:一個閘道連至 Google Cloud 上的第一個高可用性 VPN 通道介面,另一個閘道連至第二個高可用性 VPN 通道介面。
詳情請參閱 Azure 說明文件中的「在 Azure 入口網站中建立站對站 VPN 連線」教學課程,特別是建立區域網路閘道一節。
如要建立第一個本機網路閘道,請按照下列步驟操作:
- 登入 Azure 入口網站。
- 在「搜尋資源、服務和文件 (G+/)」中,輸入「本機網路閘道」。
- 在「Marketplace」下方的搜尋結果中,找出並選取「local network gateway」。
- 點選「建立」。
在「Create local network gateway」(建立區域網路閘道) 頁面的「Basics」(基本) 分頁中,為區域網路閘道指定下列值:
- 在「訂閱」清單中,確認顯示的訂閱項目正確無誤。
- 在「Resource group」(資源群組) 清單中,選取與您稍早在本文中為 VNet 建立的資源群組相同的資源群組。
- 在「Region」(區域),選取 VNet 所在的相同位置。
- 在「名稱」部分輸入本機網路閘道的名稱,例如
azure-to-google-locgateway1。 - 在「Endpoint」(端點) 部分,選取「IP address」(IP 位址)。
- 在「IP address」(IP 位址) 方塊中,輸入高可用性 VPN 的
INTERFACE0IP 位址 (也就是輸入HA_VPN_INT_0)。 在「位址空間」部分,輸入這個本機網路代表的網路位址範圍。
您可以新增多個位址空間範圍。請確保您在此指定的範圍,不會與要連線的其他網路範圍重疊。
在「Advanced」(進階) 分頁中,按照下列方式設定 BGP:
- 在「設定 BGP 設定」部分,選取「是」。
- 在「自治系統編號 (ASN)」部分,輸入 Cloud Router 的 ASN (也就是輸入
GOOGLE_ASN)。 - 在「BGP peer IP address」(BGP 對等互連 IP 位址) 中,輸入通道 1 中 Cloud Router 的 BGP IP 位址 (即輸入
GOOGLE_BGP_IP_0)。
如要驗證本機網路閘道設定,請按一下頁面底部的「檢閱並建立」。
驗證通過後,按一下「建立」,即可建立本機網路閘道。
如要建立第二個本機網路閘道,請按照下列步驟操作:
- 在 Azure 入口網站的「Search resources, service, and docs (G+/)」中,輸入
local network gateway。 - 在「Marketplace」下方,於搜尋結果中找出並選取「local network gateway」。
在「Create local network gateway」(建立區域網路閘道) 頁面的「Basics」(基本) 分頁中,指定區域網路閘道的下列值:
- 在「Subscription」(訂閱項目) 清單中,確認顯示正確的訂閱項目。
- 在「Resource group」(資源群組) 清單中,選取您先前在本文件中為 VNet 建立的資源群組。
- 在「Region」(區域),選取與 VNet 相同的區域。
- 在「Name」部分,輸入區域網路閘道的名稱,例如
azure-to-google-locgateway2。 - 在「端點」部分,選取「IP 位址」。
- 在「IP address」(IP 位址) 方塊中,輸入高可用性 VPN 的
INTERFACE1IP 位址 (即輸入HA_VPN_INT_1)。 - 在「位址空間」部分,輸入這個區域網路代表的網路位址範圍。
您可以新增多個位址空間範圍。請確認您在此指定的範圍,不會與您要連線的其他網路範圍重疊。
在「Advanced」(進階) 分頁中,按照下列方式設定 BGP:
- 在「設定 BGP 設定」部分,選取「是」。
- 在「Autonomous system number (ASN)」(自治系統編號 (ASN)) 部分,輸入 Cloud Router 的 ASN (即
GOOGLE_ASN)。 - 在「BGP peer IP address」(BGP 對等互連 IP 位址) 部分,輸入通道 1 中 Cloud Router 的 BGP IP 位址 (即
GOOGLE_BGP_IP_1)。
如要驗證區域網路閘道設定,請按一下頁面底部的「Review and create」(檢閱並建立)。
驗證通過後,按一下「建立」,即可建立本機網路閘道。
建立兩個 VPN 連線
如要在 Azure 中建立 VPN 連線,您需要設定SHARED_SECRET時設定的預先共用金鑰或 Google Cloud。
- 在 Azure 入口網站中,找出您在「建立作用中-作用中 VPN 閘道」中建立的作用中-作用中 VPN 閘道。
- 選取「連線」。
- 在「連結」頁面頂端,選取「+新增」。
- 在「Add connection」(新增連線) 頁面中,為第一個連線指定下列值:
- 在「Name」(名稱) 部分輸入連線名稱,例如
azure-vnet-to-google1。 - 在「連線類型」部分,選取「站對站 (IPsec)」。
- 針對「區域網路閘道」,指定您建立的第一個區域網路閘道,例如
azure-to-google-locgateway1。 - 在「Shared key (PSK)」(共用金鑰 (PSK)) 部分,指定您為第一個高可用性 VPN 通道設定的共用金鑰。
- 選取「啟用 BGP」。
- 在「IKE Protocol」(IKE 通訊協定) 部分,選取「IKEv2」。
- 按一下 [確定]。
- 在「Connections」頁面中,選取「+Add」,新增第二個連線,並使用下列值:
- 在「Name」(名稱) 部分輸入連線名稱,例如
azure-vnet-to-google2。 - 在「Connection type」(連線類型) 部分,選取「Site-to-site (IPsec)」(站對站 (IPsec))。
- 在「區域網路閘道」部分,指定您建立的第二個區域網路閘道,例如
azure-to-google-locgateway2。 - 如果是共用金鑰 (PSK),請指定為第二個高可用性 VPN 通道設定的共用金鑰。
- 選取「啟用 BGP」。
- 在「IKE Protocol」(IKE 通訊協定) 部分,選取「IKEv2」。
- 按一下 [確定]。
- 在「Name」(名稱) 部分輸入連線名稱,例如
- 在「Connections」(連線) 頁面中,確認兩個連線的狀態都顯示為「Connected」(已連線)。
驗證設定
在 Google Cloud中,您可以先檢查 (列出) Cloud Router 設定,然後檢查高可用性 VPN 通道的狀態,藉此驗證高可用性 VPN 設定。
在 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)'如果 Cloud Router 管理兩個高可用性 VPN 通道 (索引
0和索引1),預期輸出內容應如下列範例所示: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
在 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
在 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 測試頻寬。
在通道兩端各建立測試 VM,測試 Ping 要求。
您也必須設定 Azure 網路防火牆,允許虛擬私有雲中使用的子網路前置字元傳入流量。
在 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
使用 ping 指令測試連線。
使用 iperf 測量測試機之間的頻寬。
清除所用資源
刪除您在本教學課程中建立的 Google Cloud 和 Azure 資源。
刪除 Google Cloud 專案
如要避免系統向您的 Google Cloud 帳戶收取本教學課程所用資源的費用,請刪除專案:
- 前往 Google Cloud 控制台的「Manage resources」(管理資源) 頁面。
- 在專案清單中選取要刪除的專案,然後點選「Delete」(刪除)。
- 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。
刪除 Azure 資源群組
刪除建立 VNet 時建立的 Azure 管理員資源群組。在本教學課程中,範例資源群組的名稱為 azure-to-google-resgroup。
詳情請參閱「Azure Resource Manager 資源群組和資源刪除」。
後續步驟
- 進一步瞭解 Google Cloud VPN。
- 進一步瞭解 VPC 設計的最佳做法與參考架構。