WireGuard-handskakets ålder är inte en sessions-timeout
Tidsgränser för nyckelbyte styr nycklar, inte användaråtkomst. Att läsa latest-handshakes säger något om en peers protokolltillstånd, inte om dess behörighet har gått ut.
En peer som slutar skicka trafik förlorar inte sin nyckel för det, och en ny handskakning bevisar inte att någon har förnyat tillståndet att använda den. WireGuards timers håller nycklar färska och paket i rörelse; de modellerar inte en användare som loggar ut efter ett bestämt antal minuter. Tre frågor blandas ihop här, och var och en har olika bevis. Distinktionen avgör vilket verktyg du tar till.
Tre frågor, en kommandoutdata
Operatörer frågar om en peer går att nå, om den har varit aktiv och om den fortfarande är tillåten. Den första är protokolltillstånd, den andra är trafikräknare och den tredje är behörighet. Bara de två första går att läsa från ett WireGuard-gränssnitt, och de används rutinmässigt för att svara på alla tre.
| Question | Evidence it needs | What does not answer it |
|---|---|---|
| Is the peer reachable now? | A recent handshake and a working return path | An interface that exists |
| Has it been active? | Transfer counters moving over time | A handshake timestamp alone |
| Is access still granted? | The configuration or controller that authorizes it | Any protocol timer |
Läs raderna som tre separata utredningar. De två första är billiga och kan besvaras med gränssnittets egna räknare. Den tredje kräver konfigurationen som ger åtkomst, och den finns i en annan fil eller ett annat system. Att välja fel rad är att be en protokolltimer göra en policys arbete.
Vad timers faktiskt styr
Protokollet definierar konstanter för ny handskakning, rotation av transportnycklar och avvisning av paket som skyddas av en gammal nyckel. De svarar på trafik och på tillstånd, inte på en kalender eller på en policy som säger att en person får vara ansluten till 17:00. Därför kan en inaktiv peer se overksam ut i timmar och ändå vara behörig.
PersistentKeepalive tas ofta för den saknade timeouten. Det skickar autentiserade tomma paket för att hålla en NAT-mappning vid liv, och att sätta det till noll stoppar paketen utan att återkalla något.
Läs körtidstillståndet per peer, med den publika nyckeln i stället för kommentaren:
wg show wg0 latest-handshakes
wg show wg0 transfer
En ny handskakning säger att en handskakning slutfördes. Den säger inte att den privata tjänsten bakom tunneln går att nå, och en gammal tidsstämpel kan höra till en peer som helt enkelt är tyst.
Varför en inaktiv peer inte är en utloggad peer
WireGuard har inget sessionsobjekt med en början och ett slut. En peer är en publik nyckel med tillåtna adresser, och handskakningen som skyddar dess trafik byts ut vid behov utan någon inloggning som användaren ser. Att behandla frånvaron av färsk trafik som en utloggning vänder på modellen.
Om det egentliga klagomålet är att en anslutning misslyckas efter att ha varit overksam, ligger orsaken oftast någon annanstans: en NAT-mappning som gått ut, en enhet som sovit eller en brandvägg som tappat tillstånd. Testa genom att skicka trafik från andra sidan och starta ett nytt flöde, och jämför vad som ändras.
Sätt deadline där behörigheten finns
Om åtkomst måste upphöra vid en bestämd tid hör deadline till det som ger åtkomsten. En styrenhet som utfärdar peer-konfigurationer kan kräva ett förnyat godkännande innan den lämnar ut en ny, och det är en egenskap hos styrenheten och inte en dold parameter på gränssnittet.
För handsatta peers måste borttagningen nå båda ställena: det körande gränssnittet och den sparade konfigurationen. Att bara ta bort peeren i körtid ångras av en omstart eller en avstämningsslinga, som återställer identiteten du trodde hade gått ut:
sudo wg set wg0 peer <public-key> remove
sudo wg-quick save wg0
Testa sedan gränsen i stället för etiketten. Bekräfta att peeren avvisas efter deadline, bekräfta att förnyelsevägen fungerar och bekräfta att tillståndet överlever en omladdning av hanteraren. En handskaknings ålder är en användbar driftssignal, och den är inte en åtkomstpost.