GSP159

概览
在本实操实验中,您将学习如何设计并实现安全的网络架构。您将使用 Cloud Shell 和命令行语言 gcloud 来创建一个包含 3 个子网的自定义网络,然后应用防火墙规则来控制可以传入虚拟机实例的流量。
学习内容
在本实验中,您将学习如何创建:
- 一个自定义网络
- 3 个子网
- 带有网络标记的防火墙规则
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 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 概览指南。
了解区域和可用区
某些 Compute Engine 资源位于区域或可用区内。区域是指某一块地理位置,您可以在其中运行自己的资源。每个区域包含一个或多个可用区。例如,us-central1 区域表示美国中部的一个区域,该区域包含的可用区有 us-central1-a、us-central1-b、us-central1-c 和 us-central1-f。
| 区域 |
可用区 |
| 美国西部 |
us-west1-a、us-west1-b |
| 美国中部 |
us-central1-a、us-central1-b、us-central1-d、us-central1-f |
| 美国东部 |
us-east1-b、us-east1-c、us-east1-d |
| 西欧 |
europe-west1-b、europe-west1-c、europe-west1-d |
| 东亚 |
asia-east1-a、asia-east1-b、asia-east1-c |
可用区内的资源称为可用区级资源,例如可用区内的虚拟机实例和永久性磁盘。要将永久性磁盘附加到虚拟机实例,这两项资源必须位于同一可用区内。同理,如果要为某个实例分配一个静态 IP 地址,则该实例与该静态 IP 必须位于同一区域内。
请参阅 Compute Engine 页面中的“区域和可用区”文档,详细了解区域和可用区,并查看完整列表。
设置区域和可用区
在 Cloud Shell 中运行以下 gcloud 命令,设置实验的默认区域和可用区:
gcloud config set compute/zone "{{{project_0.default_zone | Zone}}}"
export ZONE=$(gcloud config get compute/zone)
gcloud config set compute/region "{{{project_0.default_region | Region}}}"
export REGION=$(gcloud config get compute/region)
任务 1. 使用 Cloud Shell 创建自定义网络
创建一个名为 taw-custom-network 的网络,并使用 --subnet-mode custom 标志来定义允许在该网络中自行添加子网的选项。
gcloud compute networks create taw-custom-network --subnet-mode custom
输出:
NAME MODE IPV4_RANGE GATEWAY_IPV4
taw-custom-network custom
在创建防火墙规则之前,无法连接到该网络中的实例。例如,您可以运行以下命令,允许实例之间的所有内部流量,以及 SSH、RDP 和 ICMP 连接:
$ gcloud compute firewall-rules create --network taw-custom-network --allow tcp,udp,icmp --source-ranges
$ gcloud compute firewall-rules create --network taw-custom-network --allow tcp:22,tcp:3389,icmp
接下来,为新的自定义网络创建 3 个子网。在每个命令中,您需要为子网指定区域和所属网络。
- 创建具有 IP 前缀的 subnet-:
gcloud compute networks subnets create subnet-{{{project_0.default_region | Region}}} \
--network taw-custom-network \
--region {{{project_0.default_region | Region}}} \
--range 10.0.0.0/16
输出:
Created [https://www.googleapis.com/compute/v1/projects/cloud-network-module-101/regions/{{{project_0.default_region | Region}}}/subnetworks/subnet-{{{project_0.default_region | Region}}}].
NAME REGION NETWORK RANGE
subnet-{{{project_0.default_region | Region}}} {{{project_0.default_region | Region}}} taw-custom-network 10.0.0.0/16
- 创建具有 IP 前缀的 subnet-:
gcloud compute networks subnets create subnet-{{{project_0.default_region_2 | Region}}} \
--network taw-custom-network \
--region {{{project_0.default_region_2 | Region}}} \
--range 10.1.0.0/16
输出:
Created [https://www.googleapis.com/compute/v1/projects/cloud-network-module-101/regions/{{{project_0.default_region_2 | Region}}}/subnetworks/subnet-{{{project_0.default_region_2 | Region}}}].
NAME REGION NETWORK RANGE
subnet-{{{project_0.default_region_2 | Region}}} {{{project_0.default_region_2 | Region}}} taw-custom-network 10.1.0.0/16
- 创建具有 IP 前缀的 subnet-:
gcloud compute networks subnets create subnet-{{{project_0.default_region_3 | Region}}} \
--network taw-custom-network \
--region {{{project_0.default_region_3 | Region}}} \
--range 10.2.0.0/16
输出:
Created [https://www.googleapis.com/compute/v1/projects/cloud-network-module-101/regions/{{{project_0.default_region_3 | Region}}}/subnetworks/subnet-{{{project_0.default_region_3 | Region}}}].
NAME REGION NETWORK RANGE
subnet-{{{project_0.default_region_2 | Region}}} {{{project_0.default_region_2 | Region}}} taw-custom-network 10.2.0.0/16
- 列出网络:
gcloud compute networks subnets list \
--network taw-custom-network
输出:
NAME REGION NETWORK RANGE
subnet-{{{project_0.default_region_3 | Region}}} {{{project_0.default_region_3 | Region}}} taw-custom-network 10.1.0.0/16
subnet-{{{project_0.default_region_2 | Region}}} {{{project_0.default_region_2 | Region}}} taw-custom-network 10.2.0.0/16
subnet-{{{project_0.default_region | Region}}} {{{project_0.default_region | Region}}} taw-custom-network 10.0.0.0/16
创建一个自定义网络和多个子网
此时,您的网络已拥有连接到互联网以及您创建的任何实例的路由,但没有相应的防火墙规则来允许访问这些实例,甚至无法从其他实例进行访问。
如需允许访问,您必须创建防火墙规则。
任务 2. 添加防火墙规则
如需允许访问虚拟机 (VM) 实例,您必须应用防火墙规则您需要使用网络标记将防火墙规则应用于虚拟机实例。
网络标记是一种强大的工具,可用于管理跨虚拟机实例组的防火墙规则。假设您有一个为网站提供支持的虚拟机集群。您可以直接为所有相关虚拟机应用像“web-server”这样的标记,而无需为每个单独的实例手动配置防火墙规则。然后,您可以创建一条防火墙规则,允许 HTTP 流量进入任何带有“web-server”标记的实例。这种方法不仅简化了防火墙管理,还提供了灵活性,让您可以通过修改基于标记的规则来轻松更新访问权限控制。
注意:标记也会体现在元数据服务器中,因此您可以将它们用于在您的实例上运行的应用。
首先,打开防火墙以允许 HTTP 互联网请求,然后添加更多防火墙规则。
使用 Cloud Shell 添加防火墙规则
接下来,为 taw-custom-network 添加名为 nw101-allow-http 的防火墙规则,该规则只适用于网络中带有 http 标记的虚拟机。
gcloud compute firewall-rules create nw101-allow-http \
--allow tcp:80 --network taw-custom-network --source-ranges 0.0.0.0/0 \
--target-tags http
输出:

创建额外的防火墙规则
创建额外的防火墙规则,以允许 ICMP、内部通信、SSH 和 RDP 连接。
- 使用下面的命令创建更多防火墙规则。
gcloud compute firewall-rules create "nw101-allow-icmp" --allow icmp --network "taw-custom-network" --target-tags rules
gcloud compute firewall-rules create "nw101-allow-internal" --allow tcp:0-65535,udp:0-65535,icmp --network "taw-custom-network" --source-ranges "10.0.0.0/16","10.2.0.0/16","10.1.0.0/16"
gcloud compute firewall-rules create "nw101-allow-ssh" --allow tcp:22 --network "taw-custom-network" --target-tags "ssh"
gcloud compute firewall-rules create "nw101-allow-rdp" --allow tcp:3389 --network "taw-custom-network"
- 使用控制台查看您网络中的防火墙规则。它应如下所示:

注意:网络控制台中显示的路由是怎样的呢?
Google Cloud 网络使用路由在子网之间传输数据包并将数据包发送到互联网。在网络中创建(或预先创建)子网时,系统会自动在每个区域中创建路由,以允许数据包在子网之间路由。这是无法修改的。
您可以创建额外的路由,以将流量发送至目标实例、VPN 网关或默认的互联网网关。您可以修改这些路由,使其适合您所需的网络架构。路由和防火墙会协同工作,确保流量到达预期目的地。
点击检查我的进度,验证已完成以下目标:
创建防火墙规则
在网络中创建虚拟机时,您需要使用与适当的防火墙规则相对应的标记。该防火墙规则将允许网络流量进入这些虚拟机,并且这些虚拟机将能够在您的网络中互相通信。
恭喜
您已使用 gcloud 命令创建了一个网络和 3 个位于不同区域的子网,并应用了多项防火墙规则来允许访问虚拟机。
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2025 年 1 月 17 日
本实验的最后测试时间:2024 年 5 月 14 日
版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。