跳转到内容
搜索文档

定义 Split Tunnel 设置

最后更新 查看 MarkdownAgent 设置

分流隧道(Split Tunnel)设置决定了 Cloudflare One 客户端代理和不代理哪些流量。

Cloudflare One 客户端提供了两种不同的分流隧道模式:

  • 如果您打算让所有内部和外部目的地流量通过 Cloudflare 的全球网络,请选择 Exclude IPs and domains(排除 IP 和域) 模式。在此模式下,除了在分流隧道列表中明确定义的 IP 和主机之外,所有内容都将通过 WARP 隧道进行代理。
  • 如果您打算仅使用 Cloudflare One 客户端代理私有目的地流量,您可以在 Include IPs and domains(包含 IP 和域) 模式下操作,在该模式下,您需要明确定义哪些 IP 范围和域应包含在 WARP 路由表中。

更新分流隧道模式

要更改您的分流隧道模式:

  1. Cloudflare 仪表板中,转到 Zero Trust > Team & Resources(团队和资源) > Devices(设备) > Device profiles(设备配置文件) > General profiles(常规配置文件)
  2. 找到您要修改的设备配置文件,然后选择 Configure(配置)
  3. 向下滚动到 Split Tunnels
  4. (可选)要查看您现有的 Split Tunnel 配置,请选择 Manage(管理)。根据您选择的模式,您将看到 Cloudflare Zero Trust 排除或包含的 IP 和域列表。我们建议备份您的 Split Tunnel 条目,因为切换模式后它们将恢复为默认值。
  5. Split Tunnels 下,选择一个模式:
    • Exclude IPs and domains —(默认)除您指定的 IP 和域外,所有流量都将发送到 Cloudflare Gateway。
    • Include IPs and Domains — 只有发往您指定的 IP 或域的流量才会被发送到 Cloudflare Gateway。所有其他流量都将绕过 Gateway,不再受您的网络或 HTTP 策略过滤。要使用某些功能,您需要手动添加 Zero Trust 域
  1. 向您的 cloudflare_api_token 添加以下权限:

    • Zero Trust Write
  2. 选择要修改的 cloudflare_zero_trust_device_default_profilecloudflare_zero_trust_device_custom_profile 资源,或者创建新的设备配置文件

  3. 在您的设备配置文件中,配置 excludeinclude 参数。在一个给定的设备配置文件中,您不能同时设置 excludeinclude

    a. 要管理 Exclude 模式下的 Split Tunnel 路由,请使用 exclude 参数:

    resource "cloudflare_zero_trust_device_custom_profile" "exclude_example" {
    	account_id            = var.cloudflare_account_id
    	name                  = "Custom profile in Split Tunnels Exclude mode"
    	enabled               = true
    	precedence            = 101
    	service_mode_v2       = {mode = "warp"}
    	match 								=  "identity.email == \"test@cloudflare.com\""
    
    	exclude = [{
    			address = "10.0.0.0/8"
    			description = "Example route to exclude from WARP tunnel"
    	}]
    }

    在此示例中,除了发往 10.0.0.0/8 的流量之外,所有流量都将发送到 Cloudflare Gateway。要排除 Cloudflare 推荐的默认 IP 和域,请参阅添加路由

    b. 要管理 Include 模式下的 Split Tunnel 路由,请使用 include 参数:

    resource "cloudflare_zero_trust_device_custom_profile" "include_example" {
    	account_id            = var.cloudflare_account_id
    	name                  = "Custom profile in Split Tunnels Include mode"
    	enabled               = true
    	precedence            = 101
    	service_mode_v2       = {mode = "warp"}
    	match 								=  "identity.email == \"test@cloudflare.com\""
    
    	include = [{
    			address = "10.0.0.0/8"
    			description = "Example route to include in WARP tunnel"
    	}]
    }

    在此示例中,只有发往 10.0.0.0/8 的流量才会被发送到 Cloudflare Gateway。

具有此设备配置文件的所有客户端现在都将切换到新模式及其默认路由配置。接下来,从您的 Split Tunnel 配置中添加移除路由。

