Es bastante posible activar "always-on" VPN activar la opción "Conectar a la demanda" opción a través de un perfil de VPN tanto en iOS y OSX/MacOS.
Por ejemplo, algunos comerciales de los proveedores de VPN de hacer eso.
Sin embargo, que sólo se aplica a cualquier tipo de VPN/configurar a través de native client, y no la 3ª parte de las Vpn como OpenVPN.
El comportamiento de la conexión en la demanda de Vpn, es que tan pronto como los paquetes TCP/IP que intenta dejar el iDevice, el VPN aumenta.
Yo lo he estado usando con Vpn con IPsec con IKEv1 en iOS 8 y iOS 9, por lo que el IKEv2 requisito no parece aplicarse. También he estado usando sin supervisado modo.
El archivo de perfil es un archivo xml, que puede ser escrito a mano, o con la ayuda de las herramientas de Apple. El archivo tiene una extensión .mobileconfig, y tiene que ser cargado por el navegador Safari en iOS.
Como un ejemplo, estoy usando este archivo, para un total de túnel VPN, "Cisco" IPsec con contraseña de grupo y de usuario XAUTH de autenticación.
Puse "Cisco", porque en mi caso, los servidores VPN son, respectivamente, un firewall PfSense, y un Linux Debian server.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>IPSec</key>
<dict>
<key>AuthenticationMethod</key>
<string>SharedSecret</string>
<key>LocalIdentifier</key>
<string>*group_name*</string>
<key>LocalIdentifierType</key>
<string>KeyID</string>
<key>RemoteAddress</key>
<string>*11.11.11.11*</string>
<key>SharedSecret</key>
<data>
*ksjksdjksdf*
</data>
<key>XAuthEnabled</key>
<integer>1</integer>
<key>XAuthName</key>
<string>*username*</string>
<key>XAuthPassword</key>
<string>*password*</string>
<key>DisconnectOnIdle</key>
<integer>0</integer>
<key>OnDemandEnabled</key>
<integer>1</integer>
<key>OnDemandRules</key>
<array>
<dict>
<key>Action</key>
<string>Connect</string>
</dict>
</array>
</dict>
<key>IPv4</key>
<dict>
<key>OverridePrimary</key>
<integer>1</integer>
</dict>
<key>PayloadDescription</key>
<string>Configures VPN settings, including authentication.</string>
<key>PayloadDisplayName</key>
<string>*VPN (MyHOME)*</string>
<key>PayloadIdentifier</key>
<string>*com.myhome.pt.vpn*</string>
<key>PayloadOrganization</key>
<string>*MY-HOME*</string>
<key>PayloadType</key>
<string>com.apple.vpn.managed</string>
<key>PayloadUUID</key>
<string>D758D99C-7CCE-44DC-8CAE-B2A5FFC86985</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>Proxies</key>
<dict/>
<key>UserDefinedName</key>
<string>*VPN My-HOME*</string>
<key>VPNType</key>
<string>IPSec</string>
</dict>
</array>
<key>PayloadDescription</key>
<string>*VPN provisioning for My-HOME*</string>
<key>PayloadDisplayName</key>
<string>*MY-HOME*</string>
<key>PayloadIdentifier</key>
<string>*com.myhome.pt*</string>
<key>PayloadOrganization</key>
<string>*MY-HOME*</string>
<key>PayloadRemovalDisallowed</key>
<false/>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>A8E086BE-C9B1-4EA8-9E6A-F25001E0A293</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>
Como usted bien sospechoso, hay dos inconvenientes de este enfoque. Mientras que la conexión en el perfil de la demanda está activo, el regular wake ups para la obtención de datos parecer no se puede hacer (al menos hasta que iOS 9, todavía tenemos que probar iOS 10), y, como tal, llamadas FaceTime no siempre son recibidos mientras que el dispositivo es "dormir").
La documentación de Apple acerca de este directivas está aquí. "IPSec Claves del Diccionario" es de particular interés.