Interfața este activă, dar wg-quick a eșuat: ce facem în continuare
O unitate eșuată poate lăsa în urmă un tunel pe jumătate configurat. Citiți primul pas care eșuează, decideți dacă curățați sau reparați, apoi demonstrați-o cu o cerere.
Unitatea este roșie, interfața există, iar tunelul funcționează în mare parte, ceea ce este cea mai confuză combinație posibilă. Configurarea este o succesiune: mai întâi se creează interfața, apoi urmează adrese, rute, setările resolverului și orice comenzi hook. Un eșec la al patrulea pas lasă primele trei pe loc, așa că numele interfeței dovedește că pornirea a început, nu că s-a terminat. Un singur fapt suplimentar ar fi scutit confuzia: pasul care a eșuat.
Starea parțială este eșecul normal
Acest comportament trebuie așteptat, nu tratat ca o corupere. Interfața este partea cea mai ieftină a configurării și cea mai ușor de lăsat în urmă, și tot ea este partea care face mașina să pară pe jumătate funcțională.
Ce nu există încă este tot ce a venit după pasul care a eșuat. Dacă eșecul a fost în etapa resolverului, adresele și rutele există, iar DNS nu. Dacă a fost o rută, tunelul are o adresă și niciun drum prin ea.
Consecința este o mașină care răspunde la unele teste și eșuează la altele, de aceea oamenii concluzionează că serviciul pâlpâie, deși nu a pornit niciodată cu succes. Un serviciu care nu s-a terminat niciodată nu poate pâlpâi. Poate doar eșua repetat din același motiv.
Găsiți primul pas care eșuează
Citiți jurnalul unității, nu doar starea curentă, și citiți-l de la începutul rulării eșuate. Ultima linie vă spune codul de ieșire; prima eroare vă spune ce trebuie reparat.
Aceste comenzi afișează starea unității, jurnalul de pornire pentru acea unitate și starea live a tunelului:
systemctl status wg-quick@wg0
journalctl -u wg-quick@wg0 -b --no-pager | tail -40
wg show
ip -4 addr show dev wg0O eroare a resolverului, o rută care există deja, un hook care a ieșit cu un cod diferit de zero și un eșec de analiză a configurației apar toate în acea fereastră, iar fiecare își numește componenta proprie. Ghidarea doar după starea interfeței ignoră toate aceste informații.
Trei condiții care decid reparația
Decideți dacă curățați, reparați la fața locului sau scoateți unitatea din calea de pornire, și decideți asta înainte de a tasta ceva.
Dacă interfața este stricată, dar configurația este corectă, curățați și luați-o de la capăt. Dacă configurația este greșită, corectați-o și totuși curățați mai întâi, pentru că pornirea unui al doilea manager peste o stare parțială produce doi proprietari pentru o singură interfață. Dacă eșecul este o componentă de sistem lipsă, cum ar fi un ajutor al resolverului pe care mașina nu îl are, instalați sau eliminați dependența în mod deliberat în loc să editați unitatea până când aceasta nu mai protestă.
Aceste trei cazuri acoperă cea mai mare parte din ce arată ca o unitate roșie misterioasă. Întrebarea care distinge este dacă același eșec s-ar produce pe o mașină cu stare curată, iar răspunsul vine de obicei din prima linie de eroare.
Curățați înainte de a reîncerca
O nouă încercare peste o stare existentă poate eșua dintr-un motiv nou și îl poate ascunde pe cel original. Coborâți interfața cu același instrument care a creat-o, apoi confirmați că nu a rămas nimic.
Nu ștergeți interfețe fără legătură și nu resetați stiva de rețea a gazdei. Ambele sunt acțiuni mari pentru a repara un obiect mic și transformă un singur tunel eșuat într-o mașină ale cărei alte conexiuni trebuie restabilite. Domeniul corect este o interfață și unitatea care o deține. Orice mai larg are nevoie de un motiv scris înainte de a se întâmpla.
Dovediți tunelul, nu unitatea
O unitate verde înseamnă că secvența de pornire s-a terminat cu zero. Nu înseamnă că un pachet a ajuns pe partea cealaltă, nici că resolverul a fost setat așa cum intenționați.
Trimiteți o cerere prin tunel și citiți starea care a produs-o:
systemctl is-active wg-quick@wg0
wg show wg0 latest-handshakes
ping -c 3 10.63.0.1
resolvectl query internal.example.netO strângere de mână fără răspuns vă spune totuși că tunelul s-a format și că partea îndepărtată este tăcută, ceea ce este o problemă diferită de o unitate care nu a pornit niciodată. Păstrați starea unității, strângerea de mână și rezultatul cererii într-o singură înregistrare, pentru că eșuează independent și doar combinația descrie sistemul.