添加路由

  1. Cloudflare 仪表板中,转到 Zero Trust > Team & Resources(团队和资源) > Devices(设备) > Device profiles(设备配置文件) > General profiles(常规配置文件)

  2. 找到您要修改的设备配置文件,然后选择 Configure(配置)

  3. Split Tunnels 下,检查您的 Split Tunnels 模式是设置为 Exclude 还是 Include

  4. 选择 Manage(管理)

  5. 您可以根据 IP 地址或域排除或包含路由。在可能的情况下,我们建议添加 IP 地址而不是域。要了解添加域的后果,请参阅基于域的 Split Tunnels

    要向 Split Tunnels 添加 IP 地址:

    1. 选择 IP Address
    2. 输入您要排除或包含的 IP 地址或 CIDR
    3. 选择 Save destination(保存目标)

    发往此 IP 地址的流量现在已从 WARP 隧道中排除或包含。

    要向 Split Tunnels 添加域:

    1. 选择 Domain
    2. 输入有效域以进行排除或包含。
    3. 选择 Save destination(保存目标)
    4. (可选)如果您的域没有公共 DNS 记录,请创建一个 Local Domain Fallback 条目,以允许私有 DNS 服务器处理域名解析。

    当用户访问该域时,系统会根据您的 Local Domain Fallback 配置(由 Gateway 或您的私有 DNS 服务器)解析该域。然后,Split Tunnels 将动态包含或排除 DNS 查找中返回的 IP 地址。

  1. 向您的 cloudflare_api_token 添加以下权限:

    • Zero Trust Write
  2. 选择要修改的 cloudflare_zero_trust_device_default_profilecloudflare_zero_trust_device_custom_profile 资源,或者创建新的设备配置文件

  3. (可选)创建一个可以在多个设备配置文件中重复使用的 Split Tunnel 路由列表。例如,您可以在与设备配置文件相同的模块中声明本地值:

    split-tunnels.local.tftf
    locals {
    	global_exclude_list = [
    		# Cloudflare 推荐的默认 Split Tunnel 条目
    		{
    			address     = "ff05::/16"
    		},
    		{
    			address     = "ff04::/16"
    		},
    		{
    			address     = "ff03::/16"
    		},
    		{
    			address     = "ff02::/16"
    		},
    		{
    			address     = "ff01::/16"
    		},
    		{
    			address     = "fe80::/10"
    			description = "IPv6 Link Local"
    		},
    		{
    			address     = "fd00::/8"
    		},
    		{
    			address     = "255.255.255.255/32"
    			description = "DHCP Broadcast"
    		},
    		{
    			address     = "240.0.0.0/4"
    		},
    		{
    			address     = "224.0.0.0/24"
    		},
    		{
    			address     = "192.168.0.0/16"
    		},
    		{
    			address     = "192.0.0.0/24"
    		},
    		{
    			address     = "172.16.0.0/12"
    		},
    		{
    			address     = "169.254.0.0/16"
    			description = "DHCP Unspecified"
    		},
    		{
    			address     = "100.64.0.0/10"
    		},
    		{
    			address     = "10.0.0.0/8"
    		}
    	]
    }
  4. 在设备配置文件中,根据 IP 地址或域排除或包含路由:

    device-profiles.tftf
    resource "cloudflare_zero_trust_device_custom_profile" "example" {
    	account_id            = var.cloudflare_account_id
    	name                  = "Example custom profile with split tunnels"
    	enabled               = true
    	precedence            = 101
    	service_mode_v2       = {mode = "warp"}
    	match                 =  "identity.email == \"test@cloudflare.com\""
    
    	exclude = concat(
    		# 全局条目
    		local.global_exclude_list,
    
    		# 特定于配置文件的条目
    		[
    			{
    				address = "192.0.2.0/24"
    				description = "要从 WARP 排除的示例 IP"
    			},
    			{
    				host = "example.com"
    				description = "要从 WARP 排除的示例域"
    			}
    		]
    	)
    }

    在可能的情况下,我们建议添加 IP 地址而不是域。要了解添加域的后果,请参阅基于域的 Split Tunnels

新更新的设置可能需要多达 10 分钟才能传播到设备。

我们建议保持 Split Tunnels 列表简短,因为每个条目都需要时间供客户端解析。特别地,域的执行速度比 IP 地址慢,因为它们需要进行即时的 IP 查找以及路由表/本地防火墙更改。较短的列表也将使您的配置更易于理解和调试。有关设备配置文件限制的信息,请参阅账户限制

为私有网络访问配置 Split Tunnel

默认情况下,WARP 会排除发往 RFC 1918 地址空间的流量,这些 IP 地址通常用于私有网络,且无法从互联网访问。为了让 Cloudflare One Client 向您的 private network 发送流量,您必须配置分流隧道(Split Tunnels),以便将您的 private network 的 IP/CIDR 路由通过 Cloudflare One Client。

  1. 首先,检查您的分流隧道模式是设置为**Exclude(排除)还是Include(包含)**模式。

  2. 根据该模式编辑您的分流隧道路由:

    如果您使用的是**Exclude(排除)**模式:

    a. 删除包含您的 private network 的 IP/CIDR 范围的路由。例如,如果您的网络使用默认 AWS 范围 172.31.0.0/16,请删除 172.16.0.0/12

    b. 重新添加您的 private network 没有明确使用的 IP/CIDR 范围。对于上述 AWS 示例,您需要为 172.16.0.0/13172.24.0.0/14172.28.0.0/15172.30.0.0/16 添加新条目。这可确保只有发往 172.31.0.0/16 的流量通过 Cloudflare One Client 进行路由。

    您可以使用以下计算器来确定要重新添加的 IP 地址:

    计算器说明

    1. Base CIDR 中,输入您从分流隧道中删除的 RFC 1918 范围。
    2. Subtracted CIDRs 中,输入您的 private network 所使用的 IP/CIDR 范围。
    3. 将计算器结果重新添加到您的分流隧道“排除”模式列表中。

    通过缩小 Cloudflare One Client 中包含的私有 IP 范围,您可以降低破坏用户访问本地资源的风险。

    如果您使用的是**Include(包含)**模式:

    1. 将所需的 Zero Trust 域IP 地址添加到您的分流隧道“包含”列表中。
    2. 添加一条路由以包含您的 private network 的 IP/CIDR 范围。

这篇文档对您有帮助吗?