Je voegt een peer toe aan /etc/wireguard/wg0.conf, voert systemctl restart wg-quick@wg0 uit, en de peer is verdwenen uit het bestand als je weer kijkt. Niets heeft iets beschadigd. Een herstart is een stop gevolgd door een start, en de stopstap kan de huidige runtimestatus terugschrijven over het bestand dat je net hebt bewerkt. De instelling die daarvoor verantwoordelijk is, staat in hetzelfde bestand dat je bewerkte, en dat maakt de lus zo verwarrend de eerste keer dat je ermee te maken krijgt.

Twee toestanden, één bestand en een opslag bij het afsluiten

WireGuards runtimestatus en een wg-quick-configuratiebestand zijn verwant maar verschillend. Het bestand is invoer: wg-quick leest het, maakt de interface aan, stelt adressen en routes in en configureert peers. Het kernelapparaat is het levende object, en wijzigingen op laag niveau met wg schrijven zichzelf nooit terug.

Behalve in één richting. Wanneer SaveConfig = true in de interfacesectie staat, slaat wg-quick de levende configuratie op in het bestand als onderdeel van het neerhalen van de interface. De wg-quick-handleiding waarschuwt precies hiervoor: wijzigingen in het bestand terwijl de interface actief is, kunnen worden overschreven wanneer die wordt verwijderd. Het is een opslag bij het afsluiten, geen achtergrondtimer, dus het gebeurt alleen wanneer iets de interface stopt.

ActionWhat it writesWhen it surprises you
wg set on a live interfaceKernel state onlyAfter reboot, when the file was never updated
wg-quick down with SaveConfigLive state into the fileRight after you edited the file
wg syncconfKernel state onlyNever; it does not touch the file
wg-quick upKernel state from the fileIf the file is stale, you get the old tunnel

Lees de tabel als een waarschuwing over volgorde. Elk onbedoeld verlies in dit gebied komt van een bewerking die vóór een opslag plaatsvond in plaats van erna.

Stop eerst, bewerk daarna, start als laatste

Als het bestand je bron van waarheid is, maak het bestand dan gezaghebbend door constructie in plaats van door hoop. Haal de interface neer, bevestig dat die weg is, bewerk dan en breng hem daarna weer omhoog. De regel is eenvoudig: er bestaat geen bewerking zolang een opslag nog kan draaien.

sudo cp -a /etc/wireguard/wg0.conf /root/wg0.conf.$(date +%F-%H%M)
sudo wg-quick down wg0
ls /sys/class/net/wg0 2>/dev/null || echo "interface is gone"
sudoedit /etc/wireguard/wg0.conf
sudo wg-quick up wg0

De back-uplijn is geen ceremonie. Als de tunnel je manier is om deze machine te bereiken, kan de neerhaalstap je sessie beëindigen, en een kopie op schijf plus een console of een out-of-band-pad is de enige rollback die werkt. Controleer die tweede regel voordat je erop vertrouwt: een verouderde interfacenaam in een script dat stil faalt, is hoe mensen een bestand bewerken dat nog leeft.

SaveConfig = false instellen vóór een normale neerhaal is de andere geaccepteerde route, en dat moet gebeuren in het bestand dat wg-quick echt leest. Het voorkomt die ene automatische opslag. Het zorgt er niet voor dat een apart NetworkManager-profiel, een router-export of een container-entrypoint je bewerkingen herlaadt, want die beheerders lezen dit bestand helemaal niet.

Pas peer-wijzigingen toe zonder de interface af te scheuren

Niet elke bewerking vereist een onderbreking. Wijzigingen op peerniveau kunnen op een draaiende interface worden toegepast door het bestand om te zetten in een configuratie en die te synchroniseren, wat de neerhaalstap volledig vermijdt en daarmee de opslag vermijdt:

sudo wg syncconf wg0 <(sudo wg-quick strip wg0)
sudo wg show wg0 peers
sudo wg show wg0 latest-handshakes

De strip-stap is belangrijk. Hij drukt het bestand af met de sleutels die alleen bij wg-quick horen verwijderd, zodat adressen, DNS en routeringsrichtlijnen niet bij een hulpmiddel terechtkomen dat ze niet begrijpt. De synchronisatie past daarna peers en sleutels toe op het levende apparaat zonder de interface opnieuw aan te maken, zodat bestaande sessies en routes overleven.

Wees precies over de grenzen. Peers synchroniseren verandert het interfaceadres, de routes die wg-quick heeft toegevoegd of de resolverconfiguratie niet, omdat niets daarvan bij het WireGuard-apparaat hoort. Een subnet toevoegen aan AllowedIPs en verwachten dat de kernel het routeert, is de klassieke verkeerde lezing; de route moet door wg-quick bij het omhoogbrengen of door jou worden toegevoegd.

Controleer wie de interface bezit voordat je iets bewerkt

Op een desktop of een server die door een configuratiesysteem wordt beheerd, kan het bestand een uitvoer zijn in plaats van een invoer. Een NetworkManager-verbinding, een door een router gegenereerd profiel of een container-startscript kunnen allemaal dezelfde interfacenaam bezitten, en in dat geval bewerkt een foutloze wg-quick-reeks toch het verkeerde artefact.

systemctl status wg-quick@wg0 --no-pager
nmcli connection show | grep -i wireguard
sudo wg showconf wg0 | head -n 5

Het derde commando drukt de levende configuratie af in hetzelfde formaat als het bestand, inclusief de privésleutel, wat handig is voor vergelijking en gevaarlijk in een ticket. Redigeer hem voordat je plakt; een privésleutel in een supportthread is een permanente compromittering, geen typefout.

Als de service-eenheid inactief is maar de interface bestaat, heeft iets anders hem aangemaakt en is het bestand niet gezaghebbend. Die ene observatie bespaart een uur bewerken van een bestand dat niets leest.

Verifieer de volgende herstart en houd dan een rollback

De test die de oplossing echt bewijst, is een tweede herstart, want dat is de reeks die de eerste keer faalde. Bevestig dat de peer het overleeft en dat de levende configuratie nog steeds overeenkomt met wat op schijf staat:

sudo systemctl restart wg-quick@wg0
sudo wg show wg0 latest-handshakes
sudo grep -c '^\[Peer\]' /etc/wireguard/wg0.conf

Voer de herstart twee keer uit. Eén schone doorgang kan geluk zijn: de eerste herstart kan een runtimewijziging verbruiken die nog niet was opgeslagen, dus de tweede is degene die je vertelt dat het bestand en de runtime aan het einde van de eerste overeenkwamen.

Bewaar de back-up vanaf het begin van het proces tot je de dubbele herstart hebt gedaan, en verwijder hem daarna of verplaats hem buiten de configuratiemap. Een verdwaalde wg0.conf.bak naast het echte bestand is onschadelijk voor wg-quick en verwarrend voor de volgende persoon, die uiteindelijk de verkeerde bewerkt.

Gerelateerde artikelen