Wêrom't in 23-oere VPN-herinnering foar de ferkearde sesje ôfgiet
In 23-oere berjocht moat ien sesje folgje, net it akkount. Bynt de timer oan 'e ferbining dy't begûn is, en behannelje sliep en opnij ferbinen as aparte gefallen.
It berjocht ferskynde tweintich minuten nei it ferbinen. De teller derûnder rûn sûnt de foarige moarn, of sûnt it akkount him foar it lêst autentisearre, en neat yn 'e warskôging sei hokker. Dat is it symptoom: in herinnering bûn oan eat oars as de ferbining foar jo.
De oplossing is gjin bettere warskôging. It is beslute hokker klok it ferlet bedoelt, en dan de timer oan in objekt bine dat yn dy klok bestiet.
Wat ôfgie, en wat it telde
Trije oannimlike boarnen meitsje itselde berjocht. In kalinderregel rint op in fêste lokale tiid en wit neat fan tunnels. In teller yn 'e klient sammelet wylst hokker ferbining dan ek oan stiet en oerlibbet werferbinen. In gateway-belied lit de sesje oan 'e serverkant ferrinne en stjoert earst in warskôging.
Allinnich de lêste twa geane oer in sesje, en sels dy binne it net iens. De klantteller mjit wat it lokale proses seach; de gateway mjit wat er autentisearre en ferantwurde. In sliep, in netwurkferoaring of in werstart fan 'e waarnimmer kin se oeren skiede, en dêrom driuwe de warskôging en de twongen ferrinstaasje útinoar.
Trije klokken efter ien ferlet
Begjin mei de sin op te skriuwen dy't jo echt wolle. Warskôgje foar't de gateway dizze ferbining einiget is net itselde ferlet as herinnerje nei in dei ferbûne tiid. It is ek net itselde as melde dat dizze sesje al 23 oere oan stiet. Eltse ferzje neamt in oare barren, en in oar ûnderdiel moat dêrop antwurdzje.
Kontrolearje dan oft de gegevens bestean. In lokale begjintiidstimpel jout jo de leeftyd fan 'e sesje sûnder ôfhinklikens fan 'e server. In gateway-belied jout jo de oerbleaune libbensdoer, mar allinnich as de gateway dy bleatleit. In gebrûksrapport jout jo de doer efterôf, en dat kin gjin foarôfberjocht driuwe.
Byn de timer oan 'e sesje, net oan it akkount
Kies earst it objekt. In akkount kin ferskate apparaten en ferskate tagelyk sesjes hâlde, dus in herinnering kaaid op 'e brûkersnamme kin net sizze hokker ferbining de leeftyd berikte. Kaai it op it profyl plus dy aktivearring, en annulearje it wachtsjende berjocht as de aktivearring einiget.
| Evidence you can read | What it establishes | Where it misleads |
|---|---|---|
| Connection state changes to active | A session started now | Does not carry the gateway's own session identifier |
| Duration reported at disconnect | Total service time for that session | Arrives too late for any advance notice |
| Interim usage update | Time accounted up to that update | Staleness equals the update interval |
| Local timestamp taken at activation | Age of your observation | Resets whenever the observer restarts |
Dy tabel is in kontrakt foar jo eigen notifier, net in beskriuwing fan 'e callback-API fan hokker klient dan ek. Wat it ynstalleare produkt dokumintearret oer ferbiningstastân is de boarne dêr't jo oan bine moatte; wêr't it allinnich autentikaasjebarrens bleatleit, sis dat lûd en akseptearje it gruttere gedrach ynstee fan in sesje ôf te lieden.
Test it mei in koarte drompel
Debug nea in dei-lange timer mei in dei-lange wachttijd. Foegje in konfigurearbere drompel ta, set dy op tritich sekonden, en rin fjouwer oergongen yn folchoarder: ferbine, wachtsje, ôfbrekke, werferbine. Eltse oergong heart krekt ien tastânferoaring te meitsjen, en it werferbinen heart in nije deadline te plenjen ynstee fan 'e âlde te ervjen.
# current connection state and profile identity
nmcli -f GENERAL.STATE,GENERAL.CONNECTION connection show work
# the notifier unit you wrote: does it restart the deadline or resume it?
journalctl --user -u vpn-timer.service --since "-5 min" -o cat
Sjoch nei de tiidstimpels ynstee fan 'e bewurding. In berjocht dat komt mei de begjintiid fan 'e foarige sesje hat it ferkearde objekt bûn, en in berjocht dat twa kear komt foar ien deadline betsjut dat de stjoerd-flag nea bewarre is.
Sliep, opnij ferbinen en miste besoarging
Sliep brekt beide naive ûntwerpen. In monotone ôftelling stopet wylst de masine sliept, in deadline op muorreklok bliuwt bewegen, en in timer dy't ûnder de sliep ôfgiet wurdt let of hielendal net besoarge. Beslis hokker gedrach jo ferlet nedich hat, lit de masine dan oer de drompel sliepe en befêstigje it.
Besoarging fertsjinnet deselde soarch. Kin it berjocht net toand wurde, set it dan yn 'e rige, en kontrolearje opnij oft de doelsesje noch bestiet foar't jo it úteinlik toane; oars wurdt de brûker warskôge oer in ferbining dy't al einige is. Twongen ôfbrekke en fernijing fan ynskriuwgegevens bliuwe bûten dit paad, want in herinnering dy't stil it lot fan 'e ferbining feroaret is in beliedsbeslút yn 'e klean fan in berjocht.