Twee apparaten, één OpenVPN-certificaat: de herverbindingslus
Een tunnel die elke halve minuut herstart, is meestal twee apparaten met hetzelfde clientcertificaat. Loop de log, de splitsing en de uitfasering na.
Een tunnel die opkomt en dan elke halve minuut herstart, is meestal geen cipher- of MTU-probleem. Het is één identiteit die twee keer wordt gebruikt. De server ziet een bekende common name, neemt de nieuwe sessie als de nieuwste, en het oudere apparaat ontdekt dat het is vervangen. Vanaf de clientkant lijkt dat op een inactiviteitstime-out en een herstart, en daarom begint het onderzoek zo vaak op de verkeerde plek.
Begin bij het herstartinterval
Het interval is een aanwijzing vóór al het andere. Een gelijkmatig ritme dat bij het ping-restart-venster past, wijst op een vervangen sessie en niet op een falend pad, want padstoringen zijn zelden zo regelmatig. Noteer het exacte gat tussen herstarts en de redenregel in de clientlog. Een time-out gevolgd door een herstart vertelt een ander verhaal dan een mislukte handshake.
Controleer wanneer de herstarts begonnen ten opzichte van een tweede apparaat. Een nieuwe laptop, een telefoon of een profiel dat naar een reservemachine is gekopieerd zijn de gebruikelijke triggers, en het moment komt meestal overeen met de dag waarop iemand het instelde.
Schrijf het interval en de reden op. Beide zijn bewijs, en beide zijn goedkoop te verzamelen.
Lees wat de server over de tweede login zei
Op een server die u beheert, noemt de log de common name en toont een tweede verbinding die binnenkomt. Zonder duplicate-cn vervangt die aankomst de bestaande sessie voor dezelfde naam, en het bericht zegt dat meestal ronduit. Met duplicate-cn bestaan beide sessies naast elkaar en het symptoom verandert: de clients blijven overeind maar delen één set instellingen per client en één intrekkingsbeslissing. Lees de twee vermeldingen samen, want de vervanging is alleen in volgorde zichtbaar.
Bij een gehoste dienst hebt u misschien helemaal geen serverlog. De aanwijzing is dan timing: een stabiele tunnel die wegvalt telkens wanneer een andere machine verbindt, met niets in de clientlog buiten de time-out.
Vergelijk de certificaat- en sleutelblokken in beide profielen, niet alleen de externe hostnaam. Gekopieerde profielen verschillen meestal alleen in de bestandsnaam.
Splits de identiteit aan de serverkant
Geef één certificaat per apparaat uit via de CA die voor deze server tekent. Met Easy-RSA betekent dat een aparte clientnaam voor elk apparaat, en het profiel wordt dan uit dat certificaat en zijn sleutel gebouwd. De common name wordt de identiteit van het apparaat, en dat is precies wat de server miste. Noem ze naar het apparaat in plaats van de persoon, zodat een vervanging een nieuwe naam oplevert.
De gedeelde besturingskanaalsleutel is iets anders. tls-crypt of tls-auth beschermt het besturingskanaal voor elke client en is bedoeld om gedeeld te worden. Hij is geen clientidentiteit, en hem vervangen lost een dubbel certificaat niet op.
Houd het certificaat, de sleutel en elk clientconfiguratiebestand onder dezelfde common name, anders breekt de koppeling bij de volgende verbinding. Een mismatch daar levert een client op die zich authenticeert en daarna niets ontvangt.
Houd adressen en instellingen op één lijn na de splitsing
Vaste adressen introduceren een tweede manier om te botsen. Als de server ze via ifconfig-pool-persist of een bestand per client toekent, wijzen die records nog steeds naar de oude naam. Twee apparaten kunnen hetzelfde tunneladres krijgen, zelfs nadat de certificaten zijn gescheiden, en die storing ziet er anders uit dan de oorspronkelijke lus.
Werk de koppeling bij op hetzelfde moment als het certificaat, verbind daarna beide apparaten opnieuw en vergelijk hun toegewezen adressen. Een dubbel adres openbaart zich als wisselend verlies in plaats van een schone herverbinding.
Stuur instellingen die per apparaat moeten verschillen via het bestand van dat apparaat zelf, niet via een gedeelde sjabloon. Een gedeelde sjabloon maakt ook de volgende duplicaat lastiger te zien.
Faseer de oude identiteit netjes uit
Trek het certificaat in wanneer hardware wordt uitgefaseerd of ontbreekt, in plaats van het profiel van de oude machine te verwijderen. Intrekking levert een nieuwe CRL op, en de server heeft dat bestand nodig waar crl-verify wijst. Met die richtlijn op zijn plaats laat een ontbrekende of onleesbare CRL de server elke client weigeren, dus test één bekend account na elke update.
Houd een inventaris bij die elk certificaat aan een persoon of apparaat koppelt, met uitgifte- en intrekkingsdata. Die inventaris beantwoordt wie nog toegang heeft zonder bestandsnamen te lezen, en houdt het volgende gekopieerde profiel ervan af de lus opnieuw te starten.