分流隧道(Split Tunnel)设置决定了 Cloudflare One 客户端代理和不代理哪些流量。
Cloudflare One 客户端提供了两种不同的分流隧道模式:
- 如果您打算让所有内部和外部目的地流量通过 Cloudflare 的全球网络,请选择 Exclude IPs and domains(排除 IP 和域) 模式。在此模式下,除了在分流隧道列表中明确定义的 IP 和主机之外,所有内容都将通过 WARP 隧道进行代理。
- 如果您打算仅使用 Cloudflare One 客户端代理私有目的地流量,您可以在 Include IPs and domains(包含 IP 和域) 模式下操作,在该模式下,您需要明确定义哪些 IP 范围和域应包含在 WARP 路由表中。
要更改您的分流隧道模式:
- 在 Cloudflare 仪表板 ↗中,转到 Zero Trust > Team & Resources(团队和资源) > Devices(设备) > Device profiles(设备配置文件) > General profiles(常规配置文件)。
- 找到您要修改的设备配置文件,然后选择 Configure(配置)。
- 向下滚动到 Split Tunnels。
- (可选)要查看您现有的 Split Tunnel 配置,请选择 Manage(管理)。根据您选择的模式,您将看到 Cloudflare Zero Trust 排除或包含的 IP 和域列表。我们建议备份您的 Split Tunnel 条目,因为切换模式后它们将恢复为默认值。
- 在 Split Tunnels 下,选择一个模式:
- Exclude IPs and domains —(默认)除您指定的 IP 和域外,所有流量都将发送到 Cloudflare Gateway。
- Include IPs and Domains — 只有发往您指定的 IP 或域的流量才会被发送到 Cloudflare Gateway。所有其他流量都将绕过 Gateway,不再受您的网络或 HTTP 策略过滤。要使用某些功能,您需要手动添加 Zero Trust 域。
-
向您的
cloudflare_api_token↗ 添加以下权限:Zero Trust Write
-
选择要修改的
cloudflare_zero_trust_device_default_profile↗ 或cloudflare_zero_trust_device_custom_profile↗ 资源,或者创建新的设备配置文件。 -
在您的设备配置文件中,配置
exclude或include参数。在一个给定的设备配置文件中,您不能同时设置exclude和include。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 == \"[email protected]\"" 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 == \"[email protected]\"" include = [{ address = "10.0.0.0/8" description = "Example route to include in WARP tunnel" }] }在此示例中,只有发往
10.0.0.0/8的流量才会被发送到 Cloudflare Gateway。
具有此设备配置文件的所有客户端现在都将切换到新模式及其默认路由配置。接下来,从您的 Split Tunnel 配置中添加或移除路由。
-
在 Cloudflare 仪表板 ↗中,转到 Zero Trust > Team & Resources(团队和资源) > Devices(设备) > Device profiles(设备配置文件) > General profiles(常规配置文件)。
-
找到您要修改的设备配置文件,然后选择 Configure(配置)。
-
在 Split Tunnels 下,检查您的 Split Tunnels 模式是设置为 Exclude 还是 Include。
-
选择 Manage(管理)。
-
您可以根据 IP 地址或域排除或包含路由。在可能的情况下,我们建议添加 IP 地址而不是域。要了解添加域的后果,请参阅基于域的 Split Tunnels。
要向 Split Tunnels 添加 IP 地址:
- 选择 IP Address。
- 输入您要排除或包含的 IP 地址或 CIDR。
- 选择 Save destination(保存目标)。
发往此 IP 地址的流量现在已从 WARP 隧道中排除或包含。
要向 Split Tunnels 添加域:
- 选择 Domain。
- 输入有效域以进行排除或包含。
- 选择 Save destination(保存目标)。
- (可选)如果您的域没有公共 DNS 记录,请创建一个 Local Domain Fallback 条目,以允许私有 DNS 服务器处理域名解析。
当用户访问该域时,系统会根据您的 Local Domain Fallback 配置(由 Gateway 或您的私有 DNS 服务器)解析该域。然后,Split Tunnels 将动态包含或排除 DNS 查找中返回的 IP 地址。
-
向您的
cloudflare_api_token↗ 添加以下权限:Zero Trust Write
-
选择要修改的
cloudflare_zero_trust_device_default_profile↗ 或cloudflare_zero_trust_device_custom_profile↗ 资源,或者创建新的设备配置文件。 -
(可选)创建一个可以在多个设备配置文件中重复使用的 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" } ] } -
在设备配置文件中,根据 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 == \"[email protected]\"" 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 查找以及路由表/本地防火墙更改。较短的列表也将使您的配置更易于理解和调试。有关设备配置文件限制的信息,请参阅账户限制。