为工作负载虚拟机配置互联网访问权限
您可以针对每个区域为 Google Cloud VMware Engine 中的 VMware 工作负载配置互联网访问网络服务。您可以使用 Google Cloud 的互联网边缘或通过本地连接定向来自 VMware 工作负载虚拟机的互联网绑定流量。 Google Cloud
VMware Engine 提供以下方法来为工作负载虚拟机配置互联网访问权限:
- VMware Engine 互联网访问服务:使用 Google Cloud的互联网边缘为工作负载虚拟机启用直接互联网访问权限。请参阅配置互联网访问服务。
- 本地连接:通过本地连接路由来自工作负载虚拟机的互联网绑定流量。请参阅使用本地连接来进行工作负载互联网访问。
- 使用方 VPC 网络:通过使用方 VPC 网络路由来自工作负载虚拟机的互联网绑定流量。请参阅在您的项目中使用 VPC 来进行工作负载互联网访问。
可以访问互联网的工作负载虚拟机还可以使用专用 Google 访问通道访问 Google Cloud 服务。 使用专用 Google 访问通道访问 Google Cloud 服务的操作会保留在 Google Cloud 网络中,且不会退出互联网。 Google Cloud Google Cloud
互联网访问网络服务支持:
- 每个区域最多 100 个公共 IP 地址
- 每个网络政策最多 100 条外部访问规则
- 每个区域的吞吐量最高 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 和移动优化网络 (MON) 迁移虚拟机,则需要特定的路由配置来确保互联网连接。
如果您已为第 2 层扩展 (L2E) 片段启用 MON,VMware Engine 不会自动向其互联网服务通告已迁移虚拟机的路由。为确保这些虚拟机可以访问互联网,您必须在第 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
在您的项目中使用 VPC 来进行工作负载互联网访问
您可以选择通过项目中的 VPC 来定向来自 VMware Engine 中工作负载虚拟机的互联网绑定流量。此选项仅适用于与您的 VPC 网络对等互连的标准 VMware Engine 网络。
如需通过项目中的 VPC 从工作负载虚拟机访问互联网,您必须完成以下步骤:
- 在 VPC 中配置互联网访问权限。
- 如果您使用 Cloud NAT :确保 Cloud NAT 配置为向 VPC 网络中的资源提供互联网访问权限。
由于 Cloud NAT 直接提供互联网连接,因此不需要
0.0.0.0/0的特定路由。 - 如果您不使用 Cloud NAT:确保您的
VPC 中有一条目标为
0.0.0.0/0的路由,该路由将流量定向到提供互联网访问权限的 下一跃点,例如基于实例的 防火墙或代理。此外,您必须配置 VPC 网络对等互连以交换自定义路由。更新对等互连连接以从 VPC 导出自定义路由,并向其导入自定义路由。
- 如果您使用 Cloud NAT :确保 Cloud NAT 配置为向 VPC 网络中的资源提供互联网访问权限。
由于 Cloud NAT 直接提供互联网连接,因此不需要
- 按照在区域中停用互联网访问服务中的步骤,停用 VMware Engine 网络的互联网访问和公共 IP 服务。
完成这些步骤后,来自工作负载虚拟机的互联网绑定流量将通过对等互连连接路由到您的 VPC 网络,并使用在那里配置的互联网访问解决方案。
如需了解详情,请参阅使用 VPC 为工作负载虚拟机配置互联网访问权限。
使用本地连接来进行工作负载互联网访问
您可以选择通过本地连接来定向来自 VMware Engine 中工作负载虚拟机的互联网绑定流量。VMware Engine 如何定向流量取决于以下状态:
- 来自本地的默认路由 (
0.0.0.0/0) 通告 - VMware Engine 公共 IP 服务
- VMware Engine 互联网访问服务
- 针对您的 VPC 网络和 VMware Engine 之间的 VPC 对等互连连接的 VPC Service Controls(仅限旧版 VMware Engine 网络)
启用“通过本地连接路由互联网流量”功能
如需通过本地连接从工作负载虚拟机访问互联网,您必须完成两个步骤:
- 通过本地连接(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
如果使用旧版 Google Cloud VMware Engine 网络,您必须启用 VPC Service Controls,才能通过本地连接或项目中的 VPC 路由旧版 VEN 互联网访问。此要求仅适用于旧版 Google Cloud VMware Engine 网络,而不适用于标准 VEN。
启用 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