GSP062

概览
本实操实验介绍了如何创建高吞吐量的安全 VPN 并测试其速度。
在 Google Cloud 与其他云端或本地系统之间进行安全通信是一个常见的关键需求。Google Cloud 可帮助您轻松创建安全的互联网安全协议 (IPsec) 虚拟专用网 (VPN) 来实现此目标。如果单个隧道不足以提供所需的吞吐量,Google Cloud 可跨多个隧道顺畅分配流量来提供额外的带宽。
目标
在本实验中,您需要完成以下操作:
-
创建 VPN
- 创建一个名为
cloud
的虚拟私有云 (VPC) 来模拟您的 Google Cloud 网络,以及一个名为 on-prem
(本地)的 VPC 来模拟外部网络。
- 为
cloud
VPC 创建 VPN 网关、转发规则和地址。
- 为新 VPN 建立隧道,并通过隧道路由流量。
- 对
on-prem
VPC 重复上述 VPN 创建过程,创建第二个 VPN。
-
测试 VPN
前提条件
为充分提升学习效果,建议您先完成以下内容:
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。
为完成此实验,您需要:
- 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。
如何开始实验并登录 Google Cloud 控制台
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:
- “打开 Google Cloud 控制台”按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示“登录”页面。
提示:将这些标签页安排在不同的窗口中,并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。
-
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}}
您也可以在“实验详细信息”窗格中找到“用户名”。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}}
您也可以在“实验详细信息”窗格中找到“密码”。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。
注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
-
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于这是临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。
激活 Cloud Shell
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
-
点击 Google Cloud 控制台顶部的激活 Cloud Shell
。
-
在弹出的窗口中执行以下操作:
- 继续完成 Cloud Shell 信息窗口中的设置。
- 授权 Cloud Shell 使用您的凭据进行 Google Cloud API 调用。
如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID 。输出内容中有一行说明了此会话的 Project_ID:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud
是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
- (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
- 点击授权。
输出:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (可选)您可以通过此命令列出项目 ID:
gcloud config list project
输出:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注意:如需查看在 Google Cloud 中使用 gcloud
的完整文档,请参阅 gcloud CLI 概览指南。
任务 1. 创建云 VPC
在本部分中,您将执行以下操作:
- 创建 VPC 以模拟您的云生产网络。
- 允许常见类型的流量流过 VPC。
- 创建用于部署主机的子网。
- 在 Cloud Shell 中,运行以下命令,创建与您的 Google Cloud 项目关联的自定义 VPC,并将其命名为
cloud
:
gcloud compute networks create cloud --subnet-mode custom
此 VPC 允许您使用非默认 IP 地址,但不包含任何默认防火墙规则。
- 运行以下命令启用
SSH
和 icmp
,因为在连接测试期间您需要一个安全外壳 (SSH) 与虚拟机进行通信:
gcloud compute firewall-rules create cloud-fw --network cloud --allow tcp:22,tcp:5001,udp:5001,icmp
- 运行以下命令在此 VPC 中创建一个子网,并指定区域和 IP 范围:
gcloud compute networks subnets create cloud-east --network cloud \
--range 10.0.1.0/24 --region {{{project_0.default_region_2 | REGION2}}}
在此方案中,您将使用 10.0.1.0/24
和 区域。
任务 2. 创建本地 VPC
在本部分中,您将为 on-prem
VPC 或任何要连接到 cloud
的网络创建模拟环境。实际上,您已经拥有了所需的资源,但是为了创建隧道并验证配置,请按照下列步骤操作:
- 在 Cloud Shell 中,运行以下命令,创建与您的项目关联的自定义子网 VPC,并将其命名为
on-prem
:
gcloud compute networks create on-prem --subnet-mode custom
- 运行以下命令,为
on-prem
VPC 中的主机启用 SSH
和 icmp
,因为在负载测试期间您需要使用安全外壳来与虚拟机通信:
gcloud compute firewall-rules create on-prem-fw --network on-prem --allow tcp:22,tcp:5001,udp:5001,icmp
- 使用以下命令指定区域的子网前缀:
gcloud compute networks subnets create on-prem-central \
--network on-prem --range 192.168.1.0/24 --region {{{project_0.default_region |REGION}}}
注意:本示例会将 `192.168.1.0/24` 分配给 区域。
创建两个带有子网和防火墙规则的自定义 VPC。
任务 3. 创建 VPN 网关
每个环境都需要 VPN 网关才能进行安全的外部通信。请按照以下步骤为您的 cloud VPC 和 on-prem
VPC 创建初始网关:
- 在 Cloud Shell 中,在
on-prem
VPC 和 区域中创建名为 on-prem-gw1
的 VPN 网关:
gcloud compute target-vpn-gateways create on-prem-gw1 --network on-prem --region {{{project_0.default_region |REGION}}}
- 在
cloud
VPC 和 区域中创建一个名为 cloud-gw1
的 VPN 网关:
gcloud compute target-vpn-gateways create cloud-gw1 --network cloud --region {{{project_0.default_region_2 | REGION2}}}
任务 4. 在本地和 Google Cloud 网络之间创建一个基于路由的 VPN 隧道
每个 VPN 网关都需要一个静态的外部 IP 地址,以便外部系统与 VPC 通信。然后,在 cloud VPC 和 on-prem
VPC 上创建 IP 地址和路由。
- 在 Cloud Shell 中,为
cloud-gw1
VPN 网关分配 IP:
gcloud compute addresses create cloud-gw1 --region {{{project_0.default_region_2 | REGION2}}}
- 为
on-prem-gw1
VPN 网关分配 IP:
gcloud compute addresses create on-prem-gw1 --region {{{project_0.default_region |REGION}}}
- 保存网关地址,方便在后续的命令中使用。
首先,对于 cloud-gw1
网关:
cloud_gw1_ip=$(gcloud compute addresses describe cloud-gw1 \
--region {{{project_0.default_region_2 | REGION2}}} --format='value(address)')
其次,对于 on-prem-gw1
网关:
on_prem_gw_ip=$(gcloud compute addresses describe on-prem-gw1 \
--region {{{project_0.default_region |REGION}}} --format='value(address)')
- 在
cloud
VPC 上为 IPsec 创建转发规则。您需要创建双向的转发规则。
转发来自 cloud-gw1
的封装安全载荷 (ESP) 协议:
gcloud compute forwarding-rules create cloud-1-fr-esp --ip-protocol ESP \
--address $cloud_gw1_ip --target-vpn-gateway cloud-gw1 --region {{{project_0.default_region_2 | REGION2}}}
转发来自 cloud-gw1 的 UDP:500
流量:
gcloud compute forwarding-rules create cloud-1-fr-udp500 --ip-protocol UDP \
--ports 500 --address $cloud_gw1_ip --target-vpn-gateway cloud-gw1 --region {{{project_0.default_region_2 | REGION2}}}
转发来自 cloud-gw1 的 UDP:4500
流量:
gcloud compute forwarding-rules create cloud-fr-1-udp4500 --ip-protocol UDP \
--ports 4500 --address $cloud_gw1_ip --target-vpn-gateway cloud-gw1 --region {{{project_0.default_region_2 | REGION2}}}
- 使用相同的方法,为
on-prem
VPC 的 IPsec 隧道创建防火墙转发规则。此步骤允许 IPsec 隧道穿过防火墙:
转发来自 on-prem-gw1
的 ESP 协议:
gcloud compute forwarding-rules create on-prem-fr-esp --ip-protocol ESP \
--address $on_prem_gw_ip --target-vpn-gateway on-prem-gw1 --region {{{project_0.default_region |REGION}}}
转发 UDP:500
流量,用于从 on-prem-gw1 建立 IPsec 隧道:
gcloud compute forwarding-rules create on-prem-fr-udp500 --ip-protocol UDP --ports 500 \
--address $on_prem_gw_ip --target-vpn-gateway on-prem-gw1 --region {{{project_0.default_region |REGION}}}
转发 UDP:4500
流量,用于传输来自 on-prem-gw1
的加密流量:
gcloud compute forwarding-rules create on-prem-fr-udp4500 --ip-protocol UDP --ports 4500 \
--address $on_prem_gw_ip --target-vpn-gateway on-prem-gw1 --region {{{project_0.default_region |REGION}}}
创建两个 VPN 网关和必要的转发规则。
通常,您需要生成一个密钥,以便在下一步中创建并验证 on-prem-tunnel1
隧道和 cloud-tunnel1
隧道。如需详细了解如何创建和安全存储密钥,请参阅 Secret Manager 概念概览指南。在本例中,只需使用字符串“sharedsecret”。
为本地网络创建隧道 on-prem-tunnel1
,为云端网络创建隧道 cloud-tunnel1
。每个网络都必须有一个 VPN 网关,并且密钥必须匹配。在以下两个命令中,您需要在生产场景中将 [MY_SECRET]
替换为您生成的密钥。在本例中,请将其替换为“sharedsecret”
- 创建从
on-prem
到 cloud
的 VPN 隧道:
gcloud compute vpn-tunnels create on-prem-tunnel1 --peer-address $cloud_gw1_ip \
--target-vpn-gateway on-prem-gw1 --ike-version 2 --local-traffic-selector 0.0.0.0/0 \
--remote-traffic-selector 0.0.0.0/0 --shared-secret=[MY_SECRET] --region {{{project_0.default_region |REGION}}}
- 创建从 cloud 到 on-prem 的 VPN 隧道:
gcloud compute vpn-tunnels create cloud-tunnel1 --peer-address $on_prem_gw_ip \
--target-vpn-gateway cloud-gw1 --ike-version 2 --local-traffic-selector 0.0.0.0/0 \
--remote-traffic-selector 0.0.0.0/0 --shared-secret=[MY_SECRET] --region {{{project_0.default_region_2 | REGION2}}}
现在您已经创建了网关并建立了隧道,接着您需要添加从子网通过两个隧道的路由。
- 通过隧道将来自
on-prem
VPC 的流量路由到 cloud 10.0.1.0/24
范围:
gcloud compute routes create on-prem-route1 --destination-range 10.0.1.0/24 \
--network on-prem --next-hop-vpn-tunnel on-prem-tunnel1 \
--next-hop-vpn-tunnel-region {{{project_0.default_region |REGION}}}
- 通过隧道将来自
cloud
VPC 的流量路由到 on-prem 192.168.1.0/24
范围:
gcloud compute routes create cloud-route1 --destination-range 192.168.1.0/24 \
--network cloud --next-hop-vpn-tunnel cloud-tunnel1 --next-hop-vpn-tunnel-region {{{project_0.default_region_2 | REGION2}}}
创建两个 VPN 隧道。
任务 5. 测试 VPN 吞吐量
此时,您已在本地 VPC 和云 VPC 之间建立了安全通道。如需测试吞吐量,可以使用 iperf,这是一种用于网络负载测试的开源工具。为了进行测试,您需要在每个环境中部署一个虚拟机,一个用于发送流量,另一个用于接收流量。接下来,您将创建这些虚拟机。
单 VPN 负载测试
为 cloud VPC 创建一个名为 cloud-loadtest
的虚拟机。此示例使用 Debian Linux 映像作为操作系统。
注意:如果您现在已有项目,可省略此步骤并使用现有资源。虚拟机的带宽为 2 Gbps * vCPU,因此您最少需要 4 个 vCPU。
- 运行以下命令:
gcloud compute instances create "cloud-loadtest" --zone {{{project_0.default_zone_2 |ZONE2}}} \
--machine-type "e2-standard-4" --subnet "cloud-east" \
--image-family "debian-11" --image-project "debian-cloud" --boot-disk-size "10" \
--boot-disk-type "pd-standard" --boot-disk-device-name "cloud-loadtest"
- 为
on-prem
VPC 创建名为 on-prem-loadtest
的虚拟机。此示例使用与 cloud VPC 中相同的 Debian 映像。如果您已有资源,请忽略此步骤。
运行以下命令:
gcloud compute instances create "on-prem-loadtest" --zone {{{project_0.default_zone |ZONE}}} \
--machine-type "e2-standard-4" --subnet "on-prem-central" \
--image-family "debian-11" --image-project "debian-cloud" --boot-disk-size "10" \
--boot-disk-type "pd-standard" --boot-disk-device-name "on-prem-loadtest"
- 使用控制台或命令行通过 SSH 连接到每个虚拟机,并使用以下命令行安装 iperf:
sudo apt-get install iperf
- 在
on-prem-loadtest
虚拟机上,运行以下命令:
iperf -s -i 5
您已在虚拟机上创建了一个每 5 秒报告其状态一次的 iperf 服务器。
- 在
cloud-loadtest
虚拟机上,运行以下命令:
iperf -c 192.168.1.2 -P 20 -x C
此命令会创建一个包含 20 个流的 iperf 客户端,它将在 10 秒的测试后报告吞吐量值。
创建两个虚拟机并通过 SSH 安装 iperf。
排查可能遇到的问题
注意:实验步骤不包括该部分。
- 在为本地网络创建隧道时,如果忘记将 [MY_SECRET] 替换为“sharedsecret”,
您可以使用以下命令删除创建的 VPN 隧道:
gcloud compute vpn-tunnels delete [tunnel-name] --region [region]
- 将 [tunnel-name] 替换为隧道的名称。
- 将 [region] 替换为创建隧道时指定的区域。
- 如果您在“单 VPN 负载测试”部分遇到问题:
-
确保您在两个虚拟机上都安装了 iperf。
-
如果出现“连接遭拒”错误,请验证以下内容:
- 已为创建的网络添加防火墙规则 (tcp:5001)
- 服务器是否在
on-prem-loadtest
上正常运行
- 是否尝试通过
cloud-loadtest
连接到服务器
- 如果需要查看在控制台中创建的转发规则:
- 在导航菜单中,前往“网络”部分。
- 点击 Network Connectivity > VPN。
- 点击 Cloud VPN 网关,查看 Cloud VPN 网关详情页面。
恭喜!
在本实验中,您在两个模拟网络(云 VPC 和本地 VPC)之间构建了高吞吐量 VPN。您学习了如何创建自定义 VPC、配置 VPN 网关、建立安全的 IPsec 隧道,以及通过这些隧道路由流量。最后,您使用 iperf
测试了 VPN 的吞吐量,以验证其性能。
后续步骤
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
本手册的最后更新时间:2025 年 3 月 30 日
本实验的最后测试时间:2025 年 2 月 25 日
版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。