arrow_back

网络组建和管理基础知识

登录 加入
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

网络组建和管理基础知识

Lab 1 小时 15 分钟 universal_currency_alt 1 个积分 show_chart 入门级
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP016

Google Cloud 自定进度实验

概览

在本实操实验中,您将了解如何在 Google Cloud(包括 Compute Engine 实例)上执行基本的网络组建和管理任务,以及 Google Cloud 和本地设置之间的差异。您将组建一个网络和三个子网,构建最终状态如下的环境:

最终状态环境由以下三个子网组成:subnet-us-central、subnet-europe-west 和 asia-test-01

您将进行的实验练习旨在反映常见的云开发者体验:

  1. 设置实验室环境并了解如何使用 Google Cloud 环境。
  2. 使用常见开源工具部署常见网络(包含子网和多个区域),让您的网络可以在世界各地使用。
  3. 测试和监控您的网络及实例。

学习内容

  • Google Cloud 网络的基本概念和结构。
  • 如何配置默认网络和用户创建的网络。
  • 如何测量性能和延迟时间特征。
  • 访问权限、防火墙和路由的基本安全配置。

前提条件

  • Compute Engine 基础知识
  • 网络组建和管理以及 TCP/IP 基础知识
  • Unix/Linux 命令行基础知识

设置和要求

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。

此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。我们会为您提供新的临时凭据,让您可以在实验规定的时间内用来登录和访问 Google Cloud。

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:如果您已有自己的个人 Google Cloud 账号或项目,请不要在此实验中使用,以避免您的账号产生额外的费用。

如何开始实验并登录 Google Cloud 控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:

    • 打开 Google 控制台按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google 控制台。 该实验会启动资源并打开另一个标签页,显示登录页面。

    提示:请将这些标签页安排在不同的窗口中,并将它们并排显示。

    注意:如果您看见选择帐号对话框,请点击使用其他帐号
  3. 如有必要,请从实验详细信息面板复制用户名,然后将其粘贴到登录对话框中。点击下一步

  4. 请从实验详细信息面板复制密码,然后将其粘贴到欢迎对话框中。点击下一步

    重要提示:您必须使用左侧面板中的凭据。请勿使用您的 Google Cloud Skills Boost 凭据。 注意:在本次实验中使用您自己的 Google Cloud 帐号可能会产生额外费用。
  5. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于该帐号为临时帐号,请勿添加帐号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Cloud 控制台。

注意:您可以点击左上角的导航菜单来查看列有 Google Cloud 产品和服务的菜单。 “导航菜单”图标

激活 Cloud Shell

Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。

  1. 点击 Google Cloud 控制台顶部的激活 Cloud Shell “激活 Cloud Shell”图标

