WireGuard kan tegelijk een verse handshake en geen adres hebben, en die toestand is samenhangend in plaats van tegenstrijdig. De handshake is een peer-gebeurtenis, het adres hoort bij de interface, en de route bepaalt via welke uplink een pakket vertrekt. Drie lagen, drie eigenaren, en elk kan falen terwijl de andere twee gezond lijken.

Ze als één status lezen is wat een diagnose van twee minuten verandert in een hele middag diensten herstarten.

Een handshake is een peer-gebeurtenis, geen adresseringsgebeurtenis

De handshake van WireGuard bewijst dat de geconfigureerde peer met een geldige sleutel heeft geantwoord en dat de sessiesleutels actueel zijn. Hij zegt niets over het lokale adres op de interface, en niets over de vraag of een route daarheen wijst. Een hulpprogramma of netwerkbeheerder wijst het adres toe, terwijl de protocolconfiguratie alleen peers en sleutels benoemt. Die twee verwarren is hoe een gezonde handshake als een werkende tunnel wordt gelezen.

Daarom kan wg show een handshake van seconden oud melden op een interface die geen enkel pakket van een toepassing kan aannemen.

Een beheerder die de interface opnieuw aanmaakt kan het adres laten vallen zonder de peer-configuratie aan te raken, en de volgende handshake slaagt meteen omdat de sleutels nooit zijn veranderd. De logregel over een geslaagde handshake is juist en irrelevant voor de storing.

ObservationWhich layer it belongs toWrong conclusion it invites
Handshake a few seconds oldPeer and keysThe tunnel is usable for application traffic
Address present on wg0Interface configurationTraffic actually egresses through it
Route points at wg0Forwarding tableThe outer packet uses the intended uplink

Het adres van de interface heeft zijn eigen eigenaar

Een adres op het tunnelapparaat kan komen uit de Address regel van een hulpprogramma, van een DHCP-client die op de interface draait, of van een beheerdemon die het bij het verbinden aanmaakt. Wat het ook is, dat onderdeel bezit het adres en herstelt het wel of niet volgens zijn eigen logica. Het adres lezen zonder de eigenaar te noemen laat je zonder verklaring waarom het verdween.

Twee eigenaren op één interface is de klassieke storing. Een hulpprogramma en een desktop-netwerkbeheerder over hetzelfde apparaat starten levert een race op waarin de een verwijdert wat de ander net heeft geconfigureerd, en het eindpunt blijft de hele tijd antwoorden.

Kies één eigenaar en laat het andere gereedschap liever observeren dan beheren. Die beslissing is het opschrijven waard, omdat het symptoom weken later opduikt en op een willekeurig adresverlies lijkt.

Een route kiest een uplink, de interface niet

Een binnenroute die naar wg0 wijst, bepaalt dat verkeer de tunnel binnengaat. Een aparte beslissing stuurt de versleutelde buitenste pakketten naar de peer, en op een host met meerdere uplinks komt die beslissing uit de doorstuurtabel en de beleidsregels. Een Wi-Fi-roaming kan het buitenste pad veranderen zonder het binnenste adres aan te raken.

Een werkende tunnel en een onbereikbare peer zijn dus verenigbare toestanden, en dat geldt ook voor een correcte peer en een kapotte binnenroute. De drie waarnemingen moeten samen, op hetzelfde moment worden genomen, anders is de vergelijking zinloos.

Vergelijk de drie toestanden in één doorgang

Drie alleen-lezen commando's beantwoorden de drie vragen in de volgorde die de storing het snelst isoleert. Voer ze uit zonder daartussen iets te veranderen.

ip address show dev wg0
ip route get 10.80.0.1
wg show wg0 latest-handshakes transfer

De eerste laat zien of de interface überhaupt een adres heeft, en de tweede laat zien welk apparaat een bepaalde bestemming nu zou gebruiken. De derde meldt de tijd van de laatste handshake en de byte-tellers, en die is de enige van de drie die de peer beschrijft in plaats van de lokale host.

Lees de tellers én de tijdstempel. Een handshake die zich voortdurend vernieuwt terwijl de overdracht vlak blijft, betekent dat de peer antwoordt maar dat er niets bruikbaars overgaat, wat op routing of een ACL wijst en niet op sleutels. Een tijdstempel die stopt met voortschrijden terwijl er een adres is, wijst juist stroomopwaarts. Beide lezingen komen uit dezelfde uitvoerregel, en geen van beide is zichtbaar als je alleen controleert of er een handshake bestaat.

Herstel de specifieke toestand die fout is, en test daarna de toepassing in plaats van de tunnel. Een verse handshake is bewijs over de peer, en bewijs over de peer is geen bewijs dat het volgende verzoek van je browser een adres, een route en een werkende uplink vindt. De handleiding van wg-quick zegt uitdrukkelijk welke daarvan het hulpprogramma opzet en welke bij het protocol horen.

Gerelateerde artikelen