Define Split Tunnel settings
Split tunnel settings determine which traffic WARP does and does not proxy.
WARP offers two different split tunnel modes:
- If you intend to send all internal and external destination traffic through Cloudflare's global network, opt for Exclude IPs and domains mode. This mode will proxy everything through the WARP tunnel with the exception of IPs and hosts defined explicitly within the Split Tunnel list.
- If you intend to only use WARP to proxy private destination traffic, you can operate in Include IPs and domains mode, in which you explicitly define which IP ranges and domains should be included in the WARP routing table.
To change your Split Tunnels mode:
- In Zero Trust ↗, go to Settings > WARP Client.
- Under Device settings, locate the device profile you would like to modify and select Configure.
- Scroll down to Split Tunnels.
- (Optional) To view your existing Split Tunnel configuration, select Manage. You will see a list of the IPs and domains Cloudflare Zero Trust excludes or includes, depending on the mode you have selected. We recommend making a copy of your Split Tunnel entries, as they will revert to the default upon switching modes.
- Under Split Tunnels, choose a mode:
- Exclude IPs and domains — (Default) All traffic will be sent to Cloudflare Gateway except for the IPs and domains you specify.
- Include IPs and Domains — Only traffic destined to the IPs or domains you specify will be sent to Cloudflare Gateway. All other traffic will bypass Gateway and will no longer be filtered by your network or HTTP policies. In order to use certain features, you will need to manually add Zero Trust domains.
-
Add the following permission to your
cloudflare_api_token
↗:Zero Trust Write
-
Choose a
cloudflare_zero_trust_device_default_profile
↗ orcloudflare_zero_trust_device_custom_profile
↗ resource to modify, or create a new device profile. -
In your device profile, configure either the
exclude
orinclude
argument. You cannot set bothexclude
andinclude
in a given device profile.a. To manage Split Tunnel routes in Exclude mode, use the
exclude
argument:resource "cloudflare_zero_trust_device_custom_profile" "exclude_example" {account_id = var.cloudflare_account_idname = "Custom profile in Split Tunnels Exclude mode"enabled = trueprecedence = 101service_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"}]}In this example, all traffic will be sent to Cloudflare Gateway except for traffic destined to
10.0.0.0/8
. To exclude the default IPs and domains recommended by Cloudflare, refer to Add a route.b. To manage Split Tunnel routes in Include mode, use the
include
argument:resource "cloudflare_zero_trust_device_custom_profile" "include_example" {account_id = var.cloudflare_account_idname = "Custom profile in Split Tunnels Include mode"enabled = trueprecedence = 101service_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"}]}In this example, only traffic destined to
10.0.0.0/8
will be sent to Cloudflare Gateway.
All clients with this device profile will now switch to the new mode and its default route configuration. Next, add or remove routes from your Split Tunnel configuration.
-
In Zero Trust ↗, go to Settings > WARP Client.
-
Under Device settings, locate the device profile you would like to modify and select Configure.
-
Under Split Tunnels, check whether your Split Tunnels mode is set to Exclude or Include.
-
Select Manage.
-
You can exclude or include routes based on either their IP address or domain. When possible we recommend adding an IP address instead of a domain. To learn about the consequences of adding a domain, refer to Domain-based Split Tunnels.
To add an IP address to Split Tunnels:
- Select IP Address.
- Enter the IP address or CIDR you want to exclude or include.
- Select Save destination.
Traffic to this IP address is now excluded or included from the WARP tunnel.
To add a domain to Split Tunnels:
- Select Domain.
- Enter a valid domain to exclude or include.
- Select Save destination.
- (Optional) If your domain does not have a public DNS record, create a Local Domain Fallback entry to allow a private DNS server to handle domain resolution.
When a user goes to the domain, the domain gets resolved according to your Local Domain Fallback configuration (either by Gateway or by your private DNS server). WARP Split Tunnels will then dynamically include or exclude the IP address returned in the DNS lookup.
-
Add the following permission to your
cloudflare_api_token
↗:Zero Trust Write
-
Choose a
cloudflare_zero_trust_device_default_profile
↗ orcloudflare_zero_trust_device_custom_profile
↗ resource to modify, or create a new device profile. -
(Optional) Create a list of split tunnel routes that you can reuse across multiple device profiles. For example, you can declare a local value in the same module as your device profiles:
split-tunnels.local.tf locals {global_exclude_list = [# Default Split Tunnel entries recommended by Cloudflare{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"}]} -
In the device profile, exclude or include routes based on either their IP address or domain:
device-profiles.tf resource "cloudflare_zero_trust_device_custom_profile" "example" {account_id = var.cloudflare_account_idname = "Example custom profile with split tunnels"enabled = trueprecedence = 101service_mode_v2 = {mode = "warp"}match = "identity.email == \"test@cloudflare.com\""exclude = concat(# Global entrieslocal.global_exclude_list,# Profile-specific entries[{address = "192.0.2.0/24"description = "Example IP to exclude from WARP"},{host = "example.com"description = "Example domain to exclude from WARP"}])}When possible we recommend adding an IP address instead of a domain. To learn about the consequences of adding a domain, refer to Domain-based Split Tunnels.
It may take up to 10 minutes for newly updated settings to propagate to devices.
We recommend keeping the Split Tunnels list short, as each entry takes time for the client to parse. In particular, domains are slower to action than IP addresses because they require on-the-fly IP lookups and routing table / local firewall changes. A shorter list will also make it easier to understand and debug your configuration. For information on device profile limits, refer to Account limits.
Was this helpful?
- Resources
- API
- New to Cloudflare?
- Products
- Sponsorships
- Open Source
- Support
- Help Center
- System Status
- Compliance
- GDPR
- Company
- cloudflare.com
- Our team
- Careers
- 2025 Cloudflare, Inc.
- Privacy Policy
- Terms of Use
- Report Security Issues
- Trademark