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.

ObservationShared identityIdle teardown
Peer entries while both are awakeOne, with a changing addressOne per phone, or none
What triggers the dropThe other device connectingTime without traffic
What restores itThe other device disconnectingAny 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.

Relaterede artikler