arrow_back

实现专用 Google 访问通道和 Cloud NAT

登录 加入
访问 700 多个实验和课程

实现专用 Google 访问通道和 Cloud NAT

实验 1 小时 20 分钟 universal_currency_alt 5 个积分 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
访问 700 多个实验和课程

概览

在本实验中,您将为没有外部 IP 地址的虚拟机实例实现专用 Google 访问通道和 Cloud NAT。然后,您将验证该虚拟机能够访问 Google API 和服务的公共 IP 地址以及进行其他互联网连接。

没有外部 IP 地址的虚拟机实例与外部网络是隔离开来的。通过使用 Cloud NAT,这些实例可以访问互联网,以进行更新和修补,在某些情况下,还可以通过互联网进行引导。作为一项托管式服务,Cloud NAT 无需用户管理和干预即可实现高可用性。

目标

在本实验中,您将学习如何执行以下任务:

  • 配置没有外部 IP 地址的虚拟机实例
  • 使用 Identity-Aware Proxy (IAP) 隧道连接至虚拟机实例
  • 在子网中启用专用 Google 访问通道
  • 配置 Cloud NAT 网关
  • 验证能够访问 Google API 和服务的公共 IP 地址以及进行其他互联网连接

设置和要求

对于每个实验,您都会免费获得一个新的 Google Cloud 项目及一组资源,它们都有固定的使用时限。

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

    • 打开 Google Cloud 控制台按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示登录页面。

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

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在实验详细信息面板中找到用户名

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在实验详细信息面板中找到密码

  6. 点击下一步

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

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

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

注意:如需查看列有 Google Cloud 产品和服务的菜单,请点击左上角的导航菜单,或在搜索字段中输入服务或产品的名称。 “导航菜单”图标

任务 1. 创建虚拟机实例

创建包含某些防火墙规则的 VPC 网络以及没有外部 IP 地址的虚拟机实例,并使用 IAP 隧道连接至该实例。

创建 VPC 网络并设定防火墙规则

首先,为虚拟机实例创建 VPC 网络,并设定防火墙规则以允许使用 SSH 进行访问。

  1. 在 Google Cloud 控制台的导航菜单 (“导航菜单”图标) 中,依次点击 VPC 网络 > VPC 网络

  2. 点击创建 VPC 网络

  3. 对于名称,输入 privatenet

  4. 对于子网创建模式,点击自定义

  5. 新子网中,指定以下信息,其他设置则保留默认值:

    属性 值(按照说明输入值或选择选项)
    名称 privatenet-us
    区域
    IPv4 地址范围 10.130.0.0/20
注意:暂时请勿启用专用 Google 访问通道
  1. 点击完成

  2. 点击创建,然后等待网络创建完成。

  3. 在左侧窗格中,点击防火墙

  4. 点击创建防火墙规则

  5. 指定以下信息,其他设置则保留默认值:

    属性 值(按照说明输入值或选择选项)
    名称 privatenet-allow-ssh
    网络 privatenet
    目标 网络中的所有实例
    来源过滤条件 IPv4 范围
    来源 IPv4 范围 35.235.240.0/20
    协议和端口 指定的协议和端口
  6. 对于 tcp,选中复选框并指定端口 22

  7. 点击创建

注意:为使用 SSH 连接到您的专用实例,您需要在防火墙上打开相应的端口。IAP 连接来自一组特定的 IP 地址 (35.235.240.0/20)。因此,您可以将规则限制为此 CIDR 范围。

创建没有公共 IP 地址的虚拟机实例

  1. 在 Google Cloud 控制台的导航菜单 (“导航菜单”图标) 中,依次点击 Compute Engine > 虚拟机实例

  2. 点击创建实例

  3. 机器配置页面上,指定以下信息,并将其余设置保留为默认值:

    属性 值(按照说明输入值或选择选项)
    名称 vm-internal
    区域
    可用区
    系列 E2
    机器类型 e2-medium(2 个 vCPU、1 个核心、4 GB 内存)
  4. 点击操作系统和存储空间

  5. 如果显示的映像不是 Debian GNU/Linux 12 (bookworm),请点击更改,选择 Debian GNU/Linux 12 (bookworm),然后点击选择

  6. 点击网络

  7. 网络接口中,指定以下设置对其进行修改:

    属性 值(按照说明输入值或选择选项)
    网络 privatenet
    子网 privatenet-us
    外部 IPv4 地址
