Enota je rdeča, vmesnik obstaja in tunel večinoma deluje, kar je najbolj zmedljiva kombinacija, kar jih je. Nastavitev je zaporedje: najprej se ustvari vmesnik, nato sledijo naslovi, poti, nastavitve razreševalnika in morebitni ukazi hook. Spodletelost na četrtem koraku pusti prve tri na mestu, zato je ime vmesnika dokaz, da se je zagon začel, ne pa da se je končal. Ena dodatna podrobnost bi prihranila zmedo: korak, ki je spodletel.

Delno stanje je običajna spodletelost

Tega vedenja se je treba nadejati, ne pa ga obravnavati kot okvaro. Vmesnik je najcenejši del nastavitve in ga je najlažje pustiti za seboj, prav on pa daje stroju videz napol delujočega.

Česar še ni, je vse, kar je prišlo po spodletelem koraku. Če je spodletelost nastala v fazi razreševalnika, so naslovi in poti tam, DNS pa ne. Če je šlo za pot, ima tunel naslov in nobene poti skozenj.

Posledica je stroj, ki odgovarja na nekatere preizkuse in na drugih spodleti, zato ljudje sklepajo, da storitev utripa, čeprav se ni nikoli uspešno zagnala. Storitev, ki se ni nikoli končala, ne more utripati. Lahko le znova in znova spodleti iz istega razloga.

Poiščite prvi spodleteli korak

Berite dnevnik enote, ne le trenutnega stanja, in berite ga od začetka spodletelega zagona. Zadnja vrstica vam pove izhodno kodo; prva napaka pove, kaj popraviti.

Ti ukazi izpišejo stanje enote, zagonski dnevnik te enote in živo stanje tunela:

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

Napaka razreševalnika, pot, ki že obstaja, hook, ki se je končal z neničelno kodo, in spodletelost pri razčlenjevanju konfiguracije se vse pojavijo v tem oknu, in vsaka poimenuje svojo komponento. Ugibanje samo iz stanja vmesnika vse te informacije prezre.

Trije pogoji, ki odločijo popravilo

Odločite se, ali čistite, popravljate na mestu ali odstranjujete enoto z zagonske poti, in to odločite, preden kar koli vtipkate.

Če je vmesnik pokvarjen, konfiguracija pa pravilna, počistite in začnite znova. Če je konfiguracija napačna, jo popravite in vseeno najprej počistite, ker zagon drugega upravitelja nad delnim stanjem ustvari dva lastnika enega vmesnika. Če je spodletelost manjkajoča sistemska komponenta, na primer pomočnik razreševalnika, ki ga stroj nima, namerno namestite ali odstranite odvisnost, namesto da bi urejali enoto, dokler se ne preneha pritoževati.

Ti trije primeri pokrijejo večino tega, kar je videti kot skrivnostna rdeča enota. Razločevalno vprašanje je, ali bi do iste spodletelosti prišlo na stroju s čistim stanjem, in odgovor običajno pride iz prve vrstice napake.

Počistite, preden poskusite znova

Nov poskus nad obstoječim stanjem lahko spodleti iz novega razloga in skrije prvotnega. Spustite vmesnik z istim orodjem, ki ga je ustvarilo, in nato potrdite, da ni nič ostalo.

Ne brišite nepovezanih vmesnikov in ne ponastavljajte omrežnega sklada gostitelja. Oboje so veliki posegi za popravilo majhnega predmeta in spremenijo en spodletel tunel v stroj, katerega druge povezave je treba znova vzpostaviti. Pravilen obseg je en vmesnik in enota, ki ga ima v lasti. Kar koli širšega potrebuje razlog, zapisan, preden se zgodi.

Dokažite tunel, ne enote

Zelena enota pomeni, da se je zagonsko zaporedje končalo z ničlo. Ne pomeni, da je paket dosegel drugo stran, in ne, da je bil razreševalnik nastavljen tako, kot ste nameravali.

Pošljite zahtevo skozi tunel in preberite stanje, ki jo je ustvarilo:

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

Rokovanje brez odgovora vam še vedno pove, da je tunel nastal in da je oddaljena stran tiha, kar je drugačna težava od enote, ki se ni nikoli zagnala. Hranite stanje enote, rokovanje in izid zahteve v enem zapisu, ker spodletijo neodvisno in sistem opisuje le njihova kombinacija.

Sorodni članki