Como configurar VPN por meio de programação no Android?

Eu preciso implementar um aplicativo Android que permita ao usuário configurar uma conexão VPN sem ter que acessar o menu nativo do dispositivo Android. Com isso eu tenho dois problemas:

no Android 4.0 + (api level 14 and above) Descobri que existe um novo componente chamado VpnService que fornece um gancho para criar uma interface de rede virtual, configurá-lo e interceptar / encaminhar pachets para um servidor VPN, mas não há Construído em protocolos vpn como PPTP ou IPSec, existe apenas a possibilidade de implementá-los. A minha pergunta é que existe alguma solução pronta para PPTP e IPSec para trabalhar com VpnService?

Em versões anteriores do Android, pelo que eu encontrei até agora, parece que a única maneira de usar VPN é acessar e configurar a solução VPN embutida do dispositivo envolvendo (usando reflexão) algumas APIs ocultas no Android, mas este é um solução incômoda desde que o dispositivo precisa ser enraizada, também as implementações de API ocultas podem diferir de dispositivo para dispositivo e da versão do sistema operacional para a versão do sistema operacional. Existe uma maneira melhor de configurar programaticamente a VPN interna do SO Linux subjacente?

questionAnswers(1)

yourAnswerToTheQuestion