概览
高可用性 VPN 是一种高可用性 (HA) Cloud VPN 解决方案,可让您在单个区域中通过 IPsec VPN 连接将您的本地网络安全地连接到 VPC 网络。高可用性 VPN 提供服务可用性达 99.99% 的服务等级协议 (SLA)。
高可用性 VPN 是一种可为各个 VPC 网络添加的区域级 VPN 解决方案。高可用性 VPN 网关有两个接口,每个接口都有自己的公共 IP 地址。创建高可用性 VPN 网关时,系统会自动从不同的地址池中选择两个公共 IP 地址。在为高可用性 VPN 配置两个隧道后,Cloud VPN 可以提供服务可用性达 99.99% 的正常运行时间。
在本实验中,您将创建一个名为 vpc-demo 的全局性 VPC,其中包含位于 和 的两个自定义子网。在此 VPC 中,您将在每个区域添加一个 Compute Engine 实例。然后创建名为 on-prem 的第二个 VPC 来模拟客户的本地数据中心。在第二个 VPC 中,您将在 区域中添加一个子网和一个在该区域运行的 Compute Engine 实例。最后,您将在每个 VPC 中添加一个高可用性 VPN 和一个 Cloud Router 路由器,并从每个高可用性 VPN 网关运行两个隧道,然后再测试该配置能否达到服务等级协议 (SLA) 承诺的 99.99% 的可用性。

目标
在本实验中,您将学习如何执行以下任务:
- 创建两个 VPC 网络和多个实例。
- 配置高可用性 VPN 网关。
- 使用 VPN 隧道配置动态路由。
- 配置全局动态路由模式。
- 验证并测试高可用性 VPN 网关的配置。
设置和要求
对于每个实验,您都会免费获得一个新的 Google Cloud 项目及一组资源,它们都有固定的使用时限。
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:
-
打开 Google Cloud 控制台按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示登录页面。
提示:将这些标签页安排在不同的窗口中,并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。
-
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}}
您也可以在实验详细信息面板中找到用户名。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}}
您也可以在实验详细信息面板中找到密码。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。
注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
-
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于这是临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
注意:如需查看列有 Google Cloud 产品和服务的菜单,请点击左上角的导航菜单,或在搜索字段中输入服务或产品的名称。
激活 Google Cloud Shell
Google Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。
Google Cloud Shell 提供了可用于访问您的 Google Cloud 资源的命令行工具。
-
在 Cloud 控制台右上角的工具栏中,点击“打开 Cloud Shell”按钮。

-
点击继续。
预配并连接到环境需要一些时间。如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 PROJECT_ID。例如:

