La stessa identità IKEv2 su due iPhone? Si collegano a turno
Un profilo copiato su due dispositivi dà al gateway un solo peer invece di due. Osservate la tabella dei peer riempirsi e svuotarsi, poi assegnate un valore per dispositivo.
Due telefoni, un profilo e uno schema che sembra soprannaturale finché qualcuno non guarda il gateway. Un dispositivo tiene il tunnel, il secondo si connette e il primo lo perde in pochi secondi. Il primo si riconnette e il secondo cade. Si incolpano il risparmio energetico, il roaming Wi-Fi e il NAT dell’operatore, mentre la causa reale sta in un campo di testo copiato insieme a tutto il resto. IKEv2 identifica un peer tramite un nome, e entrambi i telefoni presentano lo stesso.
L’identità è la chiave sotto cui il server ti conserva
All’interno di uno scambio IKEv2 ogni parte dichiara chi è: l’iniziatore invia un identificatore locale, il risponditore risponde con il proprio, e il risponditore verifica anche l’identità dichiarata dall’iniziatore rispetto alla policy. Il gateway conserva il proprio stato per identità anziché per dispositivo, perché un dispositivo non è qualcosa che può vedere. Due telefoni con un solo identificatore arrivano quindi come un solo peer, e il secondo scambio deve sovrascrivere il primo. Il problema compare solo mentre entrambi sono in uso, ed è per questo che un test con un solo telefono non lo riproduce mai.
Niente di tutto ciò è un difetto del client. Il client ha inviato esattamente ciò che il profilo gli diceva di inviare.
Che aspetto ha la collisione dal gateway
Guardate l’elenco dei peer mentre entrambi i telefoni sono svegli e in uso. Una collisione mostra una sola voce il cui indirizzo cambia man mano che i telefoni si alternano, e il contatore delle sessioni attive non arriva mai a due. L’abbattimento su richiesta ha un aspetto diverso, e distinguerli richiede un’osservazione anziché una teoria.
| Observation | Shared identity | Idle teardown |
|---|---|---|
| Peer entries while both are awake | One, with a changing address | One per phone, or none |
| What triggers the drop | The other device connecting | Time without traffic |
| What restores it | The other device disconnecting | Any app needing the tunnel |
Annotate entrambi gli eventi con marche temporali mentre accade. Una caduta che coincide con la connessione dell’altro apparecchio punta all’identificatore, e una caduta che arriva un intervallo di inattività dopo l’ultimo pacchetto punta a un timer.
Da dove vengono i duplicati
Esportare una configurazione funzionante e modificare solo l’indirizzo del server produce un secondo file con l’identità del primo ancora dentro. È il percorso abituale verso questo guasto, e di solito accade durante l’onboarding frettoloso di un piccolo gruppo.
I nomi dei campi rendono facile trascurarlo. L’identificatore remoto nomina il gateway che il telefono si aspetta, e copiarlo è corretto. L’identificatore locale nomina questo apparecchio davanti al gateway, e copiare quel valore è l’intero problema.
Assegnate un valore per dispositivo
Usate qualcosa di unico per l’apparecchio e stabile per tutta la sua vita, come l’identificatore del dispositivo dall’inventario o un valore che il vostro sistema di gestione genera per ogni registrazione. Un’etichetta di reparto, un nome di account di servizio condiviso o l’indirizzo email dell’utente entrano tutti in collisione non appena quella persona ha un secondo dispositivo.
Generate il payload per dispositivo invece di distribuire un solo file. Registrate quale valore appartiene a quale apparecchio, così una sostituzione non ripristina il vecchio profilo e non rimanda il nuovo telefono direttamente nella stessa collisione.
Controllate anche il lato server. Un gateway che mappa l’identità su un indirizzo tunnel fisso può comunque entrare in collisione quando due identificatori diversi ricevono la stessa assegnazione, quindi confermate che il pool abbia spazio e che le assegnazioni non siano fissate per utente.
Verificate con entrambi i telefoni svegli
Collegate il primo, raggiungete una risorsa privata, poi collegate il secondo e lasciate entrambi inattivi per un minuto. Entrambe le sessioni dovrebbero persistere e l’elenco dei peer dovrebbe mostrare due identità. Poi bloccate e sbloccate ogni telefono per confermare che il caso di inattività si comporti ancora correttamente.
Se una singola sessione cade ancora una volta al giorno senza che nulla altro si connetta, l’identità non è più il sospetto. Passate ai timer di inattività e ai limiti di sessione del server invece di modificare di nuovo il profilo.