Samme IKEv2-identitet på to iPhones? De skiftes til at forbinde
Én profil kopieret til to enheder giver gatewayen én peer i stedet for to. Se peer-tabellen fyldes og tømmes, og udsted derefter en værdi pr. enhed.
To telefoner, én profil og et mønster, der ser overnaturligt ud, indtil nogen ser på gatewayen. Én enhed holder tunnelen, den anden forbinder, og den første mister den inden for sekunder. Den første genopretter forbindelsen, og den anden falder. Batteribesparelse, Wi-Fi-roaming og operatørens NAT får skylden, mens den egentlige årsag sidder i et tekstfelt, der blev kopieret med alt andet. IKEv2 identificerer en peer ved et navn, og begge telefoner fremviser det samme.
Identiteten er den nøgle, serveren gemmer dig under
Inde i en IKEv2-udveksling angiver hver side, hvem den er: initiativtageren sender en lokal identifikator, respondereren svarer med sin egen, og respondereren kontrollerer også initiativtagerens påståede identitet mod politikken. Gatewayen holder sin tilstand pr. identitet i stedet for pr. enhed, fordi en enhed ikke er noget, den kan se. To telefoner med én identifikator ankommer derfor som én peer, og den anden udveksling må overskrive den første. Problemet viser sig kun, mens begge er i brug, og derfor genskaber en test med én telefon det aldrig.
Intet af dette er en fejl i klienten. Klienten sendte præcis det, profilen fortalte den at sende.
Sådan ser kollisionen ud fra gatewayen
Kig på peer-listen, mens begge telefoner er vågne og i brug. En kollision viser én post, hvis adresse ændrer sig, efterhånden som telefonerne skifter, og tælleren for aktive sessioner når aldrig to. Nedrivning efter behov ser anderledes ud, og at skelne dem kræver én observation frem for en teori.
| 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 |
Skriv begge hændelser ned med tidsstempler, mens det sker. Et udfald, der passer med den anden håndsæts forbindelse, peger på identifikatoren, og et udfald, der kommer én inaktiv periode efter den sidste pakke, peger på en timer.
Hvor dubletterne kommer fra
At eksportere én fungerende konfiguration og kun redigere serveradressen giver en anden fil, hvor den første fils identitet stadig er indeni. Det er den sædvanlige vej til denne fejl, og den sker normalt, når en lille gruppe onboardes i hast.
Feltnavnene gør det nemt at overse. Den eksterne identifikator navngiver den gateway, telefonen forventer, og at kopiere den er korrekt. Den lokale identifikator navngiver denne håndsæt over for gatewayen, og at kopiere den værdi er hele problemet.
Udsted en værdi pr. enhed
Brug noget unikt for håndsættet og stabilt i hele dets levetid, såsom enhedsidentifikatoren fra inventaret eller en værdi, dit styringssystem genererer pr. tilmelding. Et afdelingsmærke, et delt tjenestekontonavn eller brugerens e-mailadresse kolliderer alle, så snart den person har en anden enhed.
Generér nyttelasten pr. enhed i stedet for at distribuere én fil. Notér, hvilken værdi der hører til hvilket håndsæt, så en udskiftning ikke gendanner den gamle profil og sender den nye telefon direkte tilbage i samme kollision.
Kontrollér også serversiden. En gateway, der mapper identiteten til en fast tunneladresse, kan stadig kollidere, når to forskellige identifikatorer får samme tildeling, så bekræft, at puljen har plads, og at tildelinger ikke er låst pr. bruger.
Bekræft med begge telefoner vågne
Forbind den første, nå en privat ressource, og forbind derefter den anden, og lad begge være inaktive i et minut. Begge sessioner bør bestå, og peer-listen bør vise to identiteter. Lås og oplås derefter hver telefon for at bekræfte, at det inaktive tilfælde stadig opfører sig korrekt.
Hvis en enkelt session stadig falder én gang om dagen, uden at noget andet forbinder, er identiteten ikke længere den mistænkte. Gå videre til inaktive timere og serverens sessionsgrænser i stedet for at redigere profilen igen.