L’expressió VPN integrada a Android cobreix dues coses sense relació: una implementació de protocol que la plataforma executa en nom vostre i la forma de configuració que el fabricant va decidir exposar. No són el mateix objecte, i cap de les dues garanteix que el túnel pertanyi a l’usuari les aplicacions del qual el necessiten. L’aprovisionament passa en un usuari concret amb un paquet que crida concret, i tot el que segueix n’hereta el context. Llegiu la cadena de propietat abans de la pantalla de configuració.

Què construeix la plataforma per a vosaltres

Des d’Android 11 la plataforma exposa l’aprovisionament de VPN mitjançant VpnManager. Una aplicació aprovada descriu un perfil IKEv2, i la plataforma fa ella mateixa l’intercanvi IPsec i IKE, així que l’aplicació no toca mai els paquets. Aquesta és la diferència significativa amb una aplicació VPN pròpia, que implementa VpnService i construeix el túnel en el seu propi procés.

val profile = Ikev2VpnProfile.Builder(serverAddress, identity)
    .setAuthUsernamePassword(user, secret, rootCa)
    .build()
getSystemService(VpnManager::class.java).provisionVpnProfile(profile)

La crida de dalt és un esbós de la forma, no un bloc per copiar: el constructor té diverses variants d’autenticació, difereixen segons el nivell d’API, i el perfil també porta el material de confiança del certificat del servidor. Per a la qüestió de la propietat, el que importa és més estret que la sintaxi.

D’aquest disseny se’n deriven dues propietats. El perfil és dada, així que un administrador el pot aprovisionar en lloc d’escriure’l a mà. I el túnel és una xarxa de la plataforma, així que les aplicacions el veuen com una xarxa amb transport VPN i no com el sòcol d’una altra aplicació.

La propietat és l’usuari, després el paquet

El multiusuari d’Android és una separació real, no una etiqueta. Un perfil de treball és un usuari separat amb els seus paquets instal·lats, les seves dades d’aplicacions, el seu magatzem de claus i els seus ancoratges de confiança. El mateix producte instal·lat als dos llocs són dues instàncies amb identificadors d’usuari diferents, encara que les icones del llançador i els noms del producte siguin idèntics.

L’aprovisionament es registra contra el paquet que crida en aquell usuari. Per tant, una aplicació d’aprovisionament que s’executa al perfil personal crea un túnel personal, i les aplicacions de treball del perfil de treball no en veuen res. El contrari també és cert, i per això un túnel de perfil de treball és invisible per a les aplicacions personals sense una política explícita que digui el contrari.

Un controlador de política del dispositiu pot aprovisionar en nom d’un perfil gestionat, cosa que explica l’entrada que ningú a l’oficina recorda haver creat. Si auditeu un telèfon, aquest és el propietari probable d’un perfil engrissat, i no és cosa vostra esborrar-lo com a experiment.

Tres portes abans que es mogui un paquet

La primera porta és l’autoritat: la gestió ha de permetre un VPN, i alguns desplegaments restringeixen el tipus així com l’existència. La segona és la identitat: el certificat de client o les credencials han de ser disponibles a l’usuari que posseeix el perfil, perquè un certificat importat al magatzem personal no és visible per al perfil de treball.

La tercera és el consentiment i la política. L’usuari normalment aprova la connexió el primer cop que s’usa, i un administrador la pot fixar a més com a sempre activa, opcionalment amb bloqueig perquè el trànsit no pugui sortir fora del túnel. Aquesta configuració decideix què passa quan el túnel cau, i és la part que nota la gent.

L’abast és on es troben les tres. El perfil determina la passarel·la i la identitat, mentre que la capa de política decideix quines aplicacions poden usar el túnel i si el trànsit hi és forçat. Per això dos telèfons amb adreces de passarel·la idèntiques poden comportar-se molt diferent.

Per què una connexió personal no cobreix les aplicacions de treball

El trànsit d’una aplicació de treball es genera a l’usuari de treball, i la política de xarxa que s’aplica és la d’aquell usuari. Un túnel establert al perfil personal no el porta, per sa que l’indicador sembli saludable. Aquest sol fet explica la majoria d’informes on l’usuari jura que el VPN està connectat i una aplicació concreta encara no arriba a un servei intern.

La resolució de noms segueix la mateixa frontera. Els sufixos DNS privats i els ancoratges de confiança són per usuari, així que un nom d’amfitrió intern que es resol al perfil personal pot fallar al perfil de treball fins i tot amb un túnel d’aspecte equivalent, perquè la política del resolutor i el magatzem de CA són objectes diferents.

Verifiqueu en una inscripció real, no en un telèfon de laboratori

Al dispositiu, identifiqueu primer el propietari de l’entrada: quin usuari, quin paquet i si el perfil ve del provisionador de la plataforma o d’una aplicació que implementa el seu propi servei VPN. Després confirmeu que la identitat que espera el perfil és realment present al magatzem de claus d’aquell usuari.

Proveu el cicle de vida, no només la connexió. Inicieu sessió, desbloquegeu el magatzem de credencials, deixeu que el perfil de treball pari per al vespre, torneu-lo a portar i comproveu que el túnel torna sense un toc manual. Un perfil de treball que s’apaga fora d’horari s’emporta el túnel, i això és comportament esperat i no una fallada, sempre que l’estat no disponible esperat estigui escrit.

Finalment, proveu l’aplicació de treball mateixa contra un punt final intern conegut i compareu-ho amb el resultat del perfil personal. Es permet que difereixin; el que no pot diferir és el model de propietat. Si el túnel pertany a l’usuari equivocat, cap reemissió de certificats ho arreglarà.

No forceu el tema llançant activitats de configuració ocultes per revelar un menú, i no copieu claus privades entre perfils per fer aparèixer una connexió. La referència de VpnManager documenta què pot aprovisionar qui crida; si el camí aprovat no inclou el vostre cas, això és una decisió de l’administrador i no un problema de configuració.

Articles relacionats