Je geeft een nieuw hostcertificaat uit met een ander overlay-adres, kopieert het over het oude bestand, stuurt de herlaadbewerking, en de host blijft antwoorden op het adres dat hij eerder had. De reflex is aannemen dat het herladen mislukte of dat het verkeerde bestand is gelezen. Meestal gebeurde geen van beide: het draaiende proces hield bewust de identiteit die het al had, omdat de vervanging iets wijzigde wat een herlaadbewerking niet kan toepassen.

De ondersteuning voor PKI-herladen in Nebula is met die grens gedocumenteerd, en dat is makkelijk te missen wanneer dezelfde documentatie laat zien dat herladen voor andere wijzigingen wel werkt.

Wat een herlaadbewerking werkelijk opnieuw leest

Een hostcertificaat is niet zomaar een referentie zoals een SSH-sleutel. Het draagt het overlay-adres, de hostnaam, de groepslidmaatschappen en een geldigheidsvenster, en dat alles is door de handtekening van de CA met elkaar verbonden. De daemon gebruikt die ondertekende inhoud om te bepalen hoe hij zich presenteert en welke regels op hem van toepassing zijn.

Herladen laat het proces een vernieuwde referentie oppakken zonder zijn tunnels te laten vallen, wat waardevol is voor routinematige rotatie: hetzelfde adres, dezelfde naam, dezelfde groepen, latere vervaldatum. De beperking is dat de identiteit gelijk moet blijven. Wijzig je het overlay-adres, dan kan het herlaadpad dat niet toepassen, omdat het adres deel uitmaakt van wat het draaiende exemplaar al is aangegaan.

Het gedrag dat je zag is dus de gedocumenteerde grens die zijn werk doet, geen stille fout. Het bestand op schijf is nieuw; de identiteit in het geheugen is oud; het proces heeft geen ondersteunde manier om dat verschil zonder herstart te verzoenen.

Adres, naam en groepen zijn één identiteit

Het helpt om het certificaat als één record te zien in plaats van als een set velden die je onafhankelijk kunt bewerken. Het adres verplaatsen is niet zoals een voorkeur wijzigen, omdat het adres voorkomt in de peerconfiguraties van andere hosts, in servicebindingen en in beleid dat tegen de identiteit is geschreven.

FieldWhat changes when you replace it
Overlay addressPeers that pinned the old address, service bindings, and any rule written against it
Host nameName-based policy and the identities other hosts expect to see
GroupsWhich access rules match, even if the address stays identical
Validity windowNothing structural, which is why renewal reloads cleanly

Groepen verdienen een eigen regel, omdat ze een stillere versie van dezelfde verwarring veroorzaken. Een host die zijn adres houdt maar van groep wisselt, kan na een herstart andere diensten bereiken, en een test die alleen het oude adres pingt, ziet er volkomen gezond uit terwijl de toegangsbeslissingen eronder zijn veranderd. Controleer één door een regel gedekte dienst, niet alleen bereikbaarheid. Dat is het verschil tussen de tunnel bevestigen en het beleid bevestigen.

Vergelijk het geladen certificaat met de vervanging

Voordat je aanneemt dat de daemon het bestand heeft genegeerd, lees beide. Druk het certificaat af dat je wilt laden en bevestig de velden waarvan je denkt dat je ze hebt gewijzigd, en bevestig dan dat de draaiende configuratie naar dat pad wijst en niet naar een kopie elders.

nebula-cert print -path /etc/nebula/host.crt
systemctl status nebula
ps -o args= -p $(pgrep -f 'nebula -config' | head -1)

De procesargumenten zijn belangrijker dan mensen verwachten. Een unit die -config /etc/nebula/config.yml doorgeeft, leest de pki.cert-vermelding van dat bestand, en een certificaat dat in een tijdelijke map is geïnstalleerd, verandert niets. Controleer het pad in de draaiende opdrachtregel, niet het pad in de documentatie die je hebt gevolgd. Als beide verschillen, heb je het probleem gevonden zonder het certificaat aan te raken.

Als het nieuwe certificaat een ander adres heeft en het proces het oude heeft gehouden, heb je nu een verklaring in plaats van een raadsel. Herstart het als dat acceptabel is, en behandel de adreswijziging als een geplande netwerkwijziging en niet als een toevallige.

Een adreswijziging is een netwerkwijziging

Plan het zoals je het verplaatsen van een machine zou plannen. Andere hosts hebben het oude adres misschien in hun configuratie vastgezet, diensten binden er misschien expliciet aan, en firewallregels zijn er misschien tegen geschreven. Het certificaat wijzigen verplaatst de host, en de host verplaatsen maakt aannames elders ongeldig.

Houd een tweede beheerpad beschikbaar terwijl je dit doet, want de overlayverbinding is misschien juist degene die je onderbreekt. Dit over de tunnel doen die je op het punt staat te breken, is de klassieke manier om van een wijziging van vijf minuten een bezoek ter plaatse te maken.

Of een herstart acceptabel is, hangt af van wat de host doet, en dat is een planningsvraag, geen technische. Wat niet optioneel is, is de herstartvereiste erkennen in plaats van de herlaadbewerking een vijfde keer te sturen.

Trek de oude referentie afzonderlijk in

Een vervanging op één machine installeren laat elke peer nog steeds vertrouwen op de referentie die hij al kent. Als de reden voor de wijziging een compromis was, moet de oude identiteit via de vertrouwens- of blokkeerlijstprocedure worden ingetrokken, zodat peers hem echt afwijzen.

Dat is een aparte stap met zijn eigen verificatie: bevestig vanaf een andere host dat de oude identiteit niet meer werkt, in plaats van aan te nemen dat het nieuwe bestand het werk deed. De Nebula-documentatie over PKI-configuratie behandelt de herlaadbare instellingen en de hier beschreven adresbeperking, en het loont om die volledig te lezen voordat je iets productieks roteert.

Gerelateerde artikelen