De identiteit verdwijnt uit de draaiende interface en de wijziging lijkt klaar. Nadat de dienst opnieuw start, is hij er weer, wat leest alsof WireGuard het commando negeert. Wat er werkelijk gebeurde, is eenvoudiger: de opstartconfiguratie bevat de peer nog steeds.

Twee toestanden houden die lijst. Intrekking is pas echt wanneer beide hem kwijtraken.

Wat wg set werkelijk verandert

Het commando wg set wg0 peer <public-key> remove bewerkt de draaiende interface in de kernel. Het schrijft niets naar de schijf. Het configuratiebestand, het NetworkManager-profiel of de opgeslagen status van de router blijven onaangeroerd. Dat is het ontwerp, geen fout.

Die scheiding is bewust, omdat het gereedschap geen idee heeft wie de interface bezit. Een commando tijdens runtime moet veilig zijn tegen een interface die door iets anders wordt beheerd. Het kan niet raden waar de duurzame kopie woont. Het gevolg is makkelijk te zeggen: een verwijdering tijdens runtime is door zijn opzet tijdelijk.

Dus komt de peer terug bij de volgende herstart, en hij komt terug met zijn oorspronkelijke toegestane prefixen. Alles wat erdoor wordt gerouteerd, wordt ook opnieuw aangemaakt. Een zogenaamd ingetrokken identiteit kan daardoor na een herlaad zijn vroegere bestemmingen bereiken. Niets in de uitvoer tijdens runtime had iemand gewaarschuwd.

Vind de schrijver voordat je een bestand bewerkt

De interface heeft een eigenaar. Dat kan wg-quick zijn die een bestand leest, NetworkManager die een profiel toepast, de eigen interfaceconfiguratie van de router, of een container-entrypoint dat de interface bij het starten opnieuw aanmaakt. Het bewerken van een bestand dat de eigenaar nooit leest, levert helemaal geen blijvende wijziging op.

Begin bij de draaiende interface en bepaal de publieke sleutels, want namen en adressen zijn zwakkere identificaties dan de sleutel zelf. Vergelijk die lijst vervolgens met de opgeslagen configuratie die de eigenaar echt leest.

wg show wg0 peers
wg show wg0 allowed-ips
systemctl status wg-quick@wg0 --no-pager
ls -l /etc/wireguard

Een levende interface waarvan de peer-lijst en de bestandsinhoud niet overeenkomen, is de hele diagnose. De opgeslagen configuratie wint bij het opstarten, en de runtime-toestand verliest. Vergelijk ze voordat je een van beide verandert.

De SaveConfig-valkuil

wg-quick voegt een plooi toe die mensen vangt die bestanden met de hand bewerken. Met SaveConfig ingeschakeld schrijft het gedocumenteerde afsluitgedrag de huidige runtime-toestand over het configuratiebestand.

Dat keert de gebruikelijke richting van persistentie om. Je verwijdert een peer uit het bestand, en dan stopt de dienst. De draaiende toestand wordt over je bewerking heen geschreven en herstelt de peer die je net hebt verwijderd.

De volgorde is dus belangrijk: bewerk het bestand terwijl de interface omlaag is, of schakel SaveConfig uit vóór de bewerking, breng de interface daarna weer omhoog en bevestig wat er is geladen. Een handmatige bewerking terwijl de interface omhoog is, is een race met de schrijfaktie bij het afsluiten.

Verander beide toestanden en herlaad

Verwijder de peer tijdens runtime op sleutel. Verwijder in de opgeslagen configuratie hetzelfde blok via de ondersteunde bewerking van de eigenaar, in plaats van eromheen te bewerken.

Loop daarna na wat de peer droeg. Een gerouteerd netwerk dat bij de ingetrokken identiteit hoorde, hoort bewust opnieuw te worden toegewezen of verwijderd, niet stilzwijgend geërfd door de peer die als volgende wordt bewerkt.

Houd een herstelpad open als de gateway ook je beheerderstoegang draagt. Een herstart die de verkeerde peer verwijdert, is een zelf veroorzaakte storing. Hetzelfde geldt voor een herstart die de verkeerde route verwijdert.

Hoe een geslaagde test eruitziet

Herlaad of herstart de dienst en lees daarna de peer-lijst opnieuw. De oude sleutel moet ontbreken, en de peers die je wilde behouden moeten nog aanwezig zijn en werken.

wg show wg0 peers
wg show wg0 allowed-ips
sudo wg-quick down wg0 && sudo wg-quick up wg0
wg show wg0 peers

Waar de situatie het toelaat, bevestig je dat de oude identiteit haar vroegere bronnen niet meer bereikt. Een nette interfacelijst vóór een herstart is de helft van een test. De andere helft is wat de identiteit daarna nog kan doen.

Als een beheerder de peer blijft herstellen, stop dan met het herhalen van de verwijdering op laag niveau. Repareer de inventaris die die schrijver leest, want tot dan is elke herstart een nieuwe uitnodiging voor de identiteit om weer op te duiken.

Gerelateerde artikelen