gcloud 是 Google Cloud 的命令行工具。它会预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
gcloud auth list
输出:
Credentialed accounts:
- @.com (active)
输出示例:
Credentialed accounts:
- google1623327_student@qwiklabs.net
gcloud config list project
输出:
[core]
project =
输出示例:
[core]
project = qwiklabs-gcp-44776a13dea667a6
注意:有关 gcloud 的完整文档,请参阅 gcloud CLI 概览指南。
任务 1. 设置全局 VPC 环境
在此任务中,您将设置一个全局 VPC,其中包含两个自定义子网,并在每个可用区中各运行两个虚拟机实例。
- 在 Cloud Shell 中,创建一个名为 vpc-demo 的 VPC 网络:
gcloud compute networks create vpc-demo --subnet-mode custom
输出应类似于以下内容:
Created [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/global/networks/vpc-demo].
NAME: vpc-demo
SUBNET_MODE: CUSTOM
BGP_ROUTING_MODE: REGIONAL
IPV4_RANGE:
GATEWAY_IPV4:
- 在 Cloud Shell 的 区域中创建名为 vpc-demo-subnet1 的子网:
gcloud compute networks subnets create vpc-demo-subnet1 \
--network vpc-demo --range 10.1.1.0/24 --region "{{{project_0.default_region| REGION}}}"
- 在 区域中创建名为 vpc-demo-subnet2 的子网:
gcloud compute networks subnets create vpc-demo-subnet2 \
--network vpc-demo --range 10.2.1.0/24 --region {{{project_0.default_region_2 | REGION 2}}}
- 创建防火墙规则以允许网络内的所有自定义流量传入:
gcloud compute firewall-rules create vpc-demo-allow-custom \
--network vpc-demo \
--allow tcp:0-65535,udp:0-65535,icmp \
--source-ranges 10.0.0.0/8
输出应类似于以下内容:
Creating firewall...working..Created [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/global/firewalls/vpc-demo-allow-custom].
Creating firewall...done.
NAME: vpc-demo-allow-custom
NETWORK: vpc-demo
DIRECTION: INGRESS
PRIORITY: 1000
ALLOW: tcp:0-65535,udp:0-65535,icmp
DENY:
DISABLED: False
- 创建防火墙规则以允许来自任何位置的 SSH 和 ICMP 流量传入:
gcloud compute firewall-rules create vpc-demo-allow-ssh-icmp \
--network vpc-demo \
--allow tcp:22,icmp
- 在 可用区中创建一个名为 vpc-demo-instance1 的虚拟机实例:
gcloud compute instances create vpc-demo-instance1 --machine-type=e2-medium --zone {{{ project_0.default_zone | "ZONE" }}} --subnet vpc-demo-subnet1
输出应类似于以下内容:
Created [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/zones/{{{ project_0.default_zone | "ZONE" }}}/instances/vpc-demo-instance1].
NAME: vpc-demo-instance1
ZONE: {{{ project_0.default_zone | "ZONE" }}}
MACHINE_TYPE: e2-standard-2
PREEMPTIBLE:
INTERNAL_IP: 10.1.1.2
EXTERNAL_IP: 34.71.135.218
STATUS: RUNNING
- 在 可用区中创建一个名为 vpc-demo-instance2 的虚拟机实例:
gcloud compute instances create vpc-demo-instance2 --machine-type=e2-medium --zone {{{project_0.default_zone_2 | ZONE2}}} --subnet vpc-demo-subnet2
任务 2. 设置模拟的本地环境
在此任务中,您将创建一个名为 on-prem 的 VPC,用来模拟客户从中连接到 Google Cloud 环境的本地环境。
- 在 Cloud Shell 中,创建一个名为 on-prem 的 VPC 网络:
gcloud compute networks create on-prem --subnet-mode custom
输出应类似于以下内容:
Created [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/global/networks/on-prem].
NAME: on-prem
SUBNET_MODE: CUSTOM
BGP_ROUTING_MODE: REGIONAL
IPV4_RANGE:
GATEWAY_IPV4:
- 创建一个名为 on-prem-subnet1 的子网:
gcloud compute networks subnets create on-prem-subnet1 \
--network on-prem --range 192.168.1.0/24 --region {{{ project_0.default_region | "REGION" }}}
- 创建防火墙规则以允许网络内的所有自定义流量传入:
gcloud compute firewall-rules create on-prem-allow-custom \
--network on-prem \
--allow tcp:0-65535,udp:0-65535,icmp \
--source-ranges 192.168.0.0/16
- 创建防火墙规则以允许 SSH、RDP、HTTP 和 ICMP 流量传入实例:
gcloud compute firewall-rules create on-prem-allow-ssh-icmp \
--network on-prem \
--allow tcp:22,icmp
- 在 区域中创建一个名为 on-prem-instance1 的实例:
注意:在以下命令中,将 替换为 中的一个可用区(但不能是在 vpc-demo-subnet1 中创建 vpc-demo-instance1 所使用的可用区)。
gcloud compute instances create on-prem-instance1 --machine-type=e2-medium --zone zone_name --subnet on-prem-subnet1
任务 3:设置高可用性 VPN 网关
在此任务中,您将在每个 VPC 网络中分别创建一个高可用性 VPN 网关,然后在每个 Cloud VPN 网关上创建高可用性 VPN 隧道。
- 在 Cloud Shell 的 vpc-demo 网络中创建一个高可用性 VPN:
gcloud compute vpn-gateways create vpc-demo-vpn-gw1 --network vpc-demo --region {{{ project_0.default_region | "REGION" }}}
输出应类似于以下内容:
Creating VPN Gateway...done.
NAME: vpc-demo-vpn-gw1
INTERFACE0: 35.242.117.95
INTERFACE1: 35.220.73.93
NETWORK: vpc-demo
REGION: {{{ project_0.default_region | "REGION" }}}
- 在 on-prem 网络中创建一个高可用性 VPN:
gcloud compute vpn-gateways create on-prem-vpn-gw1 --network on-prem --region {{{ project_0.default_region | "REGION" }}}
- 查看 vpc-demo-vpn-gw1 网关的详细信息以验证其设置:
gcloud compute vpn-gateways describe vpc-demo-vpn-gw1 --region {{{ project_0.default_region | "REGION" }}}
输出应类似于以下内容:
creationTimestamp: '2022-01-25T03:02:20.983-08:00'
id: '7306781839576950355'
kind: compute#vpnGateway
labelFingerprint: 42WmSpB8rSM=
name: vpc-demo-vpn-gw1
network: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/global/networks/vpc-demo
region: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/{{{ project_0.default_region | "REGION" }}}
selfLink: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/{{{ project_0.default_region | "REGION" }}}/vpnGateways/vpc-demo-vpn-gw1
vpnInterfaces:
- id: 0
ipAddress: 35.242.117.95
- id: 1
ipAddress: 35.220.73.93
- 查看 on-prem-vpn-gw1 VPN 网关的详细信息以验证其设置:
gcloud compute vpn-gateways describe on-prem-vpn-gw1 --region {{{ project_0.default_region | "Region" }}}
输出应类似于以下内容:
creationTimestamp: '2022-01-25T03:03:34.305-08:00'
id: '3697047034868688873'
kind: compute#vpnGateway
labelFingerprint: 42WmSpB8rSM=
name: on-prem-vpn-gw1
network: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/global/networks/on-prem
region: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/{{{ project_0.default_region | "REGION" }}}
selfLink: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/{{{ project_0.default_region | "REGION" }}}/vpnGateways/on-prem-vpn-gw1
vpnInterfaces:
- id: 0
ipAddress: 35.242.106.234
- id: 1
ipAddress: 35.220.88.140
创建 Cloud Router 路由器
- 在 vpc-demo 网络中创建 Cloud Router 路由器:
gcloud compute routers create vpc-demo-router1 \
--region {{{ project_0.default_region | "REGION" }}} \
--network vpc-demo \
--asn 65001
输出应类似于以下内容:
Creating router [vpc-demo-router1]...done.
NAME: vpc-demo-router1
REGION: {{{ project_0.default_region | "REGION" }}}
NETWORK: vpc-demo
- 在 on-prem 网络中创建 Cloud Router 路由器:
gcloud compute routers create on-prem-router1 \
--region {{{ project_0.default_region | "REGION" }}} \
--network on-prem \
--asn 65002
任务 4. 创建两个 VPN 隧道
在此任务中,您将在两个网关之间创建 VPN 隧道。对于高可用性 VPN 设置,您将在每个网关添加两个隧道,以连接远程设置。您需要在 interface0 接口上创建一个隧道,并连接到远程网关上的 interface0 接口。接下来,您需要在 interface1 接口上创建一个隧道,并连接到远程网关上的 interface1 接口。
在两个 Google Cloud VPC 之间运行高可用性 VPN 隧道时,您需要确保 interface0 接口上的隧道连接到远程 VPN 网关上的 interface0 接口。同样,interface1 接口上的隧道必须连接到远程 VPN 网关上的 interface1 接口。
注意:在您自己的环境中,如果您为客户在本地运行连接到远程 VPN 网关的高可用性 VPN,可以通过以下方式之一进行连接:
-
两台本地 VPN 网关设备:Cloud VPN 网关上每个接口的每个隧道都必须连接到自己的对等网关。
-
包含两个接口的单台本地 VPN 网关设备:Cloud VPN 网关上每个接口的每个隧道都必须连接到对等网关上相应隧道自己的接口。
-
包含一个接口的单台本地 VPN 网关设备:Cloud VPN 网关上每个接口的两个隧道都必须连接到对等网关上的相同接口。
在本实验中,您将使用 Google Cloud 中的两个 VPN 网关来模拟本地设置。您要确保一个网关的 interface0 接口连接到另一个网关的 interface0 接口上,而 interface1 接口要连接到远程网关上的 interface1 接口。
- 在 vpc-demo 网络中创建第一个 VPN 隧道:
gcloud compute vpn-tunnels create vpc-demo-tunnel0 \
--peer-gcp-gateway on-prem-vpn-gw1 \
--region {{{ project_0.default_region | "REGION" }}} \
--ike-version 2 \
--shared-secret [SHARED_SECRET] \
--router vpc-demo-router1 \
--vpn-gateway vpc-demo-vpn-gw1 \
--interface 0
输出应类似于以下内容:
Creating VPN tunnel...done.
NAME: vpc-demo-tunnel0
REGION: {{{ project_0.default_region | "REGION" }}}
GATEWAY: vpc-demo-vpn-gw1
VPN_INTERFACE: 0
PEER_ADDRESS: 35.242.106.234
- 在 vpc-demo 网络中创建第二个 VPN 隧道:
gcloud compute vpn-tunnels create vpc-demo-tunnel1 \
--peer-gcp-gateway on-prem-vpn-gw1 \
--region {{{ project_0.default_region | "REGION" }}} \
--ike-version 2 \
--shared-secret [SHARED_SECRET] \
--router vpc-demo-router1 \
--vpn-gateway vpc-demo-vpn-gw1 \
--interface 1
- 在 on-prem 网络中创建第一个 VPN 隧道:
gcloud compute vpn-tunnels create on-prem-tunnel0 \
--peer-gcp-gateway vpc-demo-vpn-gw1 \
--region {{{ project_0.default_region | "REGION" }}} \
--ike-version 2 \
--shared-secret [SHARED_SECRET] \
--router on-prem-router1 \
--vpn-gateway on-prem-vpn-gw1 \
--interface 0
- 在 on-prem 网络中创建第二个 VPN 隧道:
gcloud compute vpn-tunnels create on-prem-tunnel1 \
--peer-gcp-gateway vpc-demo-vpn-gw1 \
--region {{{ project_0.default_region | "REGION" }}} \
--ike-version 2 \
--shared-secret [SHARED_SECRET] \
--router on-prem-router1 \
--vpn-gateway on-prem-vpn-gw1 \
--interface 1
任务 5. 为每个隧道创建边界网关协议 (BGP) 对等互联
在此任务中,您将在 vpc-demo 和 on-prem 两个 VPC 之间为每个 VPN 隧道配置 BGP 对等互连。高可用性 VPN 需要动态路由才能实现 99.99% 的可用性。
- 在 vpc-demo 网络中为 tunnel0 创建路由器接口:
gcloud compute routers add-interface vpc-demo-router1 \
--interface-name if-tunnel0-to-on-prem \
--ip-address 169.254.0.1 \
--mask-length 30 \
--vpn-tunnel vpc-demo-tunnel0 \
--region {{{ project_0.default_region | "REGION" }}}
输出应类似于以下内容:
Updated [https://www.googleapis.com/compute/v1/projects/binal-sandbox/regions/{{{ project_0.default_region | "REGION" }}}/routers/vpc-demo-router1].
- 在 vpc-demo 网络中为 tunnel0 创建 BGP 对等端:
gcloud compute routers add-bgp-peer vpc-demo-router1 \
--peer-name bgp-on-prem-tunnel0 \
--interface if-tunnel0-to-on-prem \
--peer-ip-address 169.254.0.2 \
--peer-asn 65002 \
--region {{{ project_0.default_region | "REGION" }}}
输出应类似于以下内容:
Creating peer [bgp-on-prem-tunnel0] in router [vpc-demo-router1]...done.
- 在 vpc-demo 网络中为 tunnel1 创建一个路由器接口:
gcloud compute routers add-interface vpc-demo-router1 \
--interface-name if-tunnel1-to-on-prem \
--ip-address 169.254.1.1 \
--mask-length 30 \
--vpn-tunnel vpc-demo-tunnel1 \
--region {{{ project_0.default_region | "REGION" }}}
- 在 vpc-demo 网络中为 tunnel1 创建 BGP 对等端:
gcloud compute routers add-bgp-peer vpc-demo-router1 \
--peer-name bgp-on-prem-tunnel1 \
--interface if-tunnel1-to-on-prem \
--peer-ip-address 169.254.1.2 \
--peer-asn 65002 \
--region {{{ project_0.default_region | "REGION" }}}
- 在 on-prem 网络中为 tunnel0 创建一个路由器接口:
gcloud compute routers add-interface on-prem-router1 \
--interface-name if-tunnel0-to-vpc-demo \
--ip-address 169.254.0.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel0 \
--region {{{ project_0.default_region | "REGION" }}}
- 在 on-prem 网络中为 tunnel0 创建 BGP 对等端:
gcloud compute routers add-bgp-peer on-prem-router1 \
--peer-name bgp-vpc-demo-tunnel0 \
--interface if-tunnel0-to-vpc-demo \
--peer-ip-address 169.254.0.1 \
--peer-asn 65001 \
--region {{{ project_0.default_region | "REGION" }}}
- 在 on-prem 网络中为 tunnel1 创建一个路由器接口:
gcloud compute routers add-interface on-prem-router1 \
--interface-name if-tunnel1-to-vpc-demo \
--ip-address 169.254.1.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel1 \
--region {{{ project_0.default_region | "REGION" }}}
- 在 on-prem 网络中为 tunnel1 创建 BGP 对等端:
gcloud compute routers add-bgp-peer on-prem-router1 \
--peer-name bgp-vpc-demo-tunnel1 \
--interface if-tunnel1-to-vpc-demo \
--peer-ip-address 169.254.1.1 \
--peer-asn 65001 \
--region {{{ project_0.default_region | "REGION" }}}
任务 6. 验证路由器配置
在此任务中,您将验证两个 VPC 中的路由器配置。配置防火墙规则以允许各个 VPC 之间传递流量,并验证隧道的状态。您还要验证各个 VPC 之间的 VPN 专用连接,并为 VPC 启用全局路由模式。
- 查看 Cloud Router vpc-demo-router1 的详细信息并验证其设置:
gcloud compute routers describe vpc-demo-router1 \
--region {{{ project_0.default_region | "REGION" }}}
输出应类似于以下内容:
bgp:
advertiseMode: DEFAULT
asn: 65001
keepaliveInterval: 20
bgpPeers:
- bfd:
minReceiveInterval: 1000
minTransmitInterval: 1000
multiplier: 5
sessionInitializationMode: DISABLED
enable: 'TRUE'
interfaceName: if-tunnel0-to-on-prem
ipAddress: 169.254.0.1
name: bgp-on-prem-tunnel0
peerAsn: 65002
peerIpAddress: 169.254.0.2
- bfd:
minReceiveInterval: 1000
minTransmitInterval: 1000
multiplier: 5
sessionInitializationMode: DISABLED
enable: 'TRUE'
interfaceName: if-tunnel1-to-on-prem
ipAddress: 169.254.1.1
name: bgp-on-prem-tunnel1
peerAsn: 65002
peerIpAddress: 169.254.1.2
creationTimestamp: '2022-01-25T03:06:23.370-08:00'
id: '2408056426544129856'
interfaces:
- ipRange: 169.254.0.1/30
linkedVpnTunnel: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/{{{ project_0.default_region | "REGION" }}}/vpnTunnels/vpc-demo-tunnel0
name: if-tunnel0-to-on-prem
- ipRange: 169.254.1.1/30
linkedVpnTunnel: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/{{{ project_0.default_region | "REGION" }}}/vpnTunnels/vpc-demo-tunnel1
name: if-tunnel1-to-on-prem
kind: compute#router
name: vpc-demo-router1
network: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/global/networks/vpc-demo
region: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/{{{ project_0.default_region | "REGION" }}}
selfLink: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/{{{ project_0.default_region | "REGION" }}}/routers/vpc-demo-router1
- 查看 Cloud Router on-prem-router1 的详细信息并验证其设置:
gcloud compute routers describe on-prem-router1 \
--region {{{ project_0.default_region | "REGION" }}}
输出应类似于以下内容:
bgp:
advertiseMode: DEFAULT
asn: 65002
keepaliveInterval: 20
bgpPeers:
- bfd:
minReceiveInterval: 1000
minTransmitInterval: 1000
multiplier: 5
sessionInitializationMode: DISABLED
enable: 'TRUE'
interfaceName: if-tunnel0-to-vpc-demo
ipAddress: 169.254.0.2
name: bgp-vpc-demo-tunnel0
peerAsn: 65001
peerIpAddress: 169.254.0.1
- bfd:
minReceiveInterval: 1000
minTransmitInterval: 1000
multiplier: 5
sessionInitializationMode: DISABLED
enable: 'TRUE'
interfaceName: if-tunnel1-to-vpc-demo
ipAddress: 169.254.1.2
name: bgp-vpc-demo-tunnel1
peerAsn: 65001
peerIpAddress: 169.254.1.1
creationTimestamp: '2022-01-25T03:07:40.360-08:00'
id: '3252882979067946771'
interfaces:
- ipRange: 169.254.0.2/30
linkedVpnTunnel: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/{{{ project_0.default_region | "REGION" }}}/vpnTunnels/on-prem-tunnel0
name: if-tunnel0-to-vpc-demo
- ipRange: 169.254.1.2/30
linkedVpnTunnel: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/{{{ project_0.default_region | "REGION" }}}/vpnTunnels/on-prem-tunnel1
name: if-tunnel1-to-vpc-demo
kind: compute#router
name: on-prem-router1
network: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/global/networks/on-prem
region: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/{{{ project_0.default_region | "REGION" }}}
selfLink: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/{{{ project_0.default_region | "REGION" }}}/routers/on-prem-router1
配置防火墙规则以允许来自远程 VPC 的流量传入
配置防火墙规则以允许来自对等 VPN 的专用 IP 范围的流量传入。
- 允许流量从 VPC 网络 on-prem 传送到 vpc-demo:
gcloud compute firewall-rules create vpc-demo-allow-subnets-from-on-prem \
--network vpc-demo \
--allow tcp,udp,icmp \
--source-ranges 192.168.1.0/24
输出应类似于以下内容:
Creating firewall...working..Created [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/global/firewalls/vpc-demo-allow-subnets-from-on-prem].
Creating firewall...done.
NAME: vpc-demo-allow-subnets-from-on-prem
NETWORK: vpc-demo
DIRECTION: INGRESS
PRIORITY: 1000
ALLOW: tcp,udp,icmp
DENY:
DISABLED: False
- 允许流量从 vpc-demo 传送到 VPC 网络 on-prem:
gcloud compute firewall-rules create on-prem-allow-subnets-from-vpc-demo \
--network on-prem \
--allow tcp,udp,icmp \
--source-ranges 10.1.1.0/24,10.2.1.0/24
验证隧道的状态
- 列出您刚刚创建的 VPN 隧道:
gcloud compute vpn-tunnels list
总共应该有四个 VPN 隧道(每个 VPN 网关有两个隧道)。输出应类似于以下内容:
NAME: on-prem-tunnel0
REGION: {{{ project_0.default_region | "REGION" }}}
GATEWAY: on-prem-vpn-gw1
PEER_ADDRESS: 35.242.117.95
NAME: on-prem-tunnel1
REGION: {{{ project_0.default_region | "REGION" }}}
GATEWAY: on-prem-vpn-gw1
PEER_ADDRESS: 35.220.73.93
NAME: vpc-demo-tunnel0
REGION: {{{ project_0.default_region | "REGION" }}}
GATEWAY: vpc-demo-vpn-gw1
PEER_ADDRESS: 35.242.106.234
NAME: vpc-demo-tunnel1
REGION: {{{ project_0.default_region | "REGION" }}}
GATEWAY: vpc-demo-vpn-gw1
PEER_ADDRESS: 35.220.88.140
- 验证 vpc-demo-tunnel0 隧道已经启动:
gcloud compute vpn-tunnels describe vpc-demo-tunnel0 \
--region {{{ project_0.default_region | "REGION" }}}
隧道输出中的详细状态应显示为“Tunnel is up and running.”(隧道已启动且正在运行)。
creationTimestamp: '2022-01-25T03:21:05.238-08:00'
description: ''
detailedStatus: Tunnel is up and running.
id: '3268990180169769934'
ikeVersion: 2
kind: compute#vpnTunnel
labelFingerprint: 42WmSpB8rSM=
localTrafficSelector:
- 0.0.0.0/0
name: vpc-demo-tunnel0
peerGcpGateway: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/{{{ project_0.default_region | "REGION" }}}/vpnGateways/on-prem-vpn-gw1
peerIp: 35.242.106.234
region: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/{{{ project_0.default_region | "REGION" }}}
remoteTrafficSelector:
- 0.0.0.0/0
router: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/{{{ project_0.default_region | "REGION" }}}/routers/vpc-demo-router1
selfLink: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/{{{ project_0.default_region | "REGION" }}}/vpnTunnels/vpc-demo-tunnel0
sharedSecret: '*************'
sharedSecretHash: AOs4oVY4bX91gba6DIeg1DbtzWTj
status: ESTABLISHED
vpnGateway: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/{{{ project_0.default_region | "REGION" }}}/vpnGateways/vpc-demo-vpn-gw1
vpnGatewayInterface: 0
- 验证 vpc-demo-tunnel1 隧道已经启动:
gcloud compute vpn-tunnels describe vpc-demo-tunnel1 \
--region {{{ project_0.default_region | "REGION" }}}
隧道输出中的详细状态应显示为“Tunnel is up and running.”(隧道已启动且正在运行)。
- 验证 on-prem-tunnel0 隧道已经启动:
gcloud compute vpn-tunnels describe on-prem-tunnel0 \
--region {{{ project_0.default_region | "REGION" }}}
隧道输出中的详细状态应显示为“Tunnel is up and running.”(隧道已启动且正在运行)。
- 验证 on-prem-tunnel1 隧道已经启动:
gcloud compute vpn-tunnels describe on-prem-tunnel1 \
--region {{{ project_0.default_region | "REGION" }}}
隧道输出中的详细状态应显示为“Tunnel is up and running.”(隧道已启动且正在运行)。
验证 VPN 专用连接
-
前往 Compute Engine,记下创建 on-prem-instance1 所使用的可用区。
-
打开新的 Cloud Shell 标签页,输入以下命令以通过 SSH 连接到 on-prem-instance1实例:
将 <zone_name> 替换为创建 on-prem-instance1 所使用的可用区。
gcloud compute ssh on-prem-instance1 --zone zone_name
-
输入“y”以确认您要继续。
-
按两次 Enter 键跳过创建密码的过程。
-
要从 on-prem 网络中的 on-prem-instance1 实例访问 vpc-demo 网络中的实例,执行 ping 10.1.1.2 的操作:
ping -c 4 10.1.1.2
Ping 成功。输出应类似于以下内容:
PING 10.1.1.2 (10.1.1.2) 56(84) bytes of data.
64 bytes from 10.1.1.2: icmp_seq=1 ttl=62 time=9.65 ms
64 bytes from 10.1.1.2: icmp_seq=2 ttl=62 time=2.01 ms
64 bytes from 10.1.1.2: icmp_seq=3 ttl=62 time=1.71 ms
64 bytes from 10.1.1.2: icmp_seq=4 ttl=62 time=1.77 ms
--- 10.1.1.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 8ms
rtt min/avg/max/mdev = 1.707/3.783/9.653/3.391 ms
使用 VPN 的全局路由
高可用性 VPN 是一种区域级资源和 Cloud Router 路由器,默认情况下只能看到其部署区域中的路由。若要访问与 Cloud Router 路由器不在同一区域的实例,您需要为 VPC 启用全局路由模式。这样 Cloud Router 路由器就可以查看和通告来自其他区域的路由。
- 打开新的 Cloud Shell 标签页,将 vpc-demo 网络中的 bgp-routing 模式更新为 GLOBAL(全局):
gcloud compute networks update vpc-demo --bgp-routing-mode GLOBAL
- 验证更改:
gcloud compute networks describe vpc-demo
输出应类似于以下内容:
autoCreateSubnetworks: false
creationTimestamp: '2022-01-25T02:52:58.553-08:00'
id: '4735939730452146277'
kind: compute#network
name: vpc-demo
routingConfig:
routingMode: GLOBAL
selfLink: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/global/networks/vpc-demo
subnetworks:
- https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/{{{ project_0.default_region | "REGION" }}}/subnetworks/vpc-demo-subnet1
- https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/us-west1/subnetworks/vpc-demo-subnet2
x_gcloud_bgp_routing_mode: GLOBAL
x_gcloud_subnet_mode: CUSTOM
- 从当前已通过 ssh 连接到 on-prem 网络中实例的 Cloud Shell 标签页,对 区域中的 vpc-demo-instance2 实例执行 ping 操作:
ping -c 2 10.2.1.2
Ping 成功。输出应类似于以下内容:
PING 10.2.1.2 (10.2.1.2) 56(84) bytes of data.
64 bytes from 10.2.1.2: icmp_seq=1 ttl=62 time=34.9 ms
64 bytes from 10.2.1.2: icmp_seq=2 ttl=62 time=32.2 ms
--- 10.2.1.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 2ms
rtt min/avg/max/mdev = 32.189/33.528/34.867/1.339 ms
任务 7. 验证并测试高可用性 VPN 隧道的配置
在此任务中,您将测试并验证每个高可用性 VPN 隧道的高可用性配置是否成功。
-
打开新的 Cloud Shell 标签页。
-
关闭 vpc-demo 网络中的 tunnel0 隧道:
gcloud compute vpn-tunnels delete vpc-demo-tunnel0 --region {{{ project_0.default_region | "REGION" }}}
当系统要求确认是否删除时,回复“y”。on-prem 网络中相应的 tunnel0 隧道将会关闭。
- 验证隧道已经关闭:
gcloud compute vpn-tunnels describe on-prem-tunnel0 --region {{{ project_0.default_region | "REGION" }}}
详细状态应显示为“Handshake_with_peer_broken”(对等互连握手断开)。
creationTimestamp: '2022-01-25T03:22:33.581-08:00'
description: ''
detailedStatus: Handshake with peer broken for unknown reason. Trying again soon.
id: '4116279561430393750'
ikeVersion: 2
kind: compute#vpnTunnel
localTrafficSelector:
- 0.0.0.0/0
name: on-prem-tunnel0
peerGcpGateway: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/{{{ project_0.default_region | "REGION" }}}/vpnGateways/vpc-demo-vpn-gw1
peerIp: 35.242.117.95
region: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/{{{ project_0.default_region | "REGION" }}}
remoteTrafficSelector:
- 0.0.0.0/0
router: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/{{{ project_0.default_region | "REGION" }}}/routers/on-prem-router1
selfLink: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/{{{ project_0.default_region | "REGION" }}}/vpnTunnels/on-prem-tunnel0
sharedSecret: '*************'
sharedSecretHash: AO3jeFtewmjvTMO7JEM5RuyCtqaa
status: FIRST_HANDSHAKE
vpnGateway: https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-cdb29e18d20d/regions/{{{ project_0.default_region | "REGION" }}}/vpnGateways/on-prem-vpn-gw1
vpnGatewayInterface: 0
- 切换到仍在运行开放式 ssh 会话的前一个 Cloud Shell 标签页,然后验证 vpc-demo 和 on-prem 两个网络中实例之间的 ping 连接:
ping -c 3 10.1.1.2
输出应类似于以下内容:
PING 10.1.1.2 (10.1.1.2) 56(84) bytes of data.
64 bytes from 10.1.1.2: icmp_seq=1 ttl=62 time=6.31 ms
64 bytes from 10.1.1.2: icmp_seq=2 ttl=62 time=1.13 ms
64 bytes from 10.1.1.2: icmp_seq=3 ttl=62 time=1.20 ms
--- 10.1.1.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 5ms
rtt min/avg/max/mdev = 1.132/2.882/6.312/2.425 ms
仍然可以成功建立 Ping 连接,因为流量现在可通过第二个隧道发送。您已成功配置了高可用性 VPN 隧道。
任务 8. (可选)清理实验环境
在此任务中,您将清理使用过的资源。此任务为可选操作。当实验结束时,您的所有资源和项目都会自动清理并舍弃。但是,您应该知道如何在自己的环境中自行清理资源,以便节省费用并减少资源用量。
删除 VPN 隧道
- 在 Cloud Shell 中,输入以下命令来删除剩余的隧道。在系统要求时输入“y”以确认每项操作:
gcloud compute vpn-tunnels delete on-prem-tunnel0 --region {{{ project_0.default_region | "REGION" }}}
gcloud compute vpn-tunnels delete vpc-demo-tunnel1 --region {{{ project_0.default_region | "REGION" }}}
gcloud compute vpn-tunnels delete on-prem-tunnel1 --region {{{ project_0.default_region | "REGION" }}}
移除 BGP 对等互连
- 输入以下命令,从每个 BGP 对等端移除对等互连:
gcloud compute routers remove-bgp-peer vpc-demo-router1 --peer-name bgp-on-prem-tunnel0 --region {{{ project_0.default_region | "REGION" }}}
gcloud compute routers remove-bgp-peer vpc-demo-router1 --peer-name bgp-on-prem-tunnel1 --region {{{ project_0.default_region | "REGION" }}}
gcloud compute routers remove-bgp-peer on-prem-router1 --peer-name bgp-vpc-demo-tunnel0 --region {{{ project_0.default_region | "REGION" }}}
gcloud compute routers remove-bgp-peer on-prem-router1 --peer-name bgp-vpc-demo-tunnel1 --region {{{ project_0.default_region | "REGION" }}}
删除 Cloud Router 路由器
- 输入各项命令以删除路由器。在系统要求时输入“y”以确认每项操作:
gcloud compute routers delete on-prem-router1 --region {{{ project_0.default_region | "REGION" }}}
gcloud compute routers delete vpc-demo-router1 --region {{{ project_0.default_region | "REGION" }}}
删除 VPN 网关
- 输入各项命令以删除 VPN 网关。在系统要求时输入“y”以确认每项操作:
gcloud compute vpn-gateways delete vpc-demo-vpn-gw1 --region {{{ project_0.default_region | "REGION" }}}
gcloud compute vpn-gateways delete on-prem-vpn-gw1 --region {{{ project_0.default_region | "REGION" }}}
删除实例
- 输入以下命令以删除各个实例。在系统要求时输入“y”以确认每项操作:
gcloud compute instances delete vpc-demo-instance1 --zone {{{ project_0.default_zone | "ZONE" }}}
gcloud compute instances delete vpc-demo-instance2 --zone {{{project_0.default_zone_2 | "ZONE"}}}
gcloud compute instances delete on-prem-instance1 --zone zone_name
注意:将 替换为创建 on-prem-instance1 所使用的可用区。
删除防火墙规则
- 输入以下命令以删除防火墙规则。在系统要求时输入“y”以确认每项操作:
gcloud compute firewall-rules delete vpc-demo-allow-custom
gcloud compute firewall-rules delete on-prem-allow-subnets-from-vpc-demo
gcloud compute firewall-rules delete on-prem-allow-ssh-icmp
gcloud compute firewall-rules delete on-prem-allow-custom
gcloud compute firewall-rules delete vpc-demo-allow-subnets-from-on-prem
gcloud compute firewall-rules delete vpc-demo-allow-ssh-icmp
删除子网
- 输入以下命令以删除子网。在系统要求时输入“y”以确认每项操作:
gcloud compute networks subnets delete vpc-demo-subnet1 --region {{{ project_0.default_region | "REGION" }}}
gcloud compute networks subnets delete vpc-demo-subnet2 --region {{{project_0.default_region_2 | REGION 2}}}
gcloud compute networks subnets delete on-prem-subnet1 --region {{{ project_0.default_region | "REGION" }}}
删除 VPC
- 输入以下命令以删除 VPC。在系统要求时输入“y”以确认每项操作:
gcloud compute networks delete vpc-demo
gcloud compute networks delete on-prem
任务 9. 回顾
在本实验中,您配置了高可用性 VPN 网关。您还使用 VPN 隧道配置了动态路由,并配置了全局动态路由模式。最后,您通过验证确认了高可用性 VPN 已配置且运行正常。
结束实验
完成实验后,请点击结束实验。Google Cloud Skills Boost 会移除您使用过的资源并为您清理帐号。
系统会提示您为实验体验评分。请选择相应的星级数,输入评论,然后点击提交。
星级数的含义如下:
- 1 颗星 = 非常不满意
- 2 颗星 = 不满意
- 3 颗星 = 一般
- 4 颗星 = 满意
- 5 颗星 = 非常满意
如果您不想提供反馈,可以关闭该对话框。
如果要留言反馈、提出建议或做出更正,请使用支持标签页。
版权所有 2020 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。