Questa pagina fornisce linee guida per gli operatori di rete per garantire che le app di rete privata virtuale (VPN) per consumatori e aziende offrano una buona esperienza utente finale nelle loro reti. Android fornisce la classe
VpnManager
per consentire agli sviluppatori di creare soluzioni VPN, utilizzate da consumatori e
aziende per criptare le comunicazioni o indirizzarle a reti diverse.
Consigliamo agli operatori di rete di seguire queste linee guida:
- Supporta i pacchetti del protocollo IPv6 Encapsulating Security Payload (ESP) (intestazione successiva 50) sulla tua rete, garantendo che questo traffico abbia prestazioni comparabili a quelle delle connessioni User Datagram Protocol (UDP) o Transmission Control Protocol (TCP). Le sessioni ESP devono essere consentite in entrata ai dispositivi o impostate su timeout molto elevati e inoltrate alla velocità di linea.
- Imposta i timeout per la conversione degli indirizzi di rete (NAT) e il firewall stateful che siano almeno di 600 secondi per le connessioni UDP sulla porta 4500 per garantire che le soluzioni VPN possano mantenere una connettività affidabile senza incorrere in costi energetici eccessivi.
Supporta i pacchetti del protocollo ESP IPv6 (intestazione successiva 50)
Encapsulating Security Payload (ESP) è il formato dei pacchetti definito nell'insieme di protocolli Internet Protocol Security (IPSec) per criptare e autenticare i pacchetti in una soluzione VPN. Il sistema operativo Android implementa questo protocollo di sicurezza standard nella sua soluzione VPN integrata.
Nelle reti compatibili con IPv6, i pacchetti ESP vengono trasportati direttamente nei pacchetti IPv6 con un campo Next Header pari a 50. Se una rete non supporta correttamente questi tipi di pacchetti, può causare una mancanza di connettività per le soluzioni VPN che mirano a utilizzare questo protocollo senza ulteriore incapsulamento dei pacchetti. La rete potrebbe eliminare questi pacchetti a causa della configurazione del firewall. In alternativa, i pacchetti ESP potrebbero colpire percorsi lenti sulla rete, con prestazioni di throughput gravemente ridotte rispetto alle connessioni TCP o UDP.
L'Internet Engineering Task Force (IETF) consiglia di consentire IPsec tramite i firewall utilizzati dai servizi di accesso a internet per i consumatori. Ad esempio, consulta la sezione 3.2.4 dell'RFC 6092. I pacchetti ESP possono essere consentiti in modo sicuro attraverso i firewall in entrambe le direzioni perché se un dispositivo riceve un pacchetto ESP che non fa parte di un'associazione di sicurezza esistente, il dispositivo lo elimina. Di conseguenza, il dispositivo non deve inviare pacchetti keepalive per mantenere la connettività VPN, il che consente di risparmiare la durata della batteria. Consigliamo alle reti di consentire sempre i pacchetti ESP ai dispositivi o di interrompere le sessioni ESP solo dopo lunghi periodi di inattività (ad esempio, 30 minuti).
Consigliamo agli operatori di rete di supportare i pacchetti di protocollo ESP (pacchetti IPv6 con un'intestazione successiva di 50) sulle loro reti e di inoltrarli nell'hardware alla velocità di linea. In questo modo, le soluzioni VPN non riscontrano problemi di connettività e offrono prestazioni paragonabili alle connessioni UDP o TCP.
Imposta timeout NAT e firewall stateful sufficienti
Per mantenere l'affidabilità della connessione, una soluzione VPN deve mantenere una connessione a lunga durata al server VPN che fornisce connettività in uscita e in entrata (ad esempio, per ricevere notifiche push in entrata, messaggi di chat e chiamate audio o video). La maggior parte delle app VPN IPsec utilizza ESP incapsulato in pacchetti UDP IPv4 con porta di destinazione 4500, come descritto in RFC 3948.
Per mantenere questa connessione, il dispositivo deve inviare periodicamente pacchetti al server. Questi pacchetti devono essere inviati con una frequenza superiore ai timeout NAT e firewall imposti dall'operatore di rete. I keepalive frequenti consumano molta energia sul lato client e hanno un impatto significativo sulla durata della batteria. Generano inoltre un traffico di segnalazione sostanziale sulla rete, anche se il dispositivo è altrimenti inattivo.
Consigliamo agli operatori di aumentare i timeout NAT e del firewall stateful a un valore sufficientemente elevato per evitare un impatto sulla batteria. Il timeout consigliato per l'incapsulamento UDP IPsec (porta 4500) è di almeno 600 secondi.
Nelle reti mobili, i timeout NAT UDP vengono spesso mantenuti bassi perché la scarsità di indirizzi IPv4 impone fattori di riutilizzo delle porte elevati. Tuttavia, quando viene stabilita una VPN, la rete del dispositivo non deve supportare connessioni TCP di lunga durata, ad esempio quelle utilizzate per la distribuzione delle notifiche in entrata. Pertanto, il numero di connessioni di lunga durata che la rete deve supportare è uguale o inferiore quando una VPN è in esecuzione rispetto a quando non è in esecuzione.