Due app iPhone possono entrambe inserire una voce VPN in Impostazioni, entrambe definirsi client VPN e non condividere quasi nessuna implementazione. Apple chiama VPN personale una di queste integrazioni, e quel nome produce la maggior parte della confusione. VPN personale è un’API per creare e gestire configurazioni che usano l’implementazione integrata di IPsec o IKEv2. Un provider di tunnel di pacchetti è l’altro modello: l’app fornisce un’estensione che implementa il lato client del proprio protocollo. Tutto ciò che le persone deducono dopo dall’etichetta, dalle cifrature alla proprietà fino a se il telefono debba essere gestito, è deduzione e non affermazione.

Chi implementa il tunnel

La divisione decide chi è responsabile quando qualcosa si rompe. Con IPsec o IKEv2 integrati, iOS possiede la macchina a stati del tunnel e l’app possiede la configurazione e i pulsanti. Con un provider, l’app possiede entrambe, così un bug del protocollo diventa un aggiornamento dell’app invece che del sistema operativo.

Il confronto è breve se chiedi chi implementa il protocollo.

IntegrationApple interfaceProtocol implementation
Personal VPNNEVPNManager with a Personal VPN configurationThe system IPsec or IKEv2 client
Packet tunnelNETunnelProviderManager plus the provider extensionWhatever the extension implements

La documentazione di VPN personale menziona anche la richiesta esplicita di autorizzazione dell’utente quando un’app salva una configurazione per la prima volta, cosa che appartiene a quel modello e non alle app VPN in generale.

Due affermazioni sull’etichetta da lasciar perdere

La prima è che VPN personale scelga una cifratura. Non lo fa; la suite negoziata deriva dal protocollo e dalla sua configurazione, e un’etichetta Personale non dice nulla su quale otterrai. La seconda è che VPN personale implichi un proxy o un tunnel limitato. Implica IPsec o IKEv2 integrati, che è un tunnel completo ogni volta che le rotte lo dicono.

La presenza di un’app non è quindi prova del protocollo sul filo. Un client di terze parti che parla WireGuard o OpenVPN è per costruzione un’app provider, perché iOS non implementa quei protocolli in modo nativo.

Perché la formulazione aziendale trae in inganno

La documentazione di Apple classifica le configurazioni NETunnelProviderManager come configurazioni VPN aziendali ordinarie. Questa formulazione è una categoria di API, e spinge le persone verso due errori opposti: supporre che un’app consumer non possa usare il modello provider, e supporre che il telefono debba essere supervisionato per questo. Nessuna delle due cose ne segue. Le app consumer forniscono provider abitualmente, e la supervisione è una questione separata su chi può applicare le policy.

La proprietà della gestione è quella quarta questione, ed è indipendente da entrambi i modelli. Una configurazione installata da un’organizzazione porta con sé la propria identità, la portata del traffico e le regole del ciclo di vita, e quelle viaggiano con il profilo e non con l’app che si trova installata. Leggile insieme al modello di integrazione, perché un profilo integrato gestito e un profilo provider non gestito possono stare sullo stesso telefono contemporaneamente.

Controlla la prova invece dello screenshot

Gli screenshot sono la prova peggiore disponibile, perché il raggruppamento in Impostazioni cambia tra le versioni. Un profilo gestito nomina il proprio tipo di payload: un profilo integrato dichiara un tipo di VPN come IKEv2 o IPsec, mentre un profilo provider porta un sottotipo che nomina l’identificatore di bundle del provider. Questo è verificabile sul dispositivo davanti a te, e sopravvive al prossimo restyling.

Quanto all’app stessa, la classe in uso risponde alla stessa domanda dall’altro lato: oggetti di configurazione dall’API di VPN personale, oppure un gestore provider e la sua estensione.

Poi scegli in base a ciò che l’operatore fornisce davvero. Dove esiste un profilo nativo compatibile, il percorso integrato ha meno parti mobili e una cosa in meno da aggiornare. Dove il servizio richiede un protocollo che iOS non fornisce, un’app provider è l’unica opzione e il suo ritmo di rilascio diventa parte del tuo rischio.

Conserva il record con la connessione

Collega autenticazione e policy delle risorse al record di connessione e non all’app, così una reinstallazione non si porti via il modello di autorizzazione. Quel record è anche ciò che serve a un ingegnere del supporto quando il tunnel sale e nient’altro funziona.

La domanda che vale la pena porsi alla fine non è quale modello sia migliore. È quale modello supporti il tuo operatore, e quale riesci a fare debug alle due di notte con gli strumenti che hai davvero.

Articoli correlati