Rozhraní je nahoře, ale wg-quick selhal: co dál
Selhaná jednotka může zanechat napůl nakonfigurovaný tunel. Přečtěte si první krok, který selhal, rozhodněte se, zda uklidit, nebo opravit, a pak to dokažte požadavkem.
Jednotka je červená, rozhraní existuje a tunel většinou funguje, což je ta nejmatoucnější kombinace, jaká může nastat. Nastavení je posloupnost: nejprve se vytvoří rozhraní, pak následují adresy, trasy, nastavení překladače a případné hook příkazy. Selhání ve čtvrtém kroku nechá první tři na místě, takže název rozhraní je důkazem, že spouštění začalo, ne že skončilo. Jeden fakt navíc by té zmatení ušetřil: krok, který selhal.
Částečný stav je běžné selhání
Toto chování je třeba očekávat, místo aby se považovalo za poškození. Rozhraní je nejlevnější částí nastavení a nejsnáze zůstane zapomenuté, a je to právě ta část, kvůli které stroj vypadá napůl funkční.
Co ještě neexistuje, je vše, co přišlo po selhaném kroku. Pokud k selhání došlo ve fázi překladače, adresy i trasy existují a DNS nikoli. Pokud šlo o trasu, tunel má adresu a žádnou cestu skrz ni.
Následkem je stroj, který na některé testy odpovídá a jiné neprojde, a proto lidé usuzují, že služba kmitá, i když se nikdy úspěšně nespustila. Služba, která nikdy neskončila, kmitat nemůže. Může jen opakovaně selhávat ze stejného důvodu.
Najděte první selhaný krok
Čtěte žurnál jednotky, ne jen aktuální stav, a čtěte ho od začátku neúspěšného běhu. Poslední řádek vám řekne návratový kód; první chyba vám řekne, co opravit.
Tyto příkazy vypíší stav jednotky, zaváděcí žurnál této jednotky a živý stav tunelu:
systemctl status wg-quick@wg0
journalctl -u wg-quick@wg0 -b --no-pager | tail -40
wg show
ip -4 addr show dev wg0Chyba překladače, trasa, která už existuje, hook, který skončil s nenulovým kódem, a selhání parsování konfigurace se všechny objeví v tom okně a každý pojmenuje svou komponentu. Hádání jen ze stavu rozhraní všechny ty informace ignoruje.
Tři podmínky, které rozhodují o opravě
Rozhodněte se, zda uklízíte, opravujete na místě, nebo odstraňujete jednotku z zaváděcí cesty, a rozhodněte to dřív, než něco napíšete.
Je-li rozhraní rozbité, ale konfigurace správná, uklidťe a začněte znovu. Je-li konfigurace špatná, opravte ji a přesto nejdřív uklidťe, protože spuštění druhého správce nad částečným stavem vytváří dva vlastníky jednoho rozhraní. Pokud je selháním chybějící systémová komponenta, třeba pomocník překladače, který stroj nemá, nainstalujte nebo odstraňte závislost záměrně, místo abyste jednotku upravovali, dokud si nepřestane stěžovat.
Tyto tři případy pokrývají většinu toho, co vypadá jako záhadná červená jednotka. Rozlišující otázkou je, zda by stejné selhání nastalo na stroji s čistým stavem, a odpověď obvykle přichází z prvního řádku chyby.
Před novým pokusem uklidťe
Nový pokus nad existujícím stavem může selhat z nového důvodu a skrýt ten původní. Sundejte rozhraní stejným nástrojem, který ho vytvořil, a potom potvrďte, že nic nezbylo.
Nemažte nesouvisející rozhraní a neresetujte síťový stack hostitele. Obojí jsou velké zásahy na opravu malého objektu a mění jeden selhaný tunel na stroj, jehož ostatní spojení je třeba znovu navázat. Správný rozsah je jedno rozhraní a jednotka, která ho vlastní. Cokoli širšího potřebuje důvod zapsaný dřív, než se to stane.
Dokažte tunel, ne jednotku
Zelená jednotka znamená, že spouštěcí posloupnost skončila s nulou. Neznamená, že paket dorazil na druhou stranu, ani že překladač je nastaven tak, jak jste chtěli.
Pošlete požadavek tunelem a přečtěte stav, který ho vytvořil:
systemctl is-active wg-quick@wg0
wg show wg0 latest-handshakes
ping -c 3 10.63.0.1
resolvectl query internal.example.netRukoudání bez odpovědi vám přesto řekne, že tunel vznikl a protější strana mlčí, což je jiný problém než jednotka, která se nikdy nespustila. Držte stav jednotky, rukoudání a výsledek požadavku v jednom záznamu, protože selhávají nezávisle a systém popisuje jen jejich kombinace.