公共 IP 地址服务
公共(外部)IP 地址网络服务允许您从互联网连接到在您的私有云中运行的工作负载虚拟机 (VM)、管理设备或负载均衡器。例如,如果您在工作负载虚拟机上运行网络服务器,则可以通过互联网使用公共 IP 地址处理网络流量。默认情况下,公共 IP 网络服务处于停用状态。
为资源分配公共 IP 地址还具有以下优势:
- 分布式拒绝服务(DDoS)攻击防护。系统会自动为公共 IP 地址启用此保护。
- 始终开启流量监控,并实时缓解常见的网络等级攻击。
- 在整个网络范围内保护和缓解攻击。该网络可用于跨区域分配和缓解攻击流量。
行为
一个公共 IP 地址只能分配给一个专用 IP 地址,并且该公共 IP 地址将专用于专用 IP 地址,除非您取消分配该地址。与公共 IP 地址关联的资源始终使用公共 IP 地址进行互联网访问。您最多可以为连接到 VMware Engine 的主要 VPC 网络预留 100 个公共 IP 地址。
默认情况下,来自公共 IP 地址的传入流量会被拒绝,并且仅允许出站互联网访问。要允许入站流量,请为特定端口的公共 IP 地址创建防火墙规则。
gcloud 和 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 Output: 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 上的代码示例。
在一个区域中启用公共 IP 网络服务
您必须先在区域中启用公共 IP 网络服务,然后才能为工作负载虚拟机分配公共 IP 地址:
控制台
- 访问 VMware Engine 门户。
- 转到网络 > 区域设置。
- 在与关注区域对应的行中,选择修改。 如果摘要表格中未列出该区域,请点击添加区域以添加该区域。
- 将公共 IP 服务切换为已启用。
- 如需启用公共 IP 服务,您还必须启用互联网访问网络服务。
- 您可以启用互联网访问服务,并停用公共 IP 服务。如果这样做,则无法使用点到站点 VPN 和公共 IP 分配。
- 在边缘服务 CIDR 字段中,输入在访问 VMware Engine 公共 IP 网关时要使用的地址范围(/26 地址范围)。
- 点击提交。
操作完成后,通常在几分钟后,网络服务的状态会变为已启用。
gcloud
使用 gcloud
工具运行以下命令以创建网络政策:
gcloud vmware network-policies create NETWORK_POLICY_NAME \ --vmware-engine-network NETWORK_NAME --edge-services-cidr IP_RANGE \ --location REGION --external-ip-access --internet-access
请替换以下内容:
NETWORK_POLICY_NAME
:此网络政策的名称NETWORK_NAME
:此请求的网络,必须采用REGION-default
格式IP_RANGE
:用于互联网访问网关和外部 IP 访问网关的 CIDR 范围(采用 CIDR 表示法)。必须提供带有“/26”前缀的 RFC 1918 CIDR 地址块REGION
:网络的区域
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/REGION/networkPolicies?networkPolicyId=NETWORK_POLICY_NAME -d '{ "vmwareEngineNetwork":"projects/PROJECT_ID/locations/REGION/vmwareEngineNetworks/NETWORK_NAME", "edgeServiceCidr":IP_RANGE, "internetAccess: { "enabled": true }, "externalIp": { "enabled": true } }
请替换以下内容:
NETWORK_POLICY_NAME
:此网络政策的名称。PROJECT_ID
:此请求的项目 IDREGION
:网络的区域IP_RANGE
:用于互联网访问网关和外部 IP 访问网关的 CIDR 范围(采用 CIDR 表示法)。必须提供带有“/26”前缀的 RFC 1918 CIDR 地址块。NETWORK_NAME
:应用此网络政策的网络,必须采用>REGION-default
格式
Python
使用以下函数在将 external_ip 和 internet_access 设置为 True
的情况下创建新的网络政策:
分配公共 IP 地址
如需为工作负载虚拟机分配公共 IP 地址,请执行以下操作:
- 访问 Google Cloud VMware Engine 门户
- 转到网络 > 公共 IP (Public IPs)。
- 点击分配。
- 在名称字段中,输入一个名称,以便标识公共 IP 地址条目。
- 选择包含工作负载虚拟机的私有云。
- 选择您要在其中提供已分配的公共 IP 的位置。
- 在关联的本地地址 (Attached local address) 字段中,输入要为其分配此公共 IP 地址的虚拟机的本地 IP 地址。
- 点击提交,开始分配公共 IP 地址的任务。
您可以在 活动 > 任务页面上查看任务的状态。分配完成后,新条目会显示在公共 IP (Public IPs) 页面上,且处于操作状态。