检查点
Create a custom network, subnetworks and firewall rules
/ 50
Create three instances in specified zones for Traceroute and performance testing.
/ 50
网络组建和管理基础知识
GSP016
概览
在本实操实验中,您将了解如何在 Google Cloud(包括 Compute Engine 实例)上执行基本的网络组建和管理任务,以及 Google Cloud 和本地设置之间的差异。您将组建一个网络和三个子网,构建最终状态如下的环境:
您将进行的实验练习旨在反映常见的云开发者体验:
- 设置实验室环境并了解如何使用 Google Cloud 环境。
- 使用常见开源工具部署常见网络(包含子网和多个区域),让您的网络可以在世界各地使用。
- 测试和监控您的网络及实例。
学习内容
- Google Cloud 网络的基本概念和结构。
- 如何配置默认网络和用户创建的网络。
- 如何测量性能和延迟时间特征。
- 访问权限、防火墙和路由的基本安全配置。
前提条件
- Compute Engine 基础知识
- 网络组建和管理以及 TCP/IP 基础知识
- Unix/Linux 命令行基础知识
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。我们会为您提供新的临时凭据,让您可以在实验规定的时间内用来登录和访问 Google Cloud。
为完成此实验,您需要:
- 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
- 完成实验的时间 - 请注意,实验开始后无法暂停。
如何开始实验并登录 Google Cloud 控制台
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:
- 打开 Google 控制台按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google 控制台。 该实验会启动资源并打开另一个标签页,显示登录页面。
提示:请将这些标签页安排在不同的窗口中,并将它们并排显示。
注意:如果您看见选择帐号对话框,请点击使用其他帐号。 -
如有必要,请从实验详细信息面板复制用户名,然后将其粘贴到登录对话框中。点击下一步。
-
请从实验详细信息面板复制密码,然后将其粘贴到欢迎对话框中。点击下一步。
重要提示:您必须使用左侧面板中的凭据。请勿使用您的 Google Cloud Skills Boost 凭据。 注意:在本次实验中使用您自己的 Google Cloud 帐号可能会产生额外费用。 -
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于该帐号为临时帐号,请勿添加帐号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Cloud 控制台。
激活 Cloud Shell
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
- 点击 Google Cloud 控制台顶部的激活 Cloud Shell 。
如果您连接成功,即表示您已通过身份验证,且当前项目会被设为您的 PROJECT_ID 环境变量所指的项目。输出内容中有一行说明了此会话的 PROJECT_ID:
gcloud
是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
- (可选)您可以通过此命令列出活跃账号名称:
-
点击授权。
-
现在,输出的内容应如下所示:
输出:
- (可选)您可以通过此命令列出项目 ID:
输出:
输出示例:
gcloud
, in Google Cloud, refer to the gcloud CLI overview guide.
了解区域和可用区
某些 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 必须位于同一区域内。
Google Cloud 网络概念
在 Google Cloud Platform 中,网络为数据进出云资源(大多数是 Compute Engine 实例)提供连接。保护您的网络对于保障数据安全和控制对资源的访问权限至关重要。
Google Cloud Platform 支持项目、网络和子网,能够对不相关的资源实现灵活的逻辑隔离。
项目是最外层的容器,用于对共享相同信任边界的资源进行分组。许多开发者会将项目映射到团队,因为每个项目都有自己的访问权限政策 (IAM) 和成员列表。项目还起着收集器的作用,收纳可反映资源使用情况的结算详情和配额详情。项目包含网络,而网络包含子网、防火墙规则和路由(请参阅下面的架构示意图)。
网络将资源直接彼此连接以及连接到外部环境。使用防火墙的网络还包含用于控制传入和传出连接的访问权限政策。网络可以是全球网络(可跨多个区域横向伸缩),也可以是区域性网络(可在一个区域内实现低延迟)。
子网支持将相关资源(Compute Engine 实例)分组到 RFC1918 专用地址空间中。子网只能是区域性网络。子网可以采用自动模式或自定义模式。
- 采用自动模式的网络在每个区域都有一个子网,每个子网都有预先确定的 IP 地址范围和网关。当您创建采用自动模式的网络时,这些子网会自动创建,每个子网的名称与整个网络相同。
- 采用自定义模式的网络在创建时没有子网。要在采用自定义模式的网络中创建实例,您必须首先在该区域创建一个子网并指定其 IP 地址范围。采用自定义模式的网络在每个区域可以有一个或多个子网,也可以没有子网。
设置区域和可用区
某些 Compute Engine 资源位于区域和可用区内。区域是指某个地理位置,您可以在其中运行自己的资源。每个区域包含一个或多个可用区。
在 Cloud Shell 中运行以下 gcloud
命令,设置实验的默认区域和可用区:
任务 1. 查看默认网络
创建新项目时,默认网络配置会为每个区域提供一个自动创建的子网。您最多可以在一个项目中创建四个额外的网络。额外的网络可以是自动子网、自定义子网或旧版网络。
在子网内创建的每个实例都会分配到一个该子网范围内的 IPv4 地址。
- 查看您的网络。点击导航菜单 > VPC 网络。
防火墙
如需详细了解如何使用防火墙规则来隔离子网,请参阅子网和防火墙规则。
每个网络都有一个默认防火墙,用于阻止传输到实例的所有入站流量。要允许流量进入实例,您必须为防火墙创建“允许”规则。此外,默认防火墙会允许来自实例的流量,除非您使用“出站流量”防火墙配置将其配置为阻止出站连接。因此,默认情况下,您可以为要允许入站的流量创建“允许”规则,为要限制出站的流量创建“拒绝”规则。您还可以为出站流量创建默认拒绝政策,并完全禁止外部连接。
一般来说,我们建议您配置最严格的防火墙规则,只让它支持您将允许传输的流量类型。比如,如果您需要允许流量到达某些实例,但限制流量到达其他实例,可创建仅允许流量到达目标实例的规则。相较于允许流量传输到所有实例的宽松防火墙规则,限制更严的配置更具可预测性。如果您希望“拒绝”规则优先于特定的“允许”规则,可以为每个规则设置优先级。系统将首先根据优先级编号最小的规则进行评估。但是,创建多组繁杂的覆盖规则可能会允许或阻止非预期流量。
默认网络已自动创建防火墙规则,如下所示。手动创建的网络不会自动创建防火墙规则,无论该网络是何种类型。对于除默认网络之外的所有网络,您必须创建所需的全部防火墙规则。
为默认网络自动创建的入站流量防火墙规则如下:
|
允许网络中的实例之间通过任何协议和端口建立网络连接。 |
|
允许任何来源与网络中的任何实例通过 TCP 端口 22 建立 SSH 连接。 |
|
允许任何来源与网络中的任何实例通过 TCP 端口 3389 建立 RDP 连接。 |
|
允许来自任何来源的 ICMP 流量传输到网络中的任何实例。 |
- 要查看默认的防火墙规则,可在 Cloud 控制台中依次点击导航菜单 > VPC 网络 > 防火墙。
网络路由
系统会为所有网络自动创建连接到互联网的路由(默认路由)和连接到网络内 IP 范围的路由。路由名称是自动生成的,并且各项目的路由名称各不相同。
- 要查看默认路由,请依次点击导航菜单 > VPC 网络 > 路由,在相应字段中分别选择网络和区域,然后点击“查看”以显示路由。
任务 2. 创建一个自定义网络
创建具有自定义子网范围的新网络
手动分配子网范围时,首先需创建一个自定义子网,然后创建要布局在一个区域中的子网。您不必立即为所有区域指定子网,甚至根本不必指定子网,但是,您无法在没有定义子网的区域中创建实例。
创建新的子网时,其名称必须在该区域的相应项目内保持唯一,即使子网位于不同的网络中也必须如此。在不同区域的同一个项目中,可以使用相同的子网名称。子网没有网络级 IPv4 范围或网关 IP,因此这些信息不会显示。
您可以在控制台或 Cloud Shell 中创建自定义网络。我们将在稍后为您介绍这两种方法,但您需要决定在本实验中使用哪一种方法。例如,您不能使用控制台指令完成某个部分的任务,然后使用 gcloud
命令行完成同一部分的任务。
任务 3. 使用控制台创建自定义网络
-
要创建自定义网络,请依次点击导航菜单 > VPC 网络。
-
点击创建 VPC 网络,将其命名为
taw-custom-network
。 -
在自定义标签页上,输入以下信息:
- 子网名称:subnet-
- 区域:
- IP 地址范围:
10.0.0.0/16
- 子网名称:subnet-
-
点击完成。
-
现在,点击添加子网,再在相应的区域中添加两个子网:
- subnet-
, ,10.1.0.0/16 - subnet-
, ,10.2.0.0/16
- subnet-
-
点击创建完成操作。
此时,您的网络已拥有连接到互联网以及您可能创建的任何实例的路由。但没有相应的防火墙规则来允许访问这些实例,甚至无法从其他实例进行访问。要允许访问,您必须创建防火墙规则。
继续添加防火墙规则部分。
任务 4. 使用 Cloud Shell 创建自定义网络
gcloud
命令行进行练习,请重新开始实验。- 在 Cloud Shell 中输入以下命令来创建自定义网络:
输出:
接下来,为新的自定义网络创建子网。您需要创建三个子网。
- 创建具有 IP 前缀的 subnet-
:
输出:
- 创建具有 IP 前缀的 subnet-
:
输出:
- 创建具有 IP 前缀的 subnet-
:
输出:
- 列出网络:
如果您在上一部分中创建了自动子网,这些子网也会列出。
输出:
此时,您的网络已拥有连接到互联网以及您可能创建的任何实例的路由。但没有相应的防火墙规则来允许访问这些实例,甚至无法从其他实例进行访问。要允许访问,您必须创建防火墙规则。
任务 5. 添加防火墙规则
要允许访问虚拟机实例,您必须应用防火墙规则。您需要使用实例标记将防火墙规则应用于虚拟机实例。防火墙规则将应用于具有相同实例标记的所有虚拟机。
- 首先,打开防火墙以允许 HTTP 互联网请求,然后添加更多防火墙规则。您可以使用控制台或 Cloud Shell 添加防火墙规则。
通过控制台添加防火墙规则
- 在 Cloud 控制台中,前往 VPC 网络,然后点击 taw-custom-network:
- 点击防火墙标签页,然后点击添加防火墙规则。
- 输入以下信息:
字段 |
值 |
注释 |
名称 |
nw101-allow-http |
新规则名称 |
目标 |
指定的目标标记 |
防火墙规则适用的实例。 |
目标标记 |
http |
创建的标记 |
来源过滤条件 |
IPv4 范围 |
防火墙允许来自互联网上所有 IP 地址的流量。 |
来源 IPv4 范围 |
0.0.0.0/0 |
防火墙允许来自互联网上所有 IP 地址的流量。 |
协议和端口 |
选择指定的协议和端口,勾选 tcp 复选框,然后输入 80 |
仅限 HTTP |
屏幕将如下所示:
- 点击创建,等待命令成功完成。接下来,根据需要创建更多防火墙规则。
使用 Cloud Shell 添加防火墙规则
gcloud
命令行进行练习,请重新开始实验。- 要在 Cloud Shell 中创建防火墙规则,请运行以下命令:
输出:
创建额外的防火墙规则
这些额外的防火墙规则将允许 ICMP、内部通信、SSH 和 RDP 连接。您可以使用控制台(或 Cloud Shell)创建规则。对于每种防火墙规则,您只能使用一种方法,不能同时使用两种方法。
- ICMP
字段 |
值 |
注释 |
名称 |
nw101-allow-icmp |
新规则名称 |
目标 |
指定的目标标记 |
从“目标”下拉菜单中选择 |
目标标记 |
rules |
标记 |
来源过滤条件 |
IPv4 范围 |
防火墙允许来自此列表上所有 IP 地址的流量。 |
来源 IPv4 范围 |
0.0.0.0/0 |
防火墙允许来自互联网上所有 IP 地址的流量。 |
协议和端口 |
依次选择指定的协议和端口、其他协议,然后输入 icmp |
防火墙规则适用的协议和端口 |
(Cloud Shell 命令)
- 内部通信
字段 |
值 |
注释 |
名称 |
nw101-allow-internal |
新规则名称 |
目标 |
网络中的所有实例 |
从“目标”下拉菜单中选择 |
来源过滤条件 |
IPv4 范围 |
用于将规则应用于特定流量来源的过滤条件 |
来源 IPv4 范围 |
10.0.0.0/16、 10.1.0.0/16、 10.2.0.0/16 |
防火墙允许来自互联网上所有 IP 地址的流量。 |
协议和端口 |
依次选择指定的协议和端口、tcp,然后输入 0-65535,勾选 udp,输入 0-65535,勾选其他协议,然后输入 icmp |
允许 Tcp:0-65535、udp:0-65535、icmp |
(Cloud Shell 命令)
- SSH
字段 |
值 |
注释 |
名称 |
nw101-allow-ssh |
新规则名称 |
目标 |
指定的目标标记 |
ssh |
目标标记 |
ssh |
防火墙规则适用的实例 |
来源过滤条件 |
IPv4 范围 |
用于将规则应用于特定流量来源的过滤条件 |
来源 IPv4 范围 |
0.0.0.0/0 |
防火墙允许来自互联网上所有 IP 地址的流量。 |
协议和端口 |
选择指定的协议和端口,勾选 tcp 复选框,然后输入 22 |
允许 tcp:22 |
(Cloud Shell 命令)
- RDP
字段 |
值 |
注释 |
名称 |
nw101-allow-rdp |
新规则名称 |
目标 |
网络中的所有实例 |
从“目标”下拉菜单中选择 |
来源过滤条件 |
IPv4 范围 |
过滤 IP 地址 |
来源 IPv4 范围 |
0.0.0.0/0 |
防火墙允许来自互联网上所有 IP 地址的流量。 |
协议和端口 |
选择指定的协议和端口,勾选 tcp,然后输入 3389 |
允许 tcp:3389 |
(Cloud Shell 命令)
- 使用控制台查看您网络中的防火墙规则。它应如下所示:
点击检查我的进度以验证是否完成了以下目标:
任务 6. 连接到实验虚拟机并检查延迟时间
- 点击左侧菜单中的 VPC 网络查看您的整个网络。taw-custom-network 有三个子网并应用了防火墙规则。
界面应如下所示:
接下来,我们将在每个子网中创建一个虚拟机,并确保您能连接到这些虚拟机。
在每个可用区中创建一个虚拟机
在实验的本部分中,您将使用 Cloud Shell 完成任务。
- 运行以下命令,在 subnet-
子网中创建一个名为 us-test-01
的实例:
务必记下外部 IP,稍后我们会在实验中用到它。
输出:
- 接下来,在相关子网中创建 us-test-02 和 us-test-03 虚拟机:
点击检查我的进度以验证是否完成了以下目标:
验证您是否可以连接到创建的虚拟机
接下来,进行一些练习来测试是否可以连接到您创建的虚拟机。
-
返回控制台并找到 Compute Engine。
-
点击
us-test-01
实例对应的 SSH 按钮。这将在新窗口中打开与该实例的 SSH 连接。 -
在
us-test-01
的 SSH 窗口中,输入以下命令对us-test-02
使用 ICMP 回显(在命令中添加该虚拟机的外部 IP 地址):
- 运行以下命令,对
us-test-03
使用 ICMP 回显(在命令中添加该虚拟机的外部 IP 地址):
输出示例:
- 接下来,验证
us-test-02
和us-test-03
实例是否也能通过 SSH 连接到其他实例。尝试对us-test-01
使用 ICMP 回显。
使用 ping 测量延迟时间
使用 ping 测量所有区域之间各实例间的延迟时间。
- 要查看从美国中部区域到西欧区域的延迟时间,请打开
us-test-01
的 SSH 窗口并运行以下命令:
命令输出:
返回的延迟时间是往返时间 (RTT),即数据包从 us-test-01
传输到 us-test-02
所需的时间。
为了测试连接性,ping 会使用 ICMP 回显请求和回显回复消息。
任务 7. (可选)Traceroute 和性能测试
选做练习
Traceroute 是一款用于跟踪两个主机之间的路径的工具。Traceroute 是初步识别多种不同网络问题的好帮手。支持工程师或网络工程师在诊断网络问题时经常会使用 traceroute。
接下来,我们将在一个虚拟机上设置 traceroute,看看它是如何工作的。
-
在此步骤中,我们将继续使用
us-test-01
和us-test-02
虚拟机,并通过 SSH 连接到这两个虚拟机。 -
在
us-test-01
的 SSH 窗口中安装以下性能工具:
-
现在,更换目的地和来源再试一下:
- 同一区域或其他区域中的虚拟机(eu1-vm、asia1-vm、w2-vm)
- www.wikipedia.org
- www.adcash.com
- bad.horse(如果增加 TTL 最大值,效果会更好,因此请使用 traceroute -m 255 bad.horse)
- 您能想到的任何其他目的地或来源
-
要停止 traceroute,请在 SSH 窗口中按 Ctrl-C 并返回命令行。
任务 8. (可选)使用 iperf 测试性能
两台主机之间
选做练习
使用 iperf
测试两台主机之间的性能时,需要将一台主机配置为 iperf 服务器以接受连接。
我们来运行一个非常简单的测试:
- 通过 SSH 连接到
us-test-02
并安装性能工具,如下所示:
- 通过 SSH 连接到
us-test-01
并运行以下命令:
- 通过 SSH 连接到
us-test-02
并运行此iperf
:
您将看到类似于以下内容的输出:
- 在
us-test-01
上,完成后按 Ctrl + C 退出服务器端。
区域内的虚拟机之间
选做练习
接下来,在 us-test-01
所在可用区以外的可用区中部署另一个实例 (us-test-04
)。您会发现,在一个区域内,出站流量带宽上限限制为每个核心 2 Gbps。
- 在 Cloud Shell 中,创建
us-test-04
:
- 通过 SSH 连接到
us-test-04
并安装性能工具,如下所示:
区域之间所能达到的最大带宽要低得多,主要是由于存在 TCP 窗口大小和单一流性能限制。您可以使用其他参数(例如 UDP)增加主机之间的带宽。
- 通过 SSH 连接到
us-test-02
并运行以下命令:
- 通过 SSH 连接到
us-test-01
并运行以下命令:
这样应该能提高欧盟和美国之间的速度。您可以通过并行运行大量 TCP iperf
来进一步提高速度。我们来测试一下。
- 在
us-test-01
的 SSH 窗口中,运行以下命令:
- 在
us-test-02
的 SSH 窗口中,运行以下命令:
组合带宽应该非常接近可实现的最大带宽。
如您所见,要达到最大带宽,仅运行单个 TCP 流(例如文件复制)是不够的,您需要并行运行多个 TCP 会话。原因在于 TCP 参数(例如窗口大小)和功能(例如缓慢启动)。
有关此主题以及所有其他 TCP/IP 主题的详细信息,请参阅 TCP/IP 图解。
bbcp 等工具允许您通过并行传输和可配置的窗口大小,来尽快复制文件。
任务 9. 知识测验
结束实验
完成实验后,请点击结束实验。您使用的账号和资源会从实验平台中移除。
系统会提示您为实验体验评分。请选择相应的评分星级,输入评论,然后点击提交。
星级的含义如下:
- 1 颗星 = 非常不满意
- 2 颗星 = 不满意
- 3 颗星 = 一般
- 4 颗星 = 满意
- 5 颗星 = 非常满意
如果您不想提供反馈,可以关闭该对话框。
如果要留言反馈、提出建议或做出更正,请使用支持标签页。
恭喜
您学习了如何配置默认网络和用户创建的网络、如何授予和拒绝访问权限以及测量性能和延迟时间。
后续步骤/了解详情
当您准备好后,欢迎参加 Google Cloud 网络组建和管理基础知识课程。
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2024 年 5 月 14 日
上次测试实验的时间:2024 年 5 月 14 日
版权所有 2024 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。