跳转到内容
搜索文档

使用虚拟网络更改用户出口 IP

最后更新 查看 MarkdownAgent 设置

本教程为管理员提供了一种简单的方法,允许其用户在分配的任何专用出口 IP 地址之间更改其出口 IP 地址。您的用户可以通过直接在 Cloudflare One 客户端中切换虚拟网络来选择要使用的出口 IP。

在质量保证 (QA) 和其他类似场景中,更改出口 IP 可能会非常有用。在这些场景中,用户既使用其本地出口位置,又切换到或模拟其他远程位置。

准备工作

确保您拥有:

为每个出口路由创建虚拟网络

首先,创建与您的专用出口 IP 对应的虚拟网络

  1. 在 Cloudflare 仪表板中,转到 Networking(网络) > Routes(路由)

    Go to Routes ↗
  2. Virtual networks(虚拟网络) 中,选择 Create virtual network(创建虚拟网络)

  3. 为您的虚拟网络命名。我们建议使用与相应专用出口 IP 位置相关的名称。例如,如果您的用户将从美洲出口,您可以将虚拟网络命名为 vnet-AMER

  4. 选择 Save(保存)

  5. 针对您希望用户在其中进行切换的每个专用出口 IP,重复步骤 2-4。例如,您可以为来自欧洲、中东和非洲的出口创建另一个名为 vnet-EMEA 的虚拟网络。

  1. 创建与您的专用出口 IP 之一相对应的虚拟网络。我们建议使用与相应专用出口 IP 位置相关的名称。例如,如果您的用户将从美洲出口,您可以将虚拟网络命名为 vnet-AMER

    Required API token permissions

    At least one of the following token permissions is required:
    • Cloudflare One Networks Write
    • Cloudflare 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"
    	}'

    有关更多信息,请参阅创建虚拟网络

  2. 针对您希望用户在其中进行切换的每个专用出口 IP,重复步骤 1。例如,您可以为来自欧洲、中东和非洲的出口创建另一个名为 vnet-EMEA 的虚拟网络。

将每个虚拟网络分配给每个隧道

创建虚拟网络后,在每个虚拟网络上路由您的私有网络 CIDR。这可以确保无论用户使用哪个出口 IP,都能访问您网络上的所有服务。

  1. 前往 Networking(网络) > Routes(路由)

    Go to Routes ↗
  2. 选择 Create route(创建路由),然后选择 Tunnel CIDR(隧道 CIDR)

  3. 选择路由 10.0.0.0/8 的隧道并输入 10.0.0.0/8 作为网络。

  4. Virtual network(虚拟网络) 下,选择您的第一个虚拟网络。例如,vnet-AMER

  5. 选择 Create route(创建路由)

  6. 要在另一个虚拟网络上路由 10.0.0.0/8,请使用不同的虚拟网络(例如 vnet-EMEA)重复步骤 2-5。

  7. 针对您创建的每个虚拟网络以及每个私有网络隧道路由重复此操作。

  1. 将您的第一个虚拟网络分配给您的私有网络路由。例如,将 vnet-AMER 分配给路由 10.0.0.0/8 的隧道:

    Required API token permissions

    At least one of the following token permissions is required:
    • Cloudflare One Networks Write
    • Cloudflare 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>"
    	}'

    有关更多信息,请参阅更新隧道路由

  2. 针对您创建的每个虚拟网络重复此过程。例如:

    Required API token permissions

    At least one of the following token permissions is required:
    • Cloudflare One Networks Write
    • Cloudflare 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>"
    	}'
  3. 针对每个私有网络隧道路由重复步骤 1-2。

连接到您的私有网络的每个隧道都应分配有您的每个虚拟网络。例如,如果您拥有路由 10.0.0.0/8192.168.88.0/24 的隧道,则两个隧道都应分配有 vnet-AMERvnet-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 分配给每个虚拟网络。

  1. Cloudflare 仪表板中,转到 Zero Trust > Traffic policies(流量策略) > Egress policies(出口策略)

  2. 选择 Add a policy(添加策略)

  3. 为您的策略命名。我们建议包含流量出口所在的国家或地区。

  4. 使用 Virtual Network(虚拟网络) 选择器添加虚拟网络。例如:

    选择器 运算符
    Virtual Network(虚拟网络) is vnet-AMER
  5. Select an egress IP(选择出口 IP) 中,选择 Use dedicated Cloudflare egress IPs(使用专用 Cloudflare 出口 IP)。选择您希望流量出口所用的专用 IPv4 和 IPv6 地址。

  6. 选择 Create policy(创建策略)

  7. 重复步骤 1-6,为您创建的每个虚拟网络创建一个单独的出口策略。

  1. 添加一条匹配相应虚拟网络的 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 规则

  2. 重复步骤 1,为您创建的每个虚拟网络创建一个出口策略。

每个策略你创建都应对应于不同的主专用出口 IP。

测试虚拟网络出口

Windows, macOS, and Linux

  1. 在用户的设备上,在 Cloudflare One 客户端中登录您的 Zero Trust 组织。

  2. 在终端中,运行以下命令以检查默认出口 IP 地址。

    curl ifconfig.me -4

    该命令应输出您组织的默认出口 IP。

  3. 在客户端 GUI 中,使用 VNET 下拉菜单切换到您创建的虚拟网络。

    Version 2026.1 and earlier

    在 Cloudflare One 客户端中,选择齿轮图标 > Virtual Networks(虚拟网络)

  4. 再次运行 curl ifconfig.me -4 以检查出口 IP 地址。该命令应输出您的出口策略中指定的 IP 地址。

iOS and Android

  1. 在用户的设备上,在 Cloudflare One Agent 应用程序中登录您的 Zero Trust 组织。
  2. 在浏览器中,转到 ifconfig.me。您组织的默认出口 IP 应显示在 IP Address(IP 地址) 中。
  3. 在 Cloudflare One Agent 中,转到 Advanced(高级) > Connection options(连接选项) > Virtual networks(虚拟网络)。选择您创建的虚拟网络。
  4. 通过重新加载步骤 1 中的浏览器页面来检查出口 IP 地址。您的出口策略中指定的 IP 地址应显示在 IP Address(IP 地址) 中。

当您的用户连接到虚拟网络时,他们的流量将通过指定的专用出口 IP 进行路由。您可以重复这些步骤以测试每个虚拟网络是否正在从正确的 IP 出口。

这篇文档对您有帮助吗?