注意:虚拟机实例默认设置为有一个临时的外部 IP 地址。可在组织或项目级实施政策限制条件来更改这一行为。如需详细了解如何管理虚拟机实例的外部 IP 地址,请参阅外部 IP 地址文档
  1. 点击完成
  2. 点击创建,等待虚拟机实例创建完成。
  3. 虚拟机实例页面上,确认 vm-internal外部 IP

点击检查我的进度,验证已完成以下目标: 创建虚拟机实例

使用 SSH 连接至 vm-internal,以测试 IAP 隧道

  1. 在 Cloud 控制台中,点击激活 Cloud Shell (Cloud Shell)。

  2. 如果出现提示,点击继续

  3. 在 Cloud Shell 中运行以下命令,在不打开浏览器的情况下设置身份验证。

    gcloud auth login --no-launch-browser

    如果出现 [Y/n] 提示,请按 Y,再按 Enter

    这将为您提供一个可在浏览器中打开的链接。在您登录了 Qwiklabs 账号的同一浏览器中打开链接。登录之后,您将获得验证码,将其复制下来。在 Cloud Shell 中粘贴此验证码。

  4. 如需连接至 vm-internal,请运行以下命令:

gcloud compute ssh vm-internal --zone {{{project_0.default_zone|ZONE}}} --tunnel-through-iap
  1. 如果出现提示,点击授权
  2. 如果系统提示您继续,请输入 Y
  3. 如果系统提示您输入口令,请按 Enter
  4. 提示输入相同口令时,按 Enter

  1. 如需测试 vm-internal 的外部连接,请运行以下命令:
ping -c 2 www.google.com

由于 vm-internal 没有外部 IP 地址,此命令应该无法成功!

  1. 等待 ping 命令完成。
  2. 如需返回您的 Cloud Shell 实例,请运行以下命令:
exit 注意:如果实例没有外部 IP 地址,那么网络中的其他实例只能通过托管式 VPN 网关或 Cloud IAP 隧道访问它们。Cloud IAP 无需堡垒主机,即可通过 SSH 和 RDP 实现对虚拟机的情境感知访问权限。如需了解更多相关信息,请参阅博文 Cloud IAP 无需堡垒主机,即可通过 SSH 和 RDP 实现对虚拟机的情境感知访问权限

任务 2. 启用专用 Google 访问通道

没有外部 IP 地址的虚拟机实例可通过专用 Google 访问通道来访问 Google API 和服务的外部 IP 地址。默认情况下,VPC 网络的专用 Google 访问通道处于停用状态。

创建 Cloud Storage 存储桶

创建 Cloud Storage 存储桶,以测试对 Google API 和服务的访问权限。

  1. 在 Google Cloud 控制台的导航菜单 (“导航菜单”图标) 中,依次点击 Cloud Storage > 存储桶

  2. 点击创建

  3. 指定以下信息,其他设置则保留默认值:

    属性 值(按照说明输入值或选择选项)
    名称 输入全局唯一的名称
    位置类型 多区域
  4. 点击创建。如果系统提示您启用禁止公开访问,请确保已选中相应选项并点击确认。请记下存储桶的名称。

  5. 将您的存储桶名称存储在环境变量中:

export MY_BUCKET=[在此处输入您的存储桶名称]
  1. 使用 echo 进行验证:
echo $MY_BUCKET

将图片文件复制到您的存储桶中

将公共 Cloud Storage 存储桶中的一张图片复制到您自己的存储桶中。

  1. 在 Cloud Shell 中,运行以下命令:
gcloud storage cp gs://cloud-training/gcpnet/private/access.svg gs://$MY_BUCKET
  1. 在 Cloud 控制台中,点击您的存储桶名称并确认图片已复制到存储桶中。

您可以在 Cloud 控制台中点击该图片的名称,查看专用 Google 访问通道的实现方式示例。

从您的虚拟机实例访问图片

  1. 在 Cloud Shell 中,运行以下命令尝试复制您存储桶中的图片:
gcloud storage cp gs://$MY_BUCKET/*.svg .

由于 Cloud Shell 有外部 IP 地址,此命令应该能成功!

  1. 如需连接至 vm-internal,请运行以下命令:
gcloud compute ssh vm-internal --zone {{{project_0.default_zone|ZONE}}} --tunnel-through-iap
  1. 如果出现提示,输入 Y 继续。

  2. 将您的存储桶名称存储在环境变量中:

export MY_BUCKET=[在此处输入您的存储桶名称]
  1. 使用 echo 进行验证:
echo $MY_BUCKET
  1. 运行以下命令尝试将图片复制到 vm-internal
