本文档假定您熟悉 VPC 网络、边界网关协议 (BGP)、VPN 和互联网协议安全 (IPsec) 隧道的基本概念。
Google Cloud 提供高可用性 (HA) VPN服务通过 IPsec VPN 连接将您的 VPC 网络连接到在 Google Cloud 外部运行的环境(例如 Microsoft Azure)。如果根据 Google 最佳做法进行配置,高可用性 VPN 可提供服务协议 (SLA) 承诺的 99.99% 的可用性。
架构概览
下图显示了本文档介绍的架构。
图中显示的架构包括以下组件:
- Cloud Router 路由器:完全分布式和全代管式 Google Cloud 服务,通过 BGP 为您的 VPC 网络提供动态路由。
- 高可用性 VPN 网关:在 Google Cloud 上运行的 Google 管理的 VPN 网关。每个高可用性 VPN 网关都是具有两个接口(接口 0 和 1)的区域级资源。每个接口都有自己的外部 IP 地址。
- VPN 隧道:从 Google Cloud 上的高可用性 VPN 网关到 Azure 上用于传输加密流量的对等 VPN 网关的连接。
- 虚拟网络网关:在 Azure Cloud 服务中定义的两个专用网络。
每个虚拟网络网关连接都有两个隧道,它们预配置为指向单个客户网关(在本例中为 Google Cloud 中的高可用性 VPN 网关接口)。使用此配置时,要达到 99.99% 服务可用性的 SLA,至少需要 2 个 Cloud VPN 隧道。
过程所需的 IP 地址
为了完成本文档中的过程,您将在 Google Cloud 和 Azure 中使用各种 IP 地址。系统会在您创建资源时自动分配其中一些 IP 地址。
对于未自动分配的那些地址,您可以根据可用 IP 地址和组织需求定义这些 IP 地址。
Google Cloud 资源需要以下 IP 地址:
- 为 Virtual Private Cloud 网络创建子网需要用户定义的 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 地址的有效范围。您一共必须选择 4 个 IP 地址。您选择的 BGP 对等互连 IPv4 地址在 VPC 网络所有区域中的所有 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 地址。在 Google Cloud 中设置对等 VPN 网关时需要使用这些 IP 地址。
定义 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 价格计算器。
本文档中的过程使用 Microsoft Azure Cloud 服务的计费组件,包括:
- VPN 网关
- 本地网络网关
如需估算 Azure 组件的费用,请使用 Azure 价格计算器。
准备工作
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine API.
-
In the Google Cloud console, activate Cloud Shell.
-
确保您拥有必需的管理角色来配置网络组件:
- Network Admin:
compute.networkAdmin
- Security Admin:
compute.securityAdmin
- Compute Admin:
compute.admin
如需详细了解这些角色的用途,请参阅负有网络相关工作职责的 IAM 角色。
- Network Admin:
在 Azure 上创建 VNet 和主动/主动 VPN 网关
在 Azure 中,您需要设置以下组件:
- Azure 虚拟网络 (VNet),以允许 Azure 资源与您的 Google Cloud VPN 通信。
- 主动/主动虚拟网络网关(VPN 网关),以允许网关虚拟机 (VM) 的两个实例建立连接到 Google Cloud VPN 的 VPN 隧道。
创建 VNet
借助 VNet,Azure 资源可以相互安全通信,也可以与互联网和其他网络(例如 Cloud VPN)安全通信。如需详细了解如何创建 VNet,请参阅有关创建 VNet 的 Azure 文档。
- 登录 Azure 门户。
- 在搜索资源、服务和文档 (G+/) 框中,输入
virtual network
。 - 在 Marketplace 结果列表中,选择虚拟网络。
- 在虚拟网络页面上,选择创建。
在创建虚拟网络页面的基本信息标签页上,为项目详细信息和实例详细信息配置以下 VNet 设置:
- 在 Subscription 框中,验证列出的订阅是正确的。如需更改订阅,请从列表中选择订阅。
- 如需指定资源组,请点击新建以创建新组,然后输入
azure‑to‑google‑resgroup
作为资源组的名称。 - 在名称框中,输入 VNet 的名称,例如
azure‑to‑google‑network
。 在区域框中,选择 VNet 的位置。
您选择的位置决定了您部署到此虚拟网络的资源的存储位置。
在 IP 地址标签页的 IPv4 地址空间框中,使用 Azure 创建的默认地址空间和子网。
在安全标签页上,让堡垒主机、DDos 防护标准和防火墙的值保留设置为默认值停用。
如需验证 VNet 设置,请选择审核 + 创建。
验证设置后,选择创建。
创建主动/主动 VPN 网关
以下过程会创建主动/主动 VPN 网关:
- 第一个过程定义项目和实例的详细信息
- 第二个过程指定网关的 IP 地址。
目前,您只创建主动/主动 VPN 网关。您需要先创建 Google Cloud 组件,然后才能在 Azure 中配置必要的隧道。如需详细了解如何创建主动/主动 VPN 网关,请参阅 Azure 文档中的使用门户配置主动/主动 VPN 网关主题。
定义网关详细信息
- 登录 Azure 门户。
- 在搜索资源、服务和文档 (G+/) 中,输入
virtual network gateway
。 - 在搜索结果中的服务下,找到并选择虚拟网络网关。
- 在虚拟网络网关页面上,选择创建。
在创建虚拟网络网关页面的基本信息标签页上,为项目详细信息和实例详细信息部分中的选项指定以下值:
- 在订阅列表中,选择要使用的订阅。
- 可选:在网关子网地址范围框中,输入子网的地址范围。
- 验证资源组是否显示与您在本页中选择的虚拟网络对应的资源组。
- 对于名称,请输入网关的名称,例如
azure‑to‑google‑gateway
。 - 对于区域,请选择您在创建 VNET 时使用的区域。
- 对于网关类型,选择 VPN。
对于 VPN 类型,选择基于路由的 VPN 类型。
在 SKU 列表中,选择要使用的网关 SKU。
在下拉列表中列出的 SKU 取决于您选择的 VPN 类型。
在世代列表中,选择您要使用的世代。
在虚拟网络列表中,选择您之前创建的 VNet
请留在本页面上,了解下一个过程。
定义网关 IP 地址
在 Create virtual network gateway 页面的 Basics 标签页上,按照以下步骤创建主动/主动 VPN 网关使用的外部 IP 地址:
对于公共 IP 地址,选择新建。
Azure 会自动将外部 IP 地址分配给主动/主动 VPN 网关。
在 Public IP address name 框中,输入外部 IP 地址实例的名称,例如
azure‑to‑google‑network‑ip1
。对于启用主动/主动模式,请选择已启用。
可选:如果您的区域可用,请配置可用区。例如,您可以选择可用区冗余。
对于第二个公共 IP 地址,选择新建。
在 Public IP address name 框中,输入第二个外部 IP 地址的名称,例如
azure‑to‑google‑network‑ip2
。对于配置 BGP,选择已启用。
对于自治系统编号 (ASN),将 ASN 设置为允许的有效值。
在 Google Cloud 中为隧道设置 BGP 会话时,您将使用此 ASN 值。将此值记录为
AZURE_ASN
以引用此主动/主动 VPN 网关。对于自定义 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 部分,输入第二个 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 上,您需要设置以下组件:
- 一个 VPC 网络。
- 一个高可用性 VPN 网关。
- 一个 Cloud Router。
- 对等 VPN 网关。
- 具有 BGP 会话的高可用性 VPN 隧道。
以下过程假定您已按照准备工作中所述设置了 Google Cloud。如果您尚未完成这些步骤,请现在完成。
在 Google Cloud 上创建 VPC 网络、子网、高可用性 VPN 网关和 Cloud Router
在 Google Cloud 上,您可以创建 VPC 网络、高可用性 VPN 网关和 Cloud Router,然后在 Google Cloud 上配置防火墙规则。
在 Google Cloud Shell 中,确保您使用的是您创建或选择的 Cloud 项目:
gcloud config set project YOUR_PROJECT_ID export PROJECT_ID=`gcloud config list --format="value(core.project)"`
将
YOUR_PROJECT_ID
替换为您的 Cloud 项目 ID。创建具有单个子网的自定义 VPC 网络:
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
创建一个子网来托管测试虚拟机:
gcloud compute networks subnets create SUBNET_NAME \ --network NETWORK \ --region SUBNET_REGION \ --range SUBNET_IP_ADDRESS_RANGE
请替换以下内容:
SUBNET_NAME
:子网名称。SUBNET_REGION
:要在其中创建子网的区域。SUBNET_IP_ADDRESS_RANGE
:子网的 IP 地址范围。
该命令应类似于以下示例:
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
输出列出了已自动分配给每个网关接口(
INTERFACE0
和INTERFACE1
)的外部 IPv4 地址。在 Azure 上设置本地网络网关时,您需要以下 IP 地址:- 记录
HA_VPN_INT_0
中INTERFACE0
的 IP 地址。 - 记录
HA_VPN_INT_1
中INTERFACE1
的 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
:对于 IKEv2,使用2
。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
块中的唯一/30
CIDR。GOOGLE_BGP_IP_0
和GOOGLE_BGP_IP_1
:您配置的高可用性 VPN 网关接口的 BGP 对等互连 IP 地址;每个隧道使用不同的网关接口。由于 Azure APIPA BGP 对等互连 IP 地址允许的范围为169.254.21.*
和169.254.22.*
,因此您必须在这些范围的/30
CIDR 中选择一个可用的 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 隧道,将 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
对于第一个 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 隧道,将 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
对于第二个 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 环境以完成 Google Cloud 到 Azure 的连接。如需完成此连接,请在 Azure 中创建以下组件:
- 两个本地网络网关,分别代表 Azure 中的 Google Cloud VPN。
- 与您在 Google Cloud 中配置的两个高可用性 VPN 隧道相对应的 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 下方,找到并选择本地网络网关。
- 点击创建。
在创建本地网络网关页面的基本信息标签页上,为本地网络网关指定以下值:
- 在订阅列表中,验证是否显示正确的订阅。
- 在资源组列表中,选择与您在本文档前面部分为 VNet 创建的资源组相同的资源组。
- 对于区域,选择您的 VNet 所在的位置。
- 对于名称,输入本地网络网关的名称,例如
azure-to-google-locgateway1
。 - 对于端点,选择 IP 地址。
- 在 IP 地址框中,输入高可用性 VPN 的
INTERFACE0
的 IP 地址(即输入HA_VPN_INT_0
)。 对于地址空间,输入此本地网络代表的网络的地址范围。
您可以添加多个地址空间范围。请确保您在此处指定的范围与要连接的其他网络范围不重叠。
在高级标签页上,按如下方式配置 BGP 设置:
- 对于配置 BGP 设置,选择是。
- 对于自治系统编号 (ASN),输入 Cloud Router 的 ASN(即输入
GOOGLE_ASN
)。 - 对于 BGP 对等 IP 地址,输入隧道 1 中 Cloud Router 的 BGP IP 地址(即输入
GOOGLE_BGP_IP_0
)。
如需验证本地网络网关配置,请点击页面底部的查看和创建。
验证通过后,点击创建以创建本地网络网关。
如需创建第二个本地网络网关,请按以下步骤操作:
- 在 Azure 门户的搜索资源、服务和文档 (G+/) 中,输入
local network gateway
。 - 在搜索结果中的 Marketplace 下方,找到并选择本地网络网关。
在创建本地网络网关页面的基本信息标签页上,为本地网络网关指定以下值:
- 在订阅列表中,验证是否显示正确的订阅。
- 在资源组列表中,选择与您在本文档前面部分为 VNet 创建的资源组相同的资源组。
- 对于区域,选择与您的 VNet 相同的区域。
- 对于名称,输入本地网络网关的名称,例如
azure-to-google-locgateway2
。 - 对于端点,选择 IP 地址。
- 在 IP 地址框中,输入高可用性 VPN 的
INTERFACE1
的 IP 地址(即输入HA_VPN_INT_1
)。 - 对于地址空间,输入此本地网络代表的网络的地址范围。
您可以添加多个地址空间范围。请确保您在此处指定的范围与要连接的其他网络范围不重叠。
在高级标签页上,按如下方式配置 BGP 设置:
- 对于配置 BGP 设置,选择是。
- 对于自治系统编号 (ASN),输入 Cloud Router 的 ASN(即输入
GOOGLE_ASN
)。 - 对于 BGP 对等 IP 地址,输入隧道 1 中 Cloud Router 的 BGP IP 地址(即输入
GOOGLE_BGP_IP_1
)。
如需验证本地网络网关配置,请点击页面底部的查看和创建。
验证通过后,点击创建以创建本地网络网关。
创建两个 VPN 连接
如需在 Azure 中创建 VPN 连接,您需要使用您在 Google Cloud 上设置高可用性 VPN 隧道时配置的预共享密钥或 SHARED_SECRET。
- 在 Azure 门户中,找到您在创建主动/主动 VPN 网关中创建的主动/主动 VPN 网关。
- 选择连接。
- 在连接页面顶部,选择 +添加。
- 在添加连接页面上,为第一个连接指定以下值:
- 对于名称,输入连接的名称,例如
azure-vnet-to-google1
。 - 对于连接类型,选择站点到站点 (IPsec)。
- 对于本地网络网关,指定您创建的第一个本地网络网关,例如
azure-to-google-locgateway1
。 - 对于共享密钥 (PSK),指定您为第一个高可用性 VPN 隧道配置的共享密钥。
- 选择启用 BGP。
- 对于 IKE 协议,选择 IKEv2。
- 点击 OK(确定)。
- 在连接页面上,选择 +添加以使用以下值添加第二个连接:
- 对于名称,输入连接的名称,例如
azure-vnet-to-google2
。 - 对于连接类型,选择站点到站点 (IPsec)。
- 对于本地网络网关,指定您创建的第二个本地网络网关,例如
azure-to-google-locgateway2
。 - 对于共享密钥 (PSK),指定您为第二个高可用性 VPN 隧道配置的共享密钥。
- 选择启用 BGP。
- 对于 IKE 协议,选择 IKEv2。
- 点击 OK(确定)。
- 对于名称,输入连接的名称,例如
- 在连接页面上,验证两个连接的状态是否列为已连接。
验证配置
在 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)'
管理两个高可用性 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
在 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 连接,您首先需要在隧道的每一侧创建虚拟机。
接下来,您需要确保在 Google Cloud 中定义防火墙规则,以允许来自 Azure 网络子网的入站 ICMP 流量。定义好虚拟机和防火墙规则后,您可以使用 ping 测试连接,并使用 iperf 测试带宽。
在隧道的每端创建测试虚拟机以测试 ping 请求。
您还必须配置 Azure 网络防火墙,以允许来自 Virtual Private Cloud 中使用的子网前缀的入站流量。
在 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 账号收取费用,您可以删除您的项目:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- 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 资源组和资源删除。
后续步骤
- 详细了解 Google Cloud VPN。
- 详细了解 VPC 设计的最佳做法和参考架构。