许多 Google Cloud 资源可以具有内部 IP 地址和外部 IP 地址。例如,您可以为 Compute Engine 实例分配内部 IP 地址和外部 IP 地址。实例使用这些地址与其他 Google Cloud 资源和外部系统进行通信。
实例使用的每个网络接口都必须具有一个主要内部 IPv4 地址。每个网络接口还可以有一个或多个别名 IPv4 范围和一个外部 IPv4 地址。如果实例连接到支持 IPv6 的子网,则每个网络接口还可以分配内部或外部 IPv6 地址。
实例可以使用其内部 IPv4 地址与同一虚拟私有云 (VPC) 网络中的实例通信。如果实例已配置 IPv6,您还可以使用实例的内部或外部 IPv6 地址。最佳实践是使用内部 IPv6 地址进行内部通信。
如需与互联网进行通信,您可以使用实例上配置的外部 IPv4 地址或外部 IPv6 地址。如果实例上未配置外部地址,则 Cloud NAT 可用于 IPv4 流量。
同样,您必须使用实例的外部 IPv4 或外部 IPv6 连接到同一 VPC 网络外部的实例。但是,如果网络以某种方式连接(例如使用 VPC 网络对等互连),则您可以使用实例的内部 IP 地址。
如需了解如何识别实例的内部和外部 IP 地址,请参阅查看实例的网络配置。
内部 IP 地址
系统会为实例的网络接口分配其连接到子网中的 IP 地址。每个网络接口都有一个主要内部 IPv4 地址,该地址从子网的主要 IPv4 范围分配。如果子网具有内部 IPv6 范围,除了主要内部 IPv4 地址之外,您还可以选择使用主要内部 IPv6 地址配置网络接口。
内部 IPv4 地址可通过以下方式分配:
- Compute Engine 会自动从主要 IPv4 子网范围分配一个 IPv4 地址。
- 您可以在创建计算实例时分配特定的内部 IPv4 地址。
您可以通过以下方式将内部 IPv6 地址分配给连接到具有内部 IPv6 范围的子网的实例:
- 当您在实例的 vNIC 上配置内部 IPv6 地址时,Compute Engine 会从子网的内部 IPv6 地址范围中分配单个
/96
IPv6 地址范围。 - 您可以在创建实例时分配特定的内部 IPv6 地址。
您还可以从子网的 IPv4 或 IPv6 范围中预留静态内部地址,并将其分配给实例。
Compute 实例还可以具有别名 IP 地址和范围。如果您在实例上运行多个服务,则可以为每项服务分配自己的唯一 IP 地址。
内部 DNS 名称
Google Cloud 会自动将实例的完全限定 DNS 名称 (FQDN) 解析为实例的内部 IP 地址。内部 DNS 名称只能在实例的 VPC 网络内部使用。
如需详细了解完全限定域名 (FQDN),请参阅内部 DNS。
外部 IP 地址
如果您需要与互联网或其他 VPC 网络中的资源进行通信,则可以向实例分配外部 IPv4 或 IPv6 地址。如果防火墙规则或分层防火墙政策允许连接,VPC 网络外部的来源就可以使用特定资源的外部 IP 地址访问该资源。只有具有外部 IP 地址的资源才能直接与 VPC 网络之外的资源通信。与使用外部 IP 地址的资源进行通信可能会产生额外的结算费用。
所有计算实例均可使用外部 IPv4 地址。当您在实例的 vNIC 上配置外部 IPv4 地址时,系统会从 Google 的外部 IPv4 地址范围中分配一个 IPv4 地址。如需了解详情,请参阅在何处可以找到 Compute Engine IP 地址范围。
外部 IPv6 地址可供连接到具有外部 IPv6 范围的子网的计算实例使用。当您在实例的网络接口上配置外部 IPv6 地址时,系统会从子网的外部 IPv6 范围中分配一个
/96
范围的 IPv6 地址。您还可以从子网的 IPv6 范围中预留静态外部 IPv6 地址,并将其分配给计算实例。
使用外部 IP 地址的替代方案
与外部(公共)IP 地址相比,内部(专用)IP 地址具有诸多优势,包括:
- 减少攻击面。从计算实例中移除外部 IP 地址后,攻击者将更难以访问这些实例并利用潜在漏洞。
- 提高灵活性。与静态外部 IP 地址相比,引入一个抽象层(例如负载均衡器或 NAT 服务)可以实现更可靠、灵活的服务交付。
下表总结了计算实例在没有外部 IP 地址时可以通过哪些方式访问互联网或被互联网访问。
访问方法 | 解决方案 | 最佳使用时机 |
---|---|---|
互动 | 为 Identity-Aware Proxy (IAP) 配置 TCP 转发 | 您想使用 SSH 和 RDP 等管理服务连接到后端实例,但请求必须先通过身份验证和授权检查,然后才能到达目标资源。 |
提取 | Cloud NAT 网关 | 您希望没有外部 IP 地址的 Compute Engine 实例能够连接到互联网(出站),但 VPC 网络之外的主机无法自行发起与 Compute Engine 实例的连接(入站)。您可以将此方法用于操作系统更新或外部 API。 |
安全 Web 代理 | 您需要代表 Compute Engine 实例创建新的 TCP 连接,以便将这些实例与互联网隔离,同时遵守所管理的安全政策。 | |
提供服务 | 创建外部负载均衡器 | 您希望客户端能够在 Google Cloud 的任意位置连接到不使用外部 IP 地址的资源,同时保护计算实例免受 DDoS 攻击和直接攻击。 |
区域和全球 IP 地址
当您列出或说明项目中的 IP 地址时, Google Cloud会将地址标记为全球或区域地址,这表示特定地址的使用方式。当您将地址与区域级资源(例如实例)相关联时, Google Cloud 会将地址标记为区域性地址。区域是指 Google Cloud
区域,例如 us-east4
或 europe-west2
。
全球 IP 地址在以下配置中使用:
- 全球内部 IP 地址:通过端点访问 Google API 或专用服务访问通道
- 全球外部 IP 地址:使用高级层级网络的外部代理网络负载平衡器和外部应用负载平衡器
如需了解如何创建全球 IP 地址,请参阅预留新的静态外部 IP 地址。
Compute Engine 网络服务等级协议 (SLA) 概览
Compute Engine 提供服务等级协议 (SLA),其中定义了网络服务层级的每月正常运行时间百分比服务等级目标 (SLO)。
创建 Compute Engine 实例时,您默认会获得一个内部 IP 地址。此外,您还可以使用高级层级(默认)或标准层级网络配置外部 IP 地址。您选择的网络服务层级取决于您的费用和服务质量要求。每个网络服务层级都有不同的服务等级目标 (SLO)。
创建计算实例时,您可以配置连接到实例的多个 NIC,每个 NIC 可以具有不同的网络配置,如下图所示:
图 1. 一个具有三个 NIC 的实例,每个 NIC 都使用不同的网络服务层级处理不同的网络流量。
在上图中,名为 VM appliance 的示例实例有三个 NIC,其配置如下:
nic0
配置了内部 IP 子网。nic1
使用外部 IP 子网进行配置,并使用标准网络层级。nic2
使用外部 IP 子网进行配置,并使用高级网络层级。
在此示例中,虚拟机实例不是内存优化型虚拟机。根据哪个 NIC 出现连接中断,适用不同的 SLO。以下列表介绍了此示例中不同 NIC 的服务等级协议 (SLA)。
nic0
:具有内部 IP 地址的单实例虚拟机。每月正常运行时间百分比为 99.9%。nic1
:具有外部 IP 地址且使用“标准”网络层级的单实例虚拟机。此虚拟机不受任何服务等级协议 (SLA) 的保护。只有跨可用区部署的多个实例才能通过标准网络层级获得 99.9% 的保护。nic2
:具有外部 IP 地址且使用高级网络层级的单实例虚拟机。每月正常运行时间百分比为 99.9%。对于分布在多个可用区中的多个实例,使用高级网络层级时,每月正常运行时间百分比为 99.99%。
后续步骤
- 查看实例的网络配置。
- 保留新的静态外部 IP 地址
- 为新实例分配静态外部 IP 地址。
- 在创建实例时选择内部 IP 地址。
- 升级临时外部 IP 地址。
- 了解如何使用内部 DNS 名称通过内部 VPC 网络对实例进行寻址。
- 详细了解 IP 地址。
- 详细了解 IPv6。
- 详细了解 IP 地址和负载均衡。
- 查看外部 IP 地址价格。