gcloud storage cp gs://$MY_BUCKET/*.svg .

此命令应该无法成功:由于专用 Google 访问通道处于停用状态(默认情况下),vm-internal 只能在 VPC 网络内发送流量。

  1. 请按 Ctrl+Z 停止请求。

启用专用 Google 访问通道

专用 Google 访问通道将在子网级别启用。启用后,相应子网中仅具有专用 IP 地址的实例可以通过默认路由 (0.0.0.0/0)(下一个跃点指向默认互联网网关),向 Google API 和服务发送流量。

  1. 在 Cloud 控制台的导航菜单 (“导航菜单”图标) 中,依次点击 VPC 网络 > VPC 网络
  2. 点击 privatenet 以开启网络。
  3. 点击子网,然后点击 privatenet-us
  4. 点击修改
  5. 对于专用 Google 访问通道,选择开启
  6. 点击保存

点击检查我的进度,验证已完成以下目标: 创建 Cloud Storage 存储桶,并启用专用 Google 访问通道

注意:只需在子网中选择开启,即可启用专用 Google 访问通道!
  1. Cloud Shell 中针对 vm-internal 运行以下命令,以尝试将图片复制到 vm-internal
gcloud storage cp gs://$MY_BUCKET/*.svg .

由于 vm-internal 的子网已启用专用 Google 访问通道,此命令应当有效!

  1. 如需返回您的 Cloud Shell 实例,请运行以下命令:
exit
  1. 如果需要,请再次输入 exit 以返回到 Cloud Shell 实例。
exit 注意:如需查看可与专用 Google 访问通道搭配使用且符合条件的 API 和服务,请参阅服务的专用访问选项指南,里面列有受支持的服务。

任务 3. 配置 Cloud NAT 网关

虽然 vm-internal 现在无需外部 IP 地址,即可访问特定的 Google API 和服务,但该实例无法访问互联网以进行更新和修补。您可以配置 Cloud NAT 网关,以便 vm-internal 能够访问互联网。

尝试更新虚拟机实例

  1. Cloud Shell 中,若要尝试重新同步软件包索引,请运行以下命令:
sudo apt-get update

输出应类似于以下内容(输出示例):

... Reading package lists... Done

由于 Cloud Shell 有外部 IP 地址,此命令应该能成功!

  1. 如需连接至 vm-internal,请运行以下命令:
gcloud compute ssh vm-internal --zone {{{project_0.default_zone|ZONE}}} --tunnel-through-iap
  1. 如果出现提示,输入 Y 继续。
  2. 若要尝试重新同步 vm-internal 的软件包索引,请运行以下命令:
sudo apt-get update

由于 vm-internal 只能访问 Google API 和服务,此命令应当仅对 Google Cloud 软件包有效!

  1. 请按 Ctrl+Z 以停止请求。

配置 Cloud NAT 网关

Cloud NAT 是一种区域级资源。您可以将其配置为允许来自一个区域中所有子网的所有范围的流量、仅允许来自该区域中特定子网的流量,或者仅允许来自于特定主要和次要 CIDR 范围的流量。

  1. 在 Google Cloud 控制台标题栏的搜索字段中输入网络服务,然后点击产品和页面部分的网络服务

  2. 网络服务页面上,点击“网络服务”旁边的固定

  3. 点击 Cloud NAT

  4. 点击开始即可配置 NAT 网关。

  5. 指定下列内容:

    属性 值(按照说明输入值或选择选项)
    网关名称 nat-config
    网络 privatenet
    区域
  6. 对于 Cloud Router,选择创建新路由器

  7. 对于名称,输入 nat-router

  8. 点击创建

注意:在 NAT 映射部分,您可以选择映射到 NAT 网关的子网。您也可以手动分配执行 NAT 时应使用的静态 IP 地址。请勿在本实验中更改 NAT 映射配置。
  1. 点击创建
  2. 等待网关状态变更为正在运行

点击检查我的进度,验证已完成以下目标: 配置 Cloud NAT 网关

验证 Cloud NAT 网关

NAT 配置最多可能需要 3 分钟才能传播到虚拟机,因此请至少等一分钟再尝试访问互联网。

  1. vm-internalCloud Shell 中,若要尝试重新同步 vm-internal 的软件包索引,请运行以下命令:
sudo apt-get update

输出应类似于以下内容(输出示例):

... Reading package lists... Done

由于 vm-internal 正在使用 NAT 网关,此命令应当有效!

  1. 如需返回您的 Cloud Shell 实例,请运行以下命令:
