Interfacet er oppe, men wg-quick fejlede: hvad nu
En fejlet unit kan efterlade en halvkonfigureret tunnel. Læs det første trin, der fejler, afgør om du skal rydde op eller reparere, og bevis det derefter med en anmodning.
Uniten er rød, interfacet findes, og tunnelen virker stort set, hvilket er den mest forvirrende kombination, der findes. Opsætningen er en sekvens: først oprettes interfacet, derefter følger adresser, ruter, resolverindstillinger og eventuelle hook-kommandoer. En fejl på fjerde trin lader de første tre blive, så interfacets navn er bevis for, at opstarten begyndte, ikke at den blev færdig. Én ekstra oplysning ville have sparet forvirringen: det trin, der fejlede.
Delvis tilstand er den normale fejl
Den adfærd er værd at forvente i stedet for at behandle den som korruption. Interfacet er den billigste del af opsætningen og den letteste at efterlade, og det er også den del, der får maskinen til at se halvt fungerende ud.
Det, der endnu ikke findes, er alt det, der kom efter det fejlende trin. Hvis fejlen var på resolver-trinnet, er adresser og ruter til stede, og DNS er det ikke. Hvis det var en rute, har tunnelen en adresse og ingen vej igennem den.
Konsekvensen er en maskine, der svarer på nogle tests og fejler andre, og derfor konkluderer folk, at tjenesten blafrer, når den aldrig er startet korrekt. En tjeneste, der aldrig blev færdig, kan ikke blafre. Den kan kun fejle igen og igen af samme grund.
Find det første fejlende trin
Læs journalen for uniten i stedet for kun den aktuelle status, og læs den fra toppen af det fejlede kørsel. Den sidste linje fortæller dig exitkoden; den første fejl fortæller dig, hvad der skal repareres.
Disse kommandoer udskriver unitens tilstand, bootjournalen for den unit og tunnelens live-tilstand:
systemctl status wg-quick@wg0
journalctl -u wg-quick@wg0 -b --no-pager | tail -40
wg show
ip -4 addr show dev wg0En resolverfejl, en rute der allerede findes, en hook der afsluttede med en kode forskellig fra nul og en fejl i konfigurationsparsingen vises alle i det vindue, og hver især navngiver sin egen komponent. At gætte ud fra interfacets tilstand alene ignorerer alle disse oplysninger.
Tre betingelser, der afgør reparationen
Afgør, om du rydder op, reparerer på stedet eller fjerner uniten fra opstartsstien, og afgør det, før du skriver noget.
Hvis interfacet er i stykker, men konfigurationen er korrekt, så ryd op og start forfra. Hvis konfigurationen er forkert, så ret den og ryd alligevel op først, fordi at starte en anden manager oven på en delvis tilstand giver to ejere til ét interface. Hvis fejlen er en manglende systemkomponent som en resolverhjælper, maskinen ikke har, så installer eller fjern afhængigheden med vilje i stedet for at redigere uniten, indtil den holder op med at klage.
De tre tilfælde dækker det meste af det, der ligner en mystisk rød unit. Det afgørende spørgsmål er, om den samme fejl ville opstå på en maskine med ren tilstand, og svaret kommer normalt fra den første fejl linje.
Ryd op, før du prøver igen
Et nyt forsøg oven på en eksisterende tilstand kan fejle af en ny grund og skjule den oprindelige. Tag interfacet ned med det samme værktøj, der oprettede det, og bekræft derefter, at der ikke er noget tilbage.
Slet ikke ubeslægtede interfaces, og nulstil ikke værtens netværksstak. Begge er store handlinger for at rette et lille objekt, og de forvandler en enkelt fejlet tunnel til en maskine, hvis andre forbindelser skal genetableres. Det korrekte omfang er ét interface og den unit, der ejer det. Alt bredere kræver en grund skrevet ned, før det sker.
Bevis tunnelen, ikke uniten
En grøn unit betyder, at opstartssekvensen afsluttede med nul. Det betyder ikke, at en pakke nåede den anden side, og det betyder ikke, at resolversystemet blev sat, som du havde tænkt.
Send en anmodning gennem tunnelen, og læs den tilstand, der frembragte den:
systemctl is-active wg-quick@wg0
wg show wg0 latest-handshakes
ping -c 3 10.63.0.1
resolvectl query internal.example.netEt håndtryk uden svar fortæller dig stadig, at tunnelen blev dannet, og at den fjern side er stille, hvilket er et andet problem end en unit, der aldrig startede. Hold unitens tilstand, håndtrykket og anmodningens resultat i én registrering, fordi de fejler uafhængigt, og kun kombinationen beskriver systemet.