Jedinica je crvena, interfejs postoji, a tunel uglavnom radi — to je najzbunjujuća kombinacija koja postoji. Postavljanje je niz: prvo se stvara interfejs, zatim slijede adrese, rute, postavke razrješivača i sve hook komande. Neuspjeh na četvrtom koraku ostavlja prva tri na mjestu, pa je ime interfejsa dokaz da je pokretanje počelo, a ne da je završilo. Jedna dodatna činjenica spasila bi zbunjenost: korak koji je pao.

Djelimično stanje je uobičajen neuspjeh

To ponašanje treba očekivati, umjesto da ga tretiramo kao korupciju. Interfejs je najjeftiniji dio postavljanja i najlakše ga je ostaviti za sobom, a upravo on čini da mašina izgleda napola ispravna.

Ono što još ne postoji jeste sve što je došlo poslije koraka koji je pao. Ako je neuspjeh bio u fazi razrješivača, adrese i rute postoje, a DNS ne. Ako je bila ruta, tunel ima adresu i nikakav put kroz nju.

Posljedica je mašina koja odgovara na neke testove a na druge ne, pa ljudi zaključuju da servis treperi, iako nikada nije uspješno startovao. Servis koji nikad nije završio ne može treperiti. Može samo iznova padati iz istog razloga.

Nađite prvi korak koji je pao

Čitajte dnevnik jedinice, a ne samo trenutni status, i čitajte ga od početka neuspjelog pokretanja. Posljednji red vam kaže izlazni kod; prva greška kaže šta popraviti.

Ove komande ispisuju stanje jedinice, dnevnik podizanja za tu jedinicu i ž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

Greška razrješivača, ruta koja već postoji, hook koji je izašao s kodom različitim od nule i neuspjeh raščlanjivanja konfiguracije — sve se pojavljuje u tom prozoru i svako imenuje svoju komponentu. Nagađanje samo iz stanja interfejsa zanemaruje sve te informacije.

Tri uslova koja odlučuju popravku

Odlučite čistite li, popravljate li na licu mjesta ili uklanjate jedinicu iz puta podizanja, i odlučite to prije nego što išta otkucate.

Ako je interfejs pokvaren ali je konfiguracija ispravna, očistite i počnite iznova. Ako je konfiguracija pogrešna, popravite je i ipak prvo očistite, jer pokretanje drugog upravljača nad djelimičnim stanjem stvara dva vlasnika za jedan interfejs. Ako je neuspjeh nedostajuća sistemska komponenta, poput pomoćnika razrješivača koji mašina nema, namjerno instalirajte ili uklonite zavisnost, umjesto da uređujete jedinicu dok ne prestane da se žali.

Ta tri slučaja pokrivaju većinu onoga što izgleda kao tajanstvena crvena jedinica. Razlikovno pitanje je bi li se isti neuspjeh dogodio na mašini s čistim stanjem, a odgovor obično dolazi iz prvog reda greške.

Očistite prije nego što pokušate ponovo

Ponovni pokušaj nad postojećim stanjem može pasti iz novog razloga i sakriti prvobitni. Spustite interfejs istim alatom koji ga je stvorio, pa potvrdite da ništa nije ostalo.

Ne brišite nepovezane interfejse i ne resetujte mrežni stek hosta. Oboje su veliki potezi za popravku malog objekta i pretvaraju jedan neuspjeli tunel u mašinu čije druge veze treba ponovo uspostaviti. Ispravan obim je jedan interfejs i jedinica koja ga posjeduje. Sve šire traži razlog zapisan prije nego što se dogodi.

Dokažite tunel, a ne jedinicu

Zelena jedinica znači da je niz pokretanja izašao s nulom. To ne znači da je paket stigao na drugu stranu, niti da je razrješivač postavljen kako ste namjeravali.

Pošaljite zahtjev kroz tunel i pročitajte stanje koje ga je proizvelo:

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

Rukovanje bez odgovora ipak vam kaže da se tunel formirao i da je druga strana tiha, što je drugačiji problem od jedinice koja nikad nije startovala. Držite stanje jedinice, rukovanje i rezultat zahtjeva u jednom zapisu, jer oni padaju nezavisno i samo kombinacija opisuje sistem.

Povezani članci