exit 注意:Cloud NAT 网关可实现出站 NAT,但无法实现入站 NAT。换句话说,VPC 网络外部的主机只能响应由您的实例发起的连接;它们自身无法通过 NAT 发起与您的实例的新连接。

任务 4. 使用 Cloud NAT 日志记录功能配置并查看日志

Cloud NAT 日志记录功能可让您记录 NAT 连接和错误。启用 Cloud NAT 日志记录功能后,系统可针对以下情景各生成一个日志条目:

  • 创建使用 NAT 的网络连接时。
  • 数据包因没有可用于 NAT 的端口而被丢弃时。

您可以选择同时记录这两种事件,也可以只记录其中一种。创建的日志会发送至 Cloud Logging。

启用日志记录功能

如果启用日志记录功能,系统会默认将所有收集的日志发送到 Cloud Logging。您可以过滤这些日志,以便系统只发送特定日志。

您还可以在创建 NAT 网关时,或者在创建完 NAT 网关后对其进行修改时,指定这些值。以下内容介绍了如何为现有 NAT 网关启用日志记录功能。

  1. 在 Google Cloud 控制台的导航菜单 (“导航菜单”图标) 中,依次点击网络服务 > Cloud NAT

  2. 点击 nat-config 网关,然后点击 修改

  3. 点击高级配置下拉菜单以打开该部分。

  4. 对于 Logging,选择转换和错误,然后点击保存

Cloud Logging 中的 NAT 日志记录

既然已经为 nat-config 网关设置了 Cloud NAT 日志记录功能,我们来看看应该在哪里查看相关日志。

  1. 点击 nat-config 以显示其详细信息。然后点击在 Logs Explorer 中查看

  2. 这将在新标签页中打开 Logs Explorer

此时您还看不到任何日志,因为我们刚刚才为网关启用了此功能。

注意:请让此标签页保持打开状态,然后回到其他的 Google Cloud 控制台标签页。

生成日志

谨此提醒,系统会针对下述系列事件生成 Cloud NAT 日志:

  • 创建使用 NAT 的网络连接时。
  • 数据包因没有可用于 NAT 的端口而被丢弃时。

让我们再次将主机连接到内部虚拟机,看看有无日志生成。

  1. vm-internalCloud Shell 中,若要尝试重新同步 vm-internal 的软件包索引,请运行以下命令:
gcloud compute ssh vm-internal --zone {{{project_0.default_zone|ZONE}}} --tunnel-through-iap
  1. 如果出现提示,输入 Y 继续。
  2. 运行以下命令,尝试重新同步 vm-internal 的软件包索引:
sudo apt-get update

输出应类似于以下内容(输出示例):

... Reading package lists... Done
  1. 如需返回您的 Cloud Shell 实例,请运行以下命令:
exit

我们来看看开启此连接会不会导致系统生成新的日志。

查看日志

  • 返回“Logs Explorer”标签页,然后在导航菜单中点击 Logs Explorer

在连接到内部虚拟机后,您应该会看到系统生成了两条新日志。

注意:您可能需要等待几分钟时间。如果仍无法看到日志,请重复生成日志部分的第 1 步至第 4 步,然后刷新日志记录页面。

从日志中可以看到我们所连接的 VPC 网络的详细信息以及所使用的连接方式。您也可以随意展开不同的标签,并查看各种详细信息。

任务 5. 回顾

您创建了没有外部 IP 地址的实例 vm-internal,并使用 IAP 隧道安全地连接至该实例。然后,您启用了专用 Google 访问通道,配置了 NAT 网关,并确认 vm-internal 能够访问 Google API 和服务以及其他公共 IP 地址。

没有外部 IP 地址的虚拟机实例与外部网络是隔离开来的。通过使用 Cloud NAT,这些实例可以访问互联网,以进行更新和修补,在某些情况下,还可以通过互联网进行引导。作为一项托管式服务,Cloud NAT 无需用户管理和干预即可实现高可用性。

当您连接到虚拟机实例时,IAP 将使用您的现有项目角色和权限。默认情况下,实例所有者是唯一具有 IAP Secured Tunnel User 角色的用户。

如需了解如何允许其他用户使用 IAP 隧道访问您的虚拟机,请参阅 Cloud 架构中心的授予其他用户访问权限指南

结束实验

完成实验后,请点击结束实验。Google Cloud Skills Boost 会移除您使用过的资源并为您清理帐号。

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

星级数的含义如下:

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

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

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

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

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

请使用无痕模式或无痕式浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。