如果您连接成功,即表示您已通过身份验证,且当前项目会被设为您的 PROJECT_ID 环境变量所指的项目。输出内容中有一行说明了此会话的 PROJECT_ID

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。

  1. (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
  1. 点击授权

  2. 现在,输出的内容应如下所示:

输出:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (可选)您可以通过此命令列出项目 ID:
gcloud config list project

输出

[core] project = <project_ID>

输出示例

[core] project = qwiklabs-gcp-44776a13dea667a6 Note: For full documentation of gcloud, in Google Cloud, refer to the gcloud CLI overview guide.

了解区域和可用区

某些 Compute Engine 资源位于区域或可用区内。区域是指某一块地理位置,您可以在其中运行自己的资源。每个区域包含一个或多个可用区。例如,us-central1 区域表示美国中部的一个区域,该区域包含的可用区有 us-central1-aus-central1-bus-central1-cus-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 页面中的“区域和可用区”文档,详细了解区域和可用区,并查看完整列表。

设置区域和可用区

某些 Compute Engine 资源位于区域和可用区内。区域是指某个地理位置,您可以在其中运行自己的资源。每个区域包含一个或多个可用区。

在 Cloud Shell 中运行以下 gcloud 命令,设置实验的默认区域和可用区:

gcloud config set compute/zone "{{{project_0.startup_script.primary_zone | Zone}}}" export ZONE=$(gcloud config get compute/zone) gcloud config set compute/region "{{{project_0.startup_script.primary_region | Region}}}" export REGION=$(gcloud config get compute/region)

任务 1. 查看默认网络

创建新项目时,默认网络配置会为每个区域提供一个自动创建的子网。您最多可以在一个项目中创建四个额外的网络。额外的网络可以是自动子网、自定义子网或旧式网络。

在子网内创建的每个实例都会分配到一个该子网范围内的 IPv4 地址。

  • 查看您的网络。点击导航菜单 > VPC 网络

显示了网络列表的“VPC 网络”页面,其中列有网络相关信息,例如 IP 地址范围和网关。

防火墙

如需详细了解如何使用防火墙规则来隔离子网,请参阅子网防火墙规则

每个网络都有一个默认防火墙,用于阻止传输到实例的所有入站流量。要允许流量进入实例,您必须为防火墙创建“允许”规则。此外,默认防火墙会允许来自实例的流量,除非您使用“出站流量”防火墙配置将其配置为阻止出站连接。因此,默认情况下,您可以为要允许入站的流量创建“允许”规则,为要限制出站的流量创建“拒绝”规则。您还可以为出站流量创建默认拒绝政策,并完全禁止外部连接。

一般来说,我们建议您配置支持您要允许传输的流量类型,同时又最严格的防火墙规则。比如,如果您需要允许流量到达某些实例,但限制流量到达其他实例,可创建仅允许流量到达目标实例的规则。相较于允许流量传输到所有实例的宽松防火墙规则,限制更严的配置更具可预测性。如果您希望“拒绝”规则优先于特定的“允许”规则,可以为每个规则设置优先级。系统将首先根据优先级编号最小的规则进行评估。但是,创建多组繁杂的覆盖规则可能会允许或阻止非预期流量。

默认网络已自动创建防火墙规则,如下所示。手动创建的网络不会自动创建防火墙规则,无论该网络是何种类型。对于除默认网络之外的所有网络,您必须创建所需的全部防火墙规则。

为默认网络自动创建的入站流量防火墙规则如下:

default-allow-internal

允许网络中的实例之间通过任何协议和端口建立网络连接。

default-allow-ssh

允许任何来源与网络中的任何实例通过 TCP 端口 22 建立 SSH 连接。

default-allow-rdp

允许任何来源与网络中的任何实例通过 TCP 端口 3389 建立 RDP 连接。

default-allow-icmp

允许来自任何来源的 ICMP 流量传输到网络中的任何实例。

  • 要查看默认的防火墙规则,可在 Cloud 控制台中依次点击导航菜单 > VPC 网络 > 防火墙

显示了防火墙规则列表的防火墙页面,其中列有各个规则的类型、目标、过滤条件、协议/端口、优先级和网络

网络路由

系统会为所有网络自动创建连接到互联网的路由(默认路由)和连接到网络内 IP 范围的路由。路由名称是自动生成的,并且各项目的路由名称各不相同。

  • 要查看默认路由,请依次点击导航菜单 > VPC 网络 > 路由 > 选择网络区域以显示路由

显示了路由列表的“路由”页面,其中列有各个路由的说明、目标 IP 范围、优先级和网络

任务 2. 创建一个自定义网络

创建具有自定义子网范围的新网络

手动分配子网范围时,首先需创建一个自定义子网,然后创建要布局在一个区域中的子网。您不必立即为所有区域指定子网,甚至根本不必指定子网,但是,您无法在没有定义子网的区域中创建实例。

创建新的子网时,其名称必须在该区域的相应项目内保持唯一,即使子网位于不同的网络中也必须如此。在不同区域的同一个项目中,可以使用相同的子网名称。子网没有网络级 IPv4 范围或网关 IP,因此这些信息不会显示。

您可以在控制台或 Cloud Shell 中创建自定义网络。我们将在稍后为您介绍这两种方法,但您需要决定在本实验中使用哪一种方法。例如,您不能使用控制台指令完成某个部分的任务,然后使用 gcloud 命令行完成同一部分的任务。

任务 3. 使用控制台创建自定义网络

注意:如果您更喜欢使用命令行,请跳过本部分并继续使用 Cloud Shell 创建自定义网络
  1. 要创建自定义网络,请依次点击导航菜单 > VPC 网络

  2. 点击创建 VPC 网络,将其命名为 taw-custom-network

  3. 自定义标签页上,输入以下信息:

    • 子网名称:subnet-
    • 区域:
    • IP 地址范围:10.0.0.0/16
  4. 点击完成

    填充了相应信息的“创建 VPC 网络”对话框

  5. 现在,点击添加子网,再在相应的区域中添加两个子网:

    • subnet-,10.1.0.0/16
    • subnet-,10.2.0.0/16
  6. 点击创建完成操作。

此时,您的网络已拥有连接到互联网以及您可能创建的任何实例的路由。但没有相应的防火墙规则来允许访问这些实例,甚至无法从其他实例进行访问。要允许访问,您必须创建防火墙规则

继续添加防火墙规则部分。

任务 4. 使用 Cloud Shell 创建自定义网络

注意:如果您刚刚使用控制台创建了网络,请不要使用 Cloud Shell 重复此练习。若要使用 gcloud 命令行进行练习,请重新开始实验。
  • 在 Cloud Shell 中输入以下命令来创建自定义网络:
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

接下来,为新的自定义网络创建子网。您需要创建三个子网。

  1. 创建具有 IP 前缀的 subnet-
gcloud compute networks subnets create subnet-{{{project_0.startup_script.primary_region | Region}}} \ --network taw-custom-network \ --region {{{project_0.startup_script.primary_region | Region}}} \ --range 10.0.0.0/16

输出:

Created [https://www.googleapis.com/compute/v1/projects/cloud-network-module-101/regions/{{{project_0.startup_script.primary_region | Region}}}/subnetworks/subnet-{{{project_0.startup_script.primary_region | Region}}}]. NAME REGION NETWORK RANGE subnet-{{{project_0.startup_script.primary_region | Region}}} {{{project_0.startup_script.primary_region | Region}}} taw-custom-network 10.0.0.0/16
  1. 创建具有 IP 前缀的 subnet-
gcloud compute networks subnets create subnet-{{{project_0.startup_script.secondary_region | Region}}} \ --network taw-custom-network \ --region {{{project_0.startup_script.secondary_region | Region}}} \ --range 10.1.0.0/16

输出:

Created [https://www.googleapis.com/compute/v1/projects/cloud-network-module-101/regions/{{{project_0.startup_script.secondary_region | Region}}}/subnetworks/subnet-{{{project_0.startup_script.secondary_region | Region}}}]. NAME REGION NETWORK RANGE subnet-{{{project_0.startup_script.secondary_region | Region}}} {{{project_0.startup_script.secondary_region | Region}}} taw-custom-network 10.1.0.0/16
  1. 创建具有 IP 前缀的 subnet-
gcloud compute networks subnets create subnet-{{{project_0.startup_script.third_region | Region}}} \ --network taw-custom-network \ --region {{{project_0.startup_script.third_region | Region}}} \ --range 10.2.0.0/16

输出:

Created [https://www.googleapis.com/compute/v1/projects/cloud-network-module-101/regions/{{{project_0.startup_script.third_region | Region}}}/subnetworks/subnet-{{{project_0.startup_script.third_region | Region}}}]. NAME REGION NETWORK RANGE subnet-{{{project_0.startup_script.secondary_region | Region}}} {{{project_0.startup_script.secondary_region | Region}}} taw-custom-network 10.2.0.0/16
  1. 列出网络:
gcloud compute networks subnets list \ --network taw-custom-network

如果您在上一部分中创建了自动子网,这些子网也会列出。

输出:

NAME REGION NETWORK RANGE subnet-{{{project_0.startup_script.third_region | Region}}} {{{project_0.startup_script.third_region | Region}}} taw-custom-network 10.1.0.0/16 subnet-{{{project_0.startup_script.secondary_region | Region}}} {{{project_0.startup_script.secondary_region | Region}}} taw-custom-network 10.2.0.0/16 subnet-{{{project_0.startup_script.primary_region | Region}}} {{{project_0.startup_script.primary_region | Region}}} taw-custom-network 10.0.0.0/16

此时,您的网络已拥有连接到互联网以及您可能创建的任何实例的路由。但没有相应的防火墙规则来允许访问这些实例,甚至无法从其他实例进行访问。要允许访问,您必须创建防火墙规则

任务 5. 添加防火墙规则

要允许访问虚拟机实例,您必须应用防火墙规则。您需要使用实例标记将防火墙规则应用于虚拟机实例。防火墙规则将应用于具有相同实例标记的所有虚拟机。

注意:网络和防火墙使用实例标记将特定的防火墙规则应用于标记的虚拟机实例。例如,如果您有多个实例执行相同的任务(例如为大型网站提供服务),那么可以使用同样的字词或词汇标记这些实例,然后在防火墙规则中使用该标记允许对这些实例进行 HTTP 访问。

标记也会体现在元数据服务器中,因此您可以将它们用于在您的实例上运行的应用。
  • 首先,打开防火墙以允许 HTTP 互联网请求,然后添加更多防火墙规则。您可以使用控制台或 Cloud Shell 添加防火墙规则。

通过控制台添加防火墙规则

  1. 在 Cloud 控制台中,前往 VPC 网络,然后点击 taw-custom-network

“VPC 网络”页面上突出显示了 taw-custom-networking

  1. 点击防火墙标签页,然后点击添加防火墙规则

“VPC 网络”详细信息页面上突出显示了“防火墙”标签页和“添加防火墙规则”按钮

  1. 输入以下信息:

字段

注释

名称

nw101-allow-http

新规则名称

目标

指定的目标标记

防火墙规则适用的实例。

目标标记

http

创建的标记

来源过滤条件

IPv4 范围

防火墙允许来自互联网上所有 IP 地址的流量。

来源 IPv4 范围

0.0.0.0/0

防火墙允许来自互联网上所有 IP 地址的流量。

协议和端口

选择指定的协议和端口,勾选 tcp 复选框,然后输入 80

仅限 HTTP

屏幕将如下所示:

填充了相应信息的“创建防火墙规则”对话框

  1. 点击创建,等待命令成功完成。接下来,根据需要创建更多防火墙规则。

使用 Cloud Shell 添加防火墙规则

注意:如果您刚刚使用 Cloud 控制台创建了网络,请不要使用 Cloud Shell 重复此练习。若要使用 gcloud 命令行进行练习,请重新开始实验。
  • 要在 Cloud Shell 中创建防火墙规则,请运行以下命令:
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

输出:

在输出中,规则名称为 nw101-allow-http,网络为 taw-custom-network,方向为入站,优先级为 1000,允许状态为 tcp:80

创建额外的防火墙规则

这些额外的防火墙规则将允许 ICMP、内部通信、SSH 和 RDP 连接。您可以使用控制台(或 Cloud Shell)创建规则。对于每种防火墙规则,您只能使用一种方法,不能同时使用两种方法。

  • ICMP

字段

注释

名称

nw101-allow-icmp

新规则名称

目标

指定的目标标记

从“目标”下拉菜单中选择

目标标记

rules

标记

来源过滤条件

IPv4 范围

防火墙允许来自此列表上所有 IP 地址的流量。

来源 IPv4 范围

0.0.0.0/0

防火墙允许来自互联网上所有 IP 地址的流量。

协议和端口

依次选择指定的协议和端口其他协议,然后输入 icmp

防火墙规则适用的协议和端口

(Cloud Shell 命令)

gcloud compute firewall-rules create "nw101-allow-icmp" --allow icmp --network "taw-custom-network" --target-tags rules
  • 内部通信

字段

注释

名称

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 命令)

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"
  • SSH

字段

注释

名称

nw101-allow-ssh

新规则名称

目标

指定的目标标记

ssh

目标标记

ssh

防火墙规则适用的实例

来源过滤条件

IPv4 范围

用于将规则应用于特定流量来源的过滤条件

来源 IPv4 范围

0.0.0.0/0

防火墙允许来自互联网上所有 IP 地址的流量。

协议和端口

选择指定的协议和端口,勾选 tcp 复选框,然后输入 22

允许 tcp:22

(Cloud Shell 命令)

gcloud compute firewall-rules create "nw101-allow-ssh" --allow tcp:22 --network "taw-custom-network" --target-tags "ssh"
  • RDP

字段

注释

名称

nw101-allow-rdp

新规则名称

目标

网络中的所有实例

从“目标”下拉菜单中选择

来源过滤条件

IPv4 范围

过滤 IP 地址

来源 IPv4 范围

0.0.0.0/0

防火墙允许来自互联网上所有 IP 地址的流量。

协议和端口

选择指定的协议和端口,勾选 tcp,然后输入 3389

允许 tcp:3389

(Cloud Shell 命令)

gcloud compute firewall-rules create "nw101-allow-rdp" --allow tcp:3389 --network "taw-custom-network"
  • 使用控制台查看您网络中的防火墙规则。它应如下所示:

“VPC 网络详情”对话框中的防火墙规则标签页

注意:网络控制台中显示的路由是怎样的呢?

Google Cloud 网络使用路由在子网之间传输数据包并将数据包发送到互联网。在网络中创建(或预先创建)子网时,系统会自动在每个区域中创建路由,以允许数据包在子网之间路由。这是无法改变的。

您可以创建额外的路由,以将流量发送至目标实例、VPN 网关或默认的互联网网关。您可以修改这些路由,使其适合您所需的网络架构。路由和防火墙会协同工作,确保流量到达预期目的地。

点击检查我的进度以验证是否完成了以下目标:

创建自定义网络、子网和防火墙规则。

任务 6. 连接到实验虚拟机并检查延迟时间

  • 点击左侧菜单中的 VPC 网络查看您的整个网络。taw-custom-network 有三个子网并应用了防火墙规则。

界面应如下所示:

显示了网络列表的“VPC 网络”页面,列有各个网络的子网、模式、IP 地址范围、网关、防火墙规则和全局动态路由状态

接下来,我们将在每个子网中创建一个虚拟机,并确保您能连接到这些虚拟机。

在每个可用区中创建一个虚拟机

在实验的本部分中,您将使用 Cloud Shell 完成任务。

  1. 运行以下命令,在 subnet- 子网中创建一个名为 us-test-01 的实例:
gcloud compute instances create us-test-01 \ --subnet subnet-{{{project_0.startup_script.primary_region | Region}}} \ --zone {{{project_0.startup_script.primary_zone | ZONE}}} \ --machine-type e2-standard-2 \ --tags ssh,http,rules

务必记下外部 IP,稍后我们会在实验中用到它。

输出:

Created [https://www.googleapis.com/compute/v1/projects/cloud-network-module-101/zones/{{{project_0.startup_script.primary_zone | ZONE}}}/instances/us-test-01]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS us-test-01 {{{project_0.startup_script.primary_zone | ZONE}}} e2-standard-2 10.0.0.2 104.198.230.22 RUNNING
  1. 接下来,在相关子网中创建 us-test-02 和 us-test-03 虚拟机:
gcloud compute instances create us-test-02 \ --subnet subnet-{{{project_0.startup_script.secondary_region | REGION}}} \ --zone {{{project_0.startup_script.secondary_zone | ZONE}}} \ --machine-type e2-standard-2 \ --tags ssh,http,rules gcloud compute instances create us-test-03 \ --subnet subnet-{{{project_0.startup_script.third_region | REGION}}} \ --zone {{{project_0.startup_script.third_zone | ZONE}}} \ --machine-type e2-standard-2 \ --tags ssh,http,rules

点击检查我的进度以验证是否完成了以下目标:

在指定可用区内创建三个实例,用于 traceroute 和性能测试目的。

验证您是否可以连接到创建的虚拟机

接下来,进行一些练习来测试是否可以连接到您创建的虚拟机。

  1. 返回控制台并找到 Compute Engine

  2. 点击 us-test-01 实例对应的 SSH 按钮。这将在新窗口中打开与该实例的 SSH 连接。

  3. us-test-01 的 SSH 窗口中,输入以下命令对 us-test-02 使用 ICMP 回显(在命令中添加该虚拟机的外部 IP 地址):

ping -c 3 <us-test-02 的外部 IP 地址> 注意:您可以在 Compute Engine 浏览器标签页的外部 IP 字段下找到虚拟机的外部 IP。

突出显示的“外部 IP”列显示了 3 个 IP 地址

您的 IP 地址与图片所示不同
  1. 运行以下命令,对 us-test-03 使用 ICMP 回显(在命令中添加该虚拟机的外部 IP 地址):
ping -c 3 <us-test-03 的外部 IP 地址>

输出示例

PING 35.187.149.67 (35.187.149.67) 56(84) bytes of data. 64 bytes from 35.187.149.67: icmp_seq=1 ttl=76 time=152 ms 64 bytes from 35.187.149.67: icmp_seq=2 ttl=76 time=152 ms 64 bytes from 35.187.149.67: icmp_seq=3 ttl=76 time=152 ms
  1. 接下来,验证 us-test-02us-test-03 实例是否也能通过 SSH 连接到其他实例。尝试对 us-test-01 使用 ICMP 回显。

使用 ping 测量延迟时间

使用 ping 测量所有区域之间各实例间的延迟时间。

  • 要查看从美国中部区域到西欧区域的延迟时间,请打开 us-test-01 的 SSH 窗口并运行以下命令:
ping -c 3 us-test-02.{{{project_0.startup_script.secondary_zone | ZONE}}}

命令输出

PING us-test-02.{{{project_0.startup_script.secondary_zone | ZONE}}}.c.cloud-network-module-101.internal (10.2.0.2) 56(84) bytes of data. 64 bytes from us-test-02.{{{project_0.startup_script.secondary_zone | ZONE}}}.c.cloud-network-module-101.internal (10.2.0.2): icmp_seq=1 ttl=64 time=105 ms 64 bytes from us-test-02.{{{project_0.startup_script.secondary_zone | ZONE}}}.c.cloud-network-module-101.internal (10.2.0.2): icmp_seq=2 ttl=64 time=104 ms 64 bytes from us-test-02.{{{project_0.startup_script.secondary_zone | ZONE}}}.c.cloud-network-module-101.internal (10.2.0.2): icmp_seq=3 ttl=64 time=104 ms

返回的延迟时间是往返时间 (RTT),即数据包从 us-test-01 传输到 us-test-02 所需的时间。

为了测试连接性,ping 会使用 ICMP 回显请求和回显回复消息

注意:请留意以下几点

各区域之间的延迟时间是多少?理想情况下,应该是多少?从“us-test-02”到“us-test-03”的连接有什么特别之处?
注意:内部 DNS:如何向虚拟机实例提供 DNS?

每个实例都有一个元数据服务器,此服务器也用作该实例的 DNS 解析器。DNS 查找是按实例名称执行的。元数据服务器本身会存储本地网络的所有 DNS 信息,并查询 Google 的公共 DNS 服务器以获取本地网络之外的任何地址。

实例的内部完全限定域名 (FQDN) 的格式为 hostName.[ZONE].c.[PROJECT_ID].internal。

您始终可以使用此 FQDN 从一个实例连接到另一实例。如果您只想使用主机名等信息连接到实例,则需要从 Compute Engine 随附的内部 DNS 解析器获取相应信息。

任务 7. (可选)Traceroute 和性能测试

选做练习

Traceroute 是一款用于跟踪两个主机之间的路径的工具。Traceroute 是初步识别多种不同网络问题的好帮手。支持工程师或网络工程师在诊断网络问题时经常会使用 traceroute。

注意:功能

Traceroute 可显示主机之间的所有第 3 层(路由层)跃点。此功能通过向远程目的地发送多个数据包并增加 TTL(存留时间)值(从 1 开始)来实现。TTL 字段是 IP 数据包中的一个字段,通过每个路由器时都会减 1。如果 TTL 达到 0,数据包将被丢弃,并向发送方返回一条 ICMP 消息“已超出 TTL”。此方法用于防止路由循环;数据包不会无限循环下去,因为 TTL 字段最终会递减到 0。默认情况下,操作系统会将 TTL 值设置为较大的值(64、128、255 等),因此只有在异常情况下,TTL 值才会达到 0。

Traceroute 首先发送 TTL 值为 1 的数据包,然后发送 TTL 值为 2 的数据包,以此类推,使得这些数据包在路径中的第一个/第二个(以此类推)路由器处过期。这样,它便能获取返回的 ICMP TTL 超出消息的来源 IP/主机,以显示中间跃点的名称/IP。当 TTL 足够大时,数据包会到达目的地并且目的地会作出响应。

发送的数据包类型取决于具体的实现。在 Linux 上,UDP 数据包会发送到更高的未使用端口。因此,最终目的地会返回“ICMP 端口无法访问”来作出响应。Windows 和 mtr 工具默认使用 ICMP 回显请求(例如 ping),因此最终目的地会返回 ICMP 回显回复。

接下来,我们将在一个虚拟机上设置 traceroute,看看它是如何工作的。

  1. 在此步骤中,我们将继续使用 us-test-01us-test-02 虚拟机,并通过 SSH 连接到这两个虚拟机。

  2. us-test-01 的 SSH 窗口中安装以下性能工具:

sudo apt-get update sudo apt-get -y install traceroute mtr tcpdump iperf whois host dnsutils siege traceroute www.icann.org
  1. 现在,更换目的地和来源再试一下:

    • 同一区域或其他区域中的虚拟机(eu1-vm、asia1-vm、w2-vm)
    • www.wikipedia.org
    • www.adcash.com
    • bad.horse(如果增加 TTL 最大值,效果会更好,因此请使用 traceroute -m 255 bad.horse)
    • 您能想到的任何其他目的地或来源
  2. 要停止 traceroute,请在 SSH 窗口中按 Ctrl-C 并返回命令行。

注意:要留意的事项

您从不同的 traceroute 中发现了什么?

任务 8. (可选)使用 iperf 测试性能

两台主机之间

选做练习

使用 iperf 测试两台主机之间的性能时,需要将一台主机配置为 iperf 服务器以接受连接。

注意:以下命令会在各区域之间传输千兆字节的流量,这需要支付互联网出站流量费用。使用这些命令时请注意这一点。如果您没有参与列入许可名单的项目,也不在免费试用期,则可以跳过本部分,或者仅浏览本部分内容。(费用预计不到 1 美元。)

我们来运行一个非常简单的测试:

  1. 通过 SSH 连接到 us-test-02 并安装性能工具,如下所示:
sudo apt-get update sudo apt-get -y install traceroute mtr tcpdump iperf whois host dnsutils siege
  1. 通过 SSH 连接到 us-test-01 并运行以下命令:
iperf -s #run in server mode
  1. 通过 SSH 连接到 us-test-02 并运行此 iperf
iperf -c us-test-01.{{{project_0.startup_script.primary_zone | ZONE}}} #run in client mode

您将看到类似于以下内容的输出:

Client connecting to eu-vm, TCP port 5001 TCP window size: 45.0 KByte (default) [ 3] local 10.20.0.2 port 35923 connected with 10.30.0.2 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 298 MBytes 249 Mbits/sec
  1. us-test-01 上,完成后按 Ctrl + C 退出服务器端。

区域内的虚拟机之间

选做练习

接下来,在 us-test-01 所在可用区以外的可用区中部署另一个实例 (us-test-04)。您会发现,在一个区域内,出站流量带宽上限限制为每个核心 2 Gbps

  1. 在 Cloud Shell 中,创建 us-test-04
gcloud compute instances create us-test-04 \ --subnet subnet-{{{project_0.startup_script.primary_region | REGION}}} \ --zone {{{project_0.startup_script.primary_zone_1 | ZONE}}} \ --tags ssh,http
  1. 通过 SSH 连接到 us-test-04 并安装性能工具,如下所示:
sudo apt-get update sudo apt-get -y install traceroute mtr tcpdump iperf whois host dnsutils siege

区域之间所能达到的最大带宽要低得多,主要是由于存在 TCP 窗口大小和单一流性能限制。您可以使用其他参数(例如 UDP)增加主机之间的带宽。

  1. 通过 SSH 连接到 us-test-02 并运行以下命令:
iperf -s -u #iperf server side
  1. 通过 SSH 连接到 us-test-01 并运行以下命令:
iperf -c us-test-02.{{{project_0.startup_script.secondary_zone | ZONE}}} -u -b 2G #iperf client side - send 2 Gbits/s

这样应该能提高欧盟和美国之间的速度。您可以通过并行运行大量 TCP iperf 来进一步提高速度。我们来测试一下。

  1. us-test-01 的 SSH 窗口中,运行以下命令:
iperf -s
  1. us-test-02 的 SSH 窗口中,运行以下命令:
iperf -c us-test-01.{{{project_0.startup_script.primary_zone | ZONE}}} -P 20

组合带宽应该非常接近可实现的最大带宽。

  1. 测试更多的组合。如果您笔记本电脑的操作系统为 Linux,您也可以在笔记本电脑上进行测试。(您还可以尝试 iperf3,它适用于许多操作系统,但这不在本实验的讨论范围内。)

如您所见,要达到最大带宽,仅运行单个 TCP 流(例如文件复制)是不够的,您需要并行运行多个 TCP 会话。原因在于 TCP 参数(例如窗口大小)和功能(例如缓慢启动)。

有关此主题以及所有其他 TCP/IP 主题的详细信息,请参阅 TCP/IP 图解

bbcp 等工具允许您通过并行传输和可配置的窗口大小,来尽快复制文件。

任务 9. 知识测验

结束实验

完成实验后,请点击结束实验。您使用的账号和资源会从实验平台中移除。

系统会提示您为实验体验评分。请选择相应的评分星级,输入评论,然后点击提交

星级的含义如下:

  • 1 颗星 = 非常不满意
  • 2 颗星 = 不满意
  • 3 颗星 = 一般
  • 4 颗星 = 满意
  • 5 颗星 = 非常满意

如果您不想提供反馈,可以关闭该对话框。

如果要留言反馈、提出建议或做出更正,请使用支持标签页。

恭喜

您学习了如何配置默认网络和用户创建的网络、如何授予和拒绝访问权限以及测量性能和延迟时间。

后续步骤/了解详情

当您准备好后,欢迎参加 Google Cloud 网络组建和管理基础知识课程。

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

上次更新手册的时间:2024 年 2 月 14 日

上次测试实验的时间:2024 年 2 月 14 日

版权所有 2024 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。