Define specific destination IP subnets to either include in (send through) or exclude from (send direct) the VPN tunnel.
Default Behavior: If no include/exclude routes are defined, *all* traffic goes through the tunnel (no split tunnel).
Rule Precedence: More specific routes take precedence over less specific routes (e.g., 192.168.1.0/24 exclude overrides 0.0.0.0/0 include for that specific subnet).
Gotcha: Avoid specifying the same route as both include and exclude.
By default (split tunnel enabled), users can still reach local resources (printers, local proxies) directly via the physical adapter. To prevent potential policy bypass on untrusted networks, enable the No direct access to local network setting.
Supported on: Windows, macOS, Linux (GP App 6.0.0+).
When enabled, traffic to the local subnet is forced through the tunnel (IPv4 outgoing, IPv6 outgoing except link-local). Existing connections might be terminated (Windows) or allowed (macOS/Linux). Split tunnel rules for domain/app/route still function as expected.
IPv4 Traffic Behavior Comparison:
IPv4 Traffic to Local Subnet | No Direct Access Enabled (After Tunnel) | No Direct Access Disabled (After Tunnel) |
---|---|---|
New Incoming | Windows 10 (no domain/app split): Tunnel enforced. Windows 10 (with domain/app split): Allowed via physical. macOS/Linux: Allowed via physical. | Allowed via physical. |
New Outgoing | Sent via Tunnel. | Allowed via physical. |
Existing | Windows: Terminated. macOS/Linux: Allowed via physical. | Allowed via physical. |
IPv6 Traffic Behavior Comparison:
IPv6 Traffic to Local Subnet | No Direct Access Enabled (After Tunnel) | No Direct Access Disabled (After Tunnel) |
---|---|---|
New Incoming | Allowed via physical. | Allowed via physical. |
New Outgoing | Sent via Tunnel (except fe80::/10 link-local). | Allowed via physical. |
Existing | Allowed via physical. | Allowed via physical. |
Allows including or excluding traffic based on the destination domain name (e.g., *.salesforce.com) or the application process path, rather than just IP address. Useful for dynamic IP services like SaaS.
PCNSE: Know that domain/app split tunneling is useful for SaaS/cloud apps with changing IPs.Recommendations & Limitations:
DNS Handling: If the Portal Agent App setting Split-Tunnel Option is set to Both Network Traffic and DNS , these domain rules apply to DNS lookups as well as the subsequent traffic.
Starting with GP App 6.3.1, a single wildcard character (*) can be used within the application path for application-based split tunneling (include or exclude).
This is useful for applications whose paths change frequently due to updates (e.g., version numbers in the path), like Microsoft Teams or Symantec WSS.
PCNSE: Understand the use case for wildcards in application paths (handling version changes).Example:
Configuration:
Windows Example:
macOS Example:
Limitations:
Split DNS allows specifying which domains are resolved by the gateway's DNS servers and which by the endpoint's local DNS servers. For iOS, GlobalProtect app 6.1.6+ supports Split DNS - Include functionality.
Split DNS - Exclude functionality is NOT supported on iOS.
This applies when using On-demand or Always-On connect methods. (Per-App VPN config bypasses this).
PCNSE: Know that iOS Split DNS supports 'Include' only and has specific configuration requirements compared to Win/macOS.iOS Specific Behavior & Configuration Requirements:
Assume Portal and Gateway are already configured.
Verification Example Log Snippet (PanGPS.log on iOS):
DNSSettings = { protocol = cleartext server = ( x.x.x.x ) // Tunnel DNS searchDomains = () matchDomains = ( // Domains to use Tunnel DNS paloaltonetworks.com, *.paloaltonetworks.com, ) matchDomainsNoSearch = YES } IPv4Settings = { configMethod = manual addresses = ( xxx.xx.xx.xx ) subnetMasks = ( xxx.xxx.xxx.xxx ) includedRoutes = ( // Traffic to tunnel { destinationAddress = 10.0.0.0 destinationSubnetMask = 255.0.0.0 }, // ... other includes ... ) excludedRoutes = () // Excludes if any were configured (not typical for iOS split DNS) overridePrimary = NO } // ... IPv6Settings similar ...
Note the `matchDomains` reflecting the Include Domain rules and `includedRoutes` reflecting the Include Access Route rules.
Allows excluding HTTP/HTTPS video streams (identified by App-ID) from the tunnel to conserve gateway bandwidth.
PCNSE: Know this feature uses App-ID to identify video and requires a GP license.Supported Applications & Traffic Types:
Prerequisites & Limitations:
Instead of configuring split tunnel rules directly on the gateway, you can host a larger configuration in an XML file on your own web server. This allows for significantly more entries than the gateway GUI permits. PCNSE: Understand this method allows scaling split tunnel rules beyond GUI limits and requires hosting/signing/authentication setup.
Configuration Limits Comparison:
Split Tunnel By... | Type | Configured on Gateway | Hosted on Web Server |
---|---|---|---|
Access Route | Include | 1000 | 1000 |
Exclude | 200 | 1000 | |
Domain | Include | 200 | 1000 |
Exclude | 200 | 1000 | |
Application | Include | 200 | 200 |
Exclude | 200 | 200 |
Fallback: If the GlobalProtect app cannot fetch or validate the configuration file from the web server, it falls back to using the split tunnel configuration defined directly on the gateway (if any).
Tip:
Include `
openssl dgst -sha256 -sign private_key.pem -out config_signature.sha256 config.xml
openssl base64 -A -in config_signature.sha256 -out encoded_signature.txt
Note: The verification of the *signature* itself within the downloaded file likely relies on a separate mechanism or pre-shared trust, possibly related to the client cert CA or another configured certificate/key on the firewall/portal, though not explicitly detailed here how the *signing* public key is distributed/used by the app. Focus on configuring the client cert CA public key as shown.
Test your knowledge! Answer all questions and click Submit.