Handshake oppe, adresse borte: tre WireGuard-tilstandar
Ein fersk handshake beviser at peeren svara, ikkje at grensesnittet held på adressa si eller at neste pakke tek den tiltenkte opplenkja.
WireGuard kan ha ein fersk handshake og inga adresse samstundes, og den tilstanden er samanhengande, ikkje sjølvmotseiande. Handshaken er ei peer-hending, adressa høyrer til grensesnittet, og ruta avgjer kva opplenkje ei pakke forlèt via. Tre lag, tre eigarar, og kvar av dei kan feile medan dei to andre ser sunne ut.
Å lese dei som éin status er det som gjer ein tominuttsdiagnose til ein heil ettermiddag med å starte tenester på nytt.
Ein handshake er ei peer-hending, ikkje ei adresseringshending
Handshaken til WireGuard beviser at den konfigurerte peeren svara med ein gyldig nøkkel, og at sesjonsnøklane er aktuelle. Han seier ingenting om den lokale adressa på grensesnittet, og ingenting om korvidt noka rute peikar dit. Ein hjelpar eller nettverkshandsamar tildeler adressa, medan protokollkonfigurasjonen berre namngjev peeraar og nøklar. Å blande dei to er korleis ein sunn handshake vert lesen som ein tunnel som verkar.
Difor kan wg show rapportere ein handshake som er sekund gamal på eit grensesnitt som ikkje kan ta imot ein einaste pakke frå ein applikasjon.
Ein handsamar som gjenopprettar grensesnittet kan miste adressa utan å røre peer-konfigurasjonen, og neste handshake lukkast med ein gong fordi nøklane aldri vart endra. Logglinja om ein vellukka handshake er korrekt og irrelevant for feilen.
| Observation | Which layer it belongs to | Wrong conclusion it invites |
|---|---|---|
| Handshake a few seconds old | Peer and keys | The tunnel is usable for application traffic |
Address present on wg0 | Interface configuration | Traffic actually egresses through it |
Route points at wg0 | Forwarding table | The outer packet uses the intended uplink |
Grensesnittadressa har sin eigen eigar
Ei adresse på tunnel-eininga kan kome frå Address linja til ein hjelpar, frå ein DHCP-klient som køyrer på grensesnittet, eller frå ein administrasjonsdaemon som lagar henne ved tilkopling. Kva det enn er, eig den komponenten adressa og gjenopprettar henne eller ikkje etter si eiga logikk. Å lese adressa utan å namngje eigaren lèt deg stå utan forklaring på kvifor ho forsvann.
To eigarar på eitt grensesnitt er den klassiske feilen. Å starte ein hjelpar og ein skrivebordsnettverkshandsamar over same eininga skapar eit kapplep der den eine fjernar det den andre nettopp konfigurerte, og endepunktet held fram med å svare heile tida.
Vel éin eigar og la det andre verktøyet observere i staden for å administrere. Den avgjerda er verdt å skrive ned, fordi symptomet dukkar opp veker seinare og ser ut som eit tilfeldig adresetap.
Ei rute vel ei opplenkje, ikkje grensesnittet
Ei indre rute som peikar på wg0 avgjer at trafikken går inn i tunnelen. Ei separat avgjerd sender dei krypterte ytre pakkane mot peeren, og på ein vert med fleire opplenkjer kjem den avgjerda frå vidaresendingstabellen og policyreglane. Ein Wi-Fi-roaming kan endre den ytre vegen utan å røre den indre adressa.
Så ein tunnel som verkar og ein peer som ikkje kan nåast er foreinlege tilstandar, og det same er ein korrekt peer og ei broten indre rute. Dei tre observasjonane må takast saman, i same augneblink, elles er samanlikninga meiningslaus.
Samanlikn dei tre tilstandane i éin gjennomgang
Tre skriveverna kommandoar svarar på dei tre spørsmåla i den rekkjefølgja som isolerer feilen snøggast. Køyr dei utan å endre noko imellom.
ip address show dev wg0
ip route get 10.80.0.1
wg show wg0 latest-handshakes transfer
Den fyrste viser om grensesnittet har ei adresse i det heile, og den andre viser kva eining eit bestemt mål ville bruke akkurat no. Den tredje rapporterer tidspunktet for siste handshake og byteteljarane, og han er den einaste av dei tre som skildrar peeren i staden for den lokale verten.
Les teljarane så vel som tidsstempelet. Ein handshake som stadig fornyar seg medan overføringa står stille tyder at peeren svarar, men at ingenting nyttig går gjennom, noko som peikar på ruting eller ein ACL heller enn på nøklar. Eit tidsstempel som sluttar å flytte seg medan ei adresse er til stades, peikar oppstraums i staden. Båe lesingane kjem frå den same utdatalinja, og ingen av dei er synlege om du berre kontrollerer at ein handshake finst.
Retta opp den spesifikke tilstanden som er feil, og test deretter applikasjonen i staden for tunnelen. Ein fersk handshake er peer-bevis, og bevis om peeren er ikkje bevis for at den neste førespurnaden frå nettlesaren din finn ei adresse, ei rute og ei opplenkje som verkar. wg-quick-handboka er tydeleg på kva av desse hjelparen set opp, og kva som høyrer til protokollen.