De unit is rood, de interface bestaat en de tunnel werkt grotendeels, en dat is de meest verwarrende combinatie die er is. De opzet is een reeks: eerst wordt de interface gemaakt, daarna volgen adressen, routes, resolver-instellingen en eventuele hook-opdrachten. Een fout bij de vierde stap laat de eerste drie staan, dus de interfacenaam is bewijs dat het opstarten begon, niet dat het klaar was. Eén extra gegeven had de verwarring bespaard: de stap die mislukte.

Gedeeltelijke toestand is de normale fout

Dat gedrag is te verwachten in plaats van het als corruptie te behandelen. De interface is het goedkoopste onderdeel van de opzet en het makkelijkst achter te laten, en het is ook het onderdeel dat de machine halfwerkend laat lijken.

Wat er nog niet is, is alles wat na de mislukte stap kwam. Als de fout in de resolver-fase zat, zijn adressen en routes er wel en DNS niet. Was het een route, dan heeft de tunnel een adres en geen pad erdoorheen.

Het gevolg is een machine die sommige tests beantwoordt en andere niet haalt, waardoor mensen concluderen dat de dienst flikkert terwijl hij nooit succesvol is gestart. Een dienst die nooit klaarkwam, kan niet flikkeren. Hij kan alleen steeds opnieuw om dezelfde reden mislukken.

Vind de eerste mislukte stap

Lees het journaal van de unit in plaats van alleen de huidige status, en lees het vanaf het begin van de mislukte run. De laatste regel geeft je de exitcode; de eerste fout zegt wat je moet repareren.

Deze opdrachten drukken de status van de unit, het opstartjournaal voor die unit en de live-status van de tunnel af:

systemctl status wg-quick@wg0
journalctl -u wg-quick@wg0 -b --no-pager | tail -40
wg show
ip -4 addr show dev wg0

Een resolver-fout, een route die al bestaat, een hook die met een code anders dan nul eindigde en een fout bij het inlezen van de configuratie verschijnen allemaal in dat venster, en elk noemt zijn eigen component. Alleen uit de interfacestatus gissen negeert al die informatie.

Drie voorwaarden die de reparatie bepalen

Bepaal of je opruimt, ter plaatse repareert of de unit uit het opstartpad haalt, en bepaal dat voordat je iets typt.

Als de interface stuk is maar de configuratie klopt, ruim op en begin opnieuw. Als de configuratie fout is, herstel die en ruim toch eerst op, want een tweede beheerder over een gedeeltelijke toestand starten levert twee eigenaren voor één interface op. Als de fout een ontbrekend systeemonderdeel is, zoals een resolver-hulpje dat de machine niet heeft, installeer of verwijder de afhankelijkheid dan bewust in plaats van de unit te bewerken tot hij ophoudt te klagen.

Die drie gevallen dekken het meeste van wat op een mysterieuze rode unit lijkt. De onderscheidende vraag is of dezelfde fout zou optreden op een machine met een schone toestand, en het antwoord komt meestal uit de eerste foutregel.

Ruim op voordat je het opnieuw probeert

Een nieuwe poging over bestaande toestand kan om een nieuwe reden mislukken en de oorspronkelijke verbergen. Haal de interface naar beneden met hetzelfde gereedschap dat hem heeft gemaakt, en bevestig daarna dat er niets is overgebleven.

Verwijder geen ongerelateerde interfaces en reset de netwerkstack van de host niet. Beide zijn grote acties om een klein object te repareren, en ze veranderen één mislukte tunnel in een machine waarvan andere verbindingen opnieuw moeten worden opgezet. De juiste omvang is één interface en de unit die hem bezit. Alles breder vereist een reden die vooraf is opgeschreven.

Bewijs de tunnel, niet de unit

Een groene unit betekent dat de opstartreeks met nul eindigde. Het betekent niet dat een pakket de andere kant heeft bereikt, en niet dat de resolver is ingesteld zoals je bedoelde.

Stuur een verzoek door de tunnel en lees de toestand die het heeft opgeleverd:

systemctl is-active wg-quick@wg0
wg show wg0 latest-handshakes
ping -c 3 10.63.0.1
resolvectl query internal.example.net

Een handdruk zonder antwoord vertelt je nog steeds dat de tunnel is gevormd en de andere kant stil is, wat een ander probleem is dan een unit die nooit is gestart. Houd de status van de unit, de handdruk en het resultaat van het verzoek in één record, want ze falen onafhankelijk en alleen de combinatie beschrijft het systeem.

Gerelateerde artikelen