When configuring Windows 10 Always On VPN, the administrator must choose between force tunneling and split tunneling. When force tunneling is used, all network traffic from the VPN client is routed over the VPN tunnel. When split tunneling is used, the VPN client must be configured with the necessary IP routes to establish remote network connectivity to on-premises resources. How those routes are established is a common source of confusion. This article provides guidance for properly configuring routing for Always On VPN clients.
Class Based Routing
IP addresses are assigned to Windows 10 Always On VPN clients from either a static pool of addresses configured by the administrator or by DHCP. If split tunneling is enabled, the client will also be assigned a class-based route that is derived from the IP address assigned to it by the VPN server, by default. If the client is assigned an IP address from the Class A network, a corresponding /8 prefix is used. For Class B networks a /16 prefix is defined, and for Class C networks a /24 prefix is used.
As an example, if the VPN server assigns the client an IP address of 10.21.12.103, a route to the 10.0.0.0/8 network is added to the client’s routing table, as shown here.
Complex Networks
This default class-based route is of limited use though, and is only applicable when the internal network is simple and VPN clients are assigned IP addresses from the same subnet class. In the example above, if the entire internal network resides in the 10.0.0.0/8 Class A address space, all resources will be reachable by the VPN client. Any resources in the Class B or Class C subnet ranges would be unreachable without additional configuration.
Route Configuration
To configure routing for Windows 10 Always On VPN clients, first disable the default class-based route by defining the following element in ProfileXML as shown here.
<VPNProfile> <NativeProfile> <DisableClassBasedDefaultRoute>true</DisableClassBasedDefaultRoute> </NativeProfile> </VPNProfile>
Next, enable specific routes as needed by defining the following element(s) in ProfileXML. The example below defines routes for all private RFC 1918 networks.
<VPNProfile> <Route> <Address>10.0.0.0</Address> <PrefixSize>8</PrefixSize> </Route> <Route> <Address>172.16.0.0</Address> <PrefixSize>12</PrefixSize> </Route> <Route> <Address>192.168.0.0</Address> <PrefixSize>16</PrefixSize> </Route> </VPNProfile>
Once implemented, the VPN client’s routing table will appear as shown here.
Summary
Proper routing is crucial for ensuring full network connectivity and access to internal resources for Windows 10 Always On VPN clients. When split tunneling is employed, avoid using the default class-based route and instead define specific routes using ProfileXML as required.
Additional Information
Always On VPN Client DNS Server Configuration
Deploying Windows 10 Always On VPN with Microsoft Intune