为工作负载虚拟机配置互联网访问权限
您可以针对每个区域为 Google Cloud VMware Engine 中的 VMware 工作负载配置互联网访问网络服务。您可以使用 Google Cloud的互联网边缘或通过本地连接定向来自工作负载虚拟机的互联网绑定流量。
可以访问互联网的工作负载虚拟机还可以使用专用 Google 访问通道访问 Google Cloud服务。对使用专用 Google 访问通道的 Google Cloud 服务的访问权限会保留在 Google Cloud 网络中,而且不会退出互联网。
互联网访问网络服务支持:
- 每个区域最多 100 个公共 IP 地址
- 每个防火墙表最多 300 条防火墙规则
- 每个区域最多 128000 个并发连接,吞吐量最高 2 Gbps
- TCP、UDP 和 ICMP 协议
互联网访问网络服务不支持应用层网关 (ALG) 功能。
准备工作
如需更改您的私有云的互联网访问设置,您必须对 VMware Engine 拥有管理员访问权限。
如需启用互联网访问权限,您需要一个边缘服务 CIDR 地址范围。当您启用互联网访问权限或公共 IP 网络服务时,会在服务租户上下文中部署网关。
使用边缘服务 CIDR 地址范围来访问 VMware Engine 互联网和公共 IP 网关。地址范围必须满足以下要求:
- 符合 RFC 1918 作为专用地址范围的要求。
- 不与任何其他 VMware Engine 地址范围(例如,用于管理设备或 NSX 段的地址范围)重叠。
- 不与向 VMware Engine 通告的任何地址范围(例如,用于虚拟私有云 (VPC) 网络子网或本地网络的地址范围)重叠。
- 指定一个具有 26 个子网掩码位 (/26) 的 IP 地址范围。
Google Cloud CLI 和 API 要求
如需使用 gcloud 命令行工具或 API 管理 VMware Engine 资源,我们建议您按下文所述配置工具。
gcloud
设置默认项目 ID:
gcloud config set project PROJECT_ID
设置默认地区和区域:
gcloud config set compute/region REGION
gcloud config set compute/zone ZONE
如需详细了解 gcloud vmware 工具,请参阅 Cloud SDK 参考文档。
API
本文档集中的 API 示例使用 cURL 命令行工具来查询 API。cURL 请求中需要有效的访问令牌。获取有效访问令牌的方法有很多种:以下步骤使用 gcloud 工具生成访问令牌:
登录 Google Cloud:
gcloud auth login
生成访问令牌并导出到 TOKEN:
export TOKEN=`gcloud auth print-access-token`
验证 TOKEN 设置正确:
echo $TOKEN
现在,在对 API 的请求中使用授权令牌。例如:
curl -X GET -H "Authorization: Bearer \"$TOKEN\"" -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations
Python
本文档中的 Python 代码示例使用 VMware Engine 库与 API 进行通信。为了能够使用此方法,需要安装该库并配置应用默认凭据。
下载并安装 Python 库:
pip install google-cloud-vmwareengine
通过在 Shell 中执行这些命令来配置 ADC 信息:
gcloud auth application-default login
或者,使用服务账号密钥文件:
export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
如需详细了解该库,请访问参考页面或查看 GitHub 上的代码示例。
配置互联网访问服务
您可以通过创建或更新网络政策来允许工作负载虚拟机拥有互联网访问权限。
默认情况下,互联网访问网络服务处于停用状态。
在区域中启用互联网访问服务
控制台
如需在区域中启用互联网访问服务,请执行以下操作:
在 Google Cloud 控制台中,前往网络政策页面。
点击选择项目,然后选择包含您要为其启用互联网访问服务的 VMware Engine 网络的组织、文件夹或项目。
点击创建以创建新政策。如果您想修改现有网络政策,请点击行末的更多 图标,然后选择修改。
填写网络政策的详细信息,包括选择政策适用的网络和区域。
将互联网访问权限切换为已启用,并根据需要启用外部 IP 地址服务。
在边缘服务 CIDR 字段中,输入在寻址 VMware Engine 互联网网关时要使用的地址范围(/26 地址范围)。
点击创建。
操作完成后,通常在几分钟后,服务的状态会变为 已启用。
gcloud
使用 gcloud 工具运行以下命令以创建网络政策:
gcloud vmware network-policies create NETWORK_POLICY_NAME \
--vmware-engine-network projects/PROJECT_ID/locations/LOCATIONS/vmwareEngineNetworks/NETWORK_ID \
--edge-services-cidr=IP_RANGE \
--location=LOCATION \
--internet-access替换以下内容:
NETWORK_POLICY_NAME:此网络政策的名称。NETWORK_ID:应用此网络政策的网络IP_RANGE:用于互联网访问网关和外部 IP 访问网关的 CIDR 范围(采用 CIDR 表示法)。必须提供带有“/26”前缀的 RFC 1918 CIDR 地址块。LOCATION:对于旧版网络,为global;对于标准网络,为区域
API
curl -X POST -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/networkPolicies?networkPolicyId=NETWORK_POLICY_NAME
'{
"vmwareEngineNetwork":"projects/PROJECT_ID/locations/LOCATION/vmwareEngineNetworks/NETWORK_ID",
"edgeServiceCidr":IP_RANGE,
"internetAccess: {
"enabled": true
},
"externalIp": {
"enabled": true
}
}"
请替换以下内容:
NETWORK_POLICY_NAME:此网络政策的名称。必须采用REGION-default格式。PROJECT_ID:此请求的项目 IDLOCATION:对于旧版网络,为global;对于标准网络,为区域IP_RANGE:用于互联网访问网关和外部 IP 访问网关的 CIDR 范围(采用 CIDR 表示法)。必须提供带有“/26”前缀的 RFC 1918 CIDR 地址块。NETWORK_ID:相应网络政策所适用的网络
Python
HCX 移动优化型网络 (MON) 指南
为使用 HCX 和 Mobility Optimized Networking (MON) 迁移的虚拟机配置互联网访问权限时,需要进行特定的路由配置才能确保连接。
对于已启用 MON 的第 2 层扩展 (L2E) 网段,迁移的虚拟机不会自动将其路由通告给 VMware Engine 互联网服务。为确保这些虚拟机可以访问互联网,您必须执行以下操作:
- 在 Tier-1 路由器上启用静态路由重新分发到 BGP。
此手动步骤对于通告启用 MON 的网段的路由至关重要,可让这些网段通过 VMware Engine 环境路由互联网流量。如果不进行此配置,这些网段上的虚拟机将无法访问公共互联网。
在区域中停用互联网访问服务
如需停用某个区域的互联网访问服务,请执行以下操作:
控制台
在 Google Cloud 控制台中,前往网络政策页面。
点击选择项目,然后选择包含您要停用互联网访问服务的 VMware Engine 网络的组织、文件夹或项目。
在相关网络政策对应的行中,点击更多图标 。
将互联网访问权限切换为已停用。
- 您必须先停用公共 IP 服务,然后才能停用互联网访问权限。
- 您必须先删除所有已分配的公共 IP 地址和指向站点的 VPN 网关,然后才能停用公共 IP 服务。
点击保存。
操作完成后,通常在几分钟后,服务的状态会变为 已停用。
gcloud
使用 gcloud 工具运行以下命令以更新网络政策:
gcloud vmware network-policies update NETWORK_POLICY_NAME \ --no-internet-access \ --location LOCATION
请替换以下内容:
NETWORK_POLICY_NAME:此网络政策的名称LOCATION:对于旧版网络,为global;对于标准网络,为区域
API
curl -X PATCH -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/networkPolicies/NETWORK_POLICY_NAME?updateMask=internetAccess.enabled,externalIp.enabled -d "{
"internetAccess: {
"enabled": false
},
"externalIp": {
"enabled": false
}
}"
请替换以下内容:
PROJECT_ID:此请求的项目 IDLOCATION:对于旧版网络,为global;对于标准网络,为区域NETWORK_POLICY_NAME:此网络政策的名称
Python
使用本地连接来进行工作负载互联网访问
您可以选择通过本地连接来定向来自 VMware Engine 中工作负载虚拟机的互联网绑定流量。系统根据以下各项的状态定向流量:
- 来自本地的默认路由 (
0.0.0.0/0) 通告 - VMware Engine 公共 IP 服务
- VMware Engine 互联网访问服务
- 针对您的 VPC 网络和 VMware Engine 之间的 VPC 对等互连连接的 VPC Service Controls
启用“通过本地连接路由互联网流量”功能
如需通过本地连接从工作负载虚拟机访问互联网,您必须完成两个步骤:
- 通过本地连接(Cloud VPN 或 Cloud Interconnect)从本地通告默认路由 (
0.0.0.0/0)。检查 Cloud VPN 网关或 Cloud Router,其中与 VPN 的本地连接终止。 - 停用 VMware Engine 网络的互联网访问和公共 IP 服务。
控制台
在 Google Cloud 控制台中,前往网络政策页面。
点击选择项目,然后选择包含您要为其启用互联网访问服务的 VMware Engine 网络的组织、文件夹或项目。
在相关网络政策对应的行中,点击更多图标 。
将公共 IP 切换为已停用。
将互联网访问权限切换为已停用。
点击保存。
如果使用旧版 VMware Engine 网络:使用
gcloud services vpc-peerings enable-vpc-service-controls命令,在 VPC 网络与 VMware Engine 之间的 VPC 对等互连连接上启用 VPC Service Controls:gcloud services vpc-peerings enable-vpc-service-controls \ --network=VPC_NETWORK \ --service=servicenetworking.googleapis.com
gcloud
使用 gcloud 工具运行以下命令以更新网络政策:
gcloud vmware network-policies update NETWORK_POLICY_NAME \ --no-internet-access \ --no-external-ip-address \ --location LOCATION
请替换以下内容:
NETWORK_POLICY_NAME:此网络政策的名称LOCATION:对于旧版网络,为global;对于标准网络,为区域
如果使用旧版 VMware Engine 网络:使用 gcloud services vpc-peerings enable-vpc-service-controls 命令,在 VPC 网络与 VMware Engine 之间的 VPC 对等互连连接上启用 VPC Service Controls:
gcloud services vpc-peerings enable-vpc-service-controls \ --network=VPC_NETWORK \ --service=servicenetworking.googleapis.com
API
curl -X PATCH -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/networkPolicies/NETWORK_POLICY_NAME?updateMask=internetAccess.enabled,externalIp.enabled
"{
"internetAccess: {
"enabled": false
},
"externalIp: {
"enabled": false
}
}"
如果使用旧版 VMware Engine 网络:使用 gcloud services vpc-peerings enable-vpc-service-controls 命令,在 VPC 网络与 VMware Engine 之间的 VPC 对等互连连接上启用 VPC Service Controls:
gcloud services vpc-peerings enable-vpc-service-controls \ --network=VPC_NETWORK_NAME \ --service=servicenetworking.googleapis.com
Python
将 internet_access 和 external_ip 设置为 False。
如果使用旧版 VMware Engine 网络:使用 gcloud services vpc-peerings enable-vpc-service-controls 命令,在 VPC 网络与 VMware Engine 之间的 VPC 对等互连连接上启用 VPC Service Controls:
gcloud services vpc-peerings enable-vpc-service-controls \ --network=VPC_NETWORK \ --service=servicenetworking.googleapis.com
启用 VPC Service Controls 对于通过本地连接或项目中的 VPC 路由互联网流量至关重要。
启用 VPC Service Controls 后, Google Cloud 会在服务提供方 VPC 网络(在本例中,是与 VMware Engine 对等互连的服务租户项目)中进行以下路由更改:
- 移除 IPv4 默认路由(目的地为
0.0.0.0/0,下一个跃点为默认互联网网关)。 - 开始使用 VPC 对等互连默认路由转发互联网流量。
示例:
如需为当前项目上名为“my-network”的网络对等互连连接启用 VPC Service Controls,请使用 gcloud services vpc-peerings enable-vpc-service-controls 命令:
gcloud services vpc-peerings enable-vpc-service-controls \
--network=my-network \
--service=servicenetworking.googleapis.com停用“通过本地连接路由互联网流量”功能
如需停用“通过本地连接路由来自工作负载虚拟机的互联网流量”功能,请停止通告默认路由 (0.0.0.0/0),并对 VPC 对等互连连接停用 VPC Service Controls。
如果使用旧版 VMware Engine 网络:如需在 VPC 网络与 VMware Engine 之间的 VPC 对等互连连接上停用 VPC Service Controls,请使用以下 gcloud services vpc-peerings disable-vpc-service-controls 命令:
gcloud services vpc-peerings disable-vpc-service-controls \
--network=VPC_NETWORK_NAME \
--service=servicenetworking.googleapis.com后续步骤
- 了解如何为私有云中的虚拟机分配公共 IP 地址。
- 了解防火墙表和防火墙规则如何过滤进出私有云资源的网络流量。