本教程为管理员提供了一种简单的方法,允许其用户在分配的任何专用出口 IP 地址之间更改其出口 IP 地址。您的用户可以通过直接在 Cloudflare One 客户端中切换虚拟网络来选择要使用的出口 IP。
在质量保证 (QA) 和其他类似场景中,更改出口 IP 可能会非常有用。在这些场景中,用户既使用其本地出口位置,又切换到或模拟其他远程位置。
确保您拥有:
- 在您的用户设备上部署了 Cloudflare One 客户端。
- 配置了隧道以连接您的私有网络到 Cloudflare。本教程假设您已:
- 通过仪表板创建了两个隧道。
- 通过其中一个隧道路由了
10.0.0.0/8。 - 通过另一个隧道路由了
192.168.88.0/24。
- 收到多个专用出口 IP 地址。
首先,创建与您的专用出口 IP 对应的虚拟网络。
-
在 Cloudflare 仪表板中,转到 Networking(网络) > Routes(路由)。
Go to Routes ↗ -
在 Virtual networks(虚拟网络) 中,选择 Create virtual network(创建虚拟网络)。
-
为您的虚拟网络命名。我们建议使用与相应专用出口 IP 位置相关的名称。例如,如果您的用户将从美洲出口,您可以将虚拟网络命名为
vnet-AMER。 -
选择 Save(保存)。
-
针对您希望用户在其中进行切换的每个专用出口 IP,重复步骤 2-4。例如,您可以为来自欧洲、中东和非洲的出口创建另一个名为
vnet-EMEA的虚拟网络。
-
创建与您的专用出口 IP 之一相对应的虚拟网络。我们建议使用与相应专用出口 IP 位置相关的名称。例如,如果您的用户将从美洲出口,您可以将虚拟网络命名为
vnet-AMER。
At least one of the following token permissions is required:Required API token permissions
Cloudflare One Networks WriteCloudflare Tunnel Write
Create a virtual networkbash curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/teamnet/virtual_networks" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "comment": "Virtual network to egress from the Americas", "is_default": false, "name": "vnet-AMER" }'有关更多信息,请参阅创建虚拟网络。
-
针对您希望用户在其中进行切换的每个专用出口 IP,重复步骤 1。例如,您可以为来自欧洲、中东和非洲的出口创建另一个名为
vnet-EMEA的虚拟网络。
创建虚拟网络后,在每个虚拟网络上路由您的私有网络 CIDR。这可以确保无论用户使用哪个出口 IP,都能访问您网络上的所有服务。
-
前往 Networking(网络) > Routes(路由)。
Go to Routes ↗ -
选择 Create route(创建路由),然后选择 Tunnel CIDR(隧道 CIDR)。
-
选择路由
10.0.0.0/8的隧道并输入10.0.0.0/8作为网络。 -
在 Virtual network(虚拟网络) 下,选择您的第一个虚拟网络。例如,
vnet-AMER。 -
选择 Create route(创建路由)。
-
要在另一个虚拟网络上路由
10.0.0.0/8,请使用不同的虚拟网络(例如vnet-EMEA)重复步骤 2-5。 -
针对您创建的每个虚拟网络以及每个私有网络隧道路由重复此操作。
-
将您的第一个虚拟网络分配给您的私有网络路由。例如,将
vnet-AMER分配给路由10.0.0.0/8的隧道:
At least one of the following token permissions is required:Required API token permissions
Cloudflare One Networks WriteCloudflare Tunnel Write
Update a tunnel routebash curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/teamnet/routes/$ROUTE_ID" \ --request PATCH \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "network": "10.0.0.0/8", "tunnel_id": "<TUNNEL_UUID>", "virtual_network_id": "<VNET_AMER_UUID>" }'有关更多信息,请参阅更新隧道路由。
-
针对您创建的每个虚拟网络重复此过程。例如:
At least one of the following token permissions is required:Required API token permissions
Cloudflare One Networks WriteCloudflare Tunnel Write
Update a tunnel routebash curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/teamnet/routes/$ROUTE_ID" \ --request PATCH \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "network": "10.0.0.0/8", "tunnel_id": "<TUNNEL_UUID>", "virtual_network_id": "<VNET_EMEA_UUID>" }' -
针对每个私有网络隧道路由重复步骤 1-2。
连接到您的私有网络的每个隧道都应分配有您的每个虚拟网络。例如,如果您拥有路由 10.0.0.0/8 和 192.168.88.0/24 的隧道,则两个隧道都应分配有 vnet-AMER 和 vnet-EMEA 虚拟网络。
| 隧道 | CIDR | 虚拟网络 |
|---|---|---|
| Tunnel 1 | 10.0.0.0/8 |
vnet-AMER |
10.0.0.0/8 |
vnet-EMEA |
|
| Tunnel 2 | 192.168.88.0/24 |
vnet-AMER |
192.168.88.0/24 |
vnet-EMEA |
接下来,使用 Gateway 出口策略将您的专用出口 IP 分配给每个虚拟网络。
-
在 Cloudflare 仪表板 ↗中,转到 Zero Trust > Traffic policies(流量策略) > Egress policies(出口策略)。
-
选择 Add a policy(添加策略)。
-
为您的策略命名。我们建议包含流量出口所在的国家或地区。
-
使用 Virtual Network(虚拟网络) 选择器添加虚拟网络。例如:
选择器 运算符 值 Virtual Network(虚拟网络) is vnet-AMER -
在 Select an egress IP(选择出口 IP) 中,选择 Use dedicated Cloudflare egress IPs(使用专用 Cloudflare 出口 IP)。选择您希望流量出口所用的专用 IPv4 和 IPv6 地址。
-
选择 Create policy(创建策略)。
-
重复步骤 1-6,为您创建的每个虚拟网络创建一个单独的出口策略。
-
添加一条匹配相应虚拟网络的 Gateway 出口策略。例如:
Create a Zero Trust Gateway rulebash curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "action": "egress", "description": "Egress via North America by connecting to vnet-AMER", "enabled": true, "filters": [ "egress" ], "name": "Egress AMER vnet", "precedence": 0, "traffic": "net.vnet_id == <VNET_AMER_UUID>", "rule_settings": { "egress": { "ipv4": "<DEDICATED_IPV4_ADDRESS>", "ipv4_fallback": "<SECONDARY_DEDICATED_IPV6_ADDRESS>", "ipv6": "<DEDICATED_IPV6_ADDRESS>" } } }'有关更多信息,请参阅创建 Zero Trust Gateway 规则。
-
重复步骤 1,为您创建的每个虚拟网络创建一个出口策略。
每个策略你创建都应对应于不同的主专用出口 IP。
Windows, macOS, and Linux
-
在用户的设备上,在 Cloudflare One 客户端中登录您的 Zero Trust 组织。
-
在终端中,运行以下命令以检查默认出口 IP 地址。
curl ifconfig.me -4该命令应输出您组织的默认出口 IP。
-
在客户端 GUI 中,使用 VNET 下拉菜单切换到您创建的虚拟网络。
Version 2026.1 and earlier
在 Cloudflare One 客户端中,选择齿轮图标 > Virtual Networks(虚拟网络)。
-
再次运行
curl ifconfig.me -4以检查出口 IP 地址。该命令应输出您的出口策略中指定的 IP 地址。
iOS and Android
- 在用户的设备上,在 Cloudflare One Agent 应用程序中登录您的 Zero Trust 组织。
- 在浏览器中,转到 ifconfig.me ↗。您组织的默认出口 IP 应显示在 IP Address(IP 地址) 中。
- 在 Cloudflare One Agent 中,转到 Advanced(高级) > Connection options(连接选项) > Virtual networks(虚拟网络)。选择您创建的虚拟网络。
- 通过重新加载步骤 1 中的浏览器页面来检查出口 IP 地址。您的出口策略中指定的 IP 地址应显示在 IP Address(IP 地址) 中。
当您的用户连接到虚拟网络时,他们的流量将通过指定的专用出口 IP 进行路由。您可以重复这些步骤以测试每个虚拟网络是否正在从正确的 IP 出口。