Miks 23-tunnine VPN-meeldetuletus käivitub vale sessiooni jaoks
23-tunni teade peaks järgima ühte sessiooni, mitte kontot. Kinnitage taimer alguse saanud ühenduse külge ning käsitlege und ja taasühendust eraldi juhtudena.
Teade ilmus kakskümmend minutit pärast ühendamist. Selle all olev loendur oli töötanud eelmisest hommikust või konto viimasest autentimisest saati ja miski hoiatuses ei öelnud, millest. See ongi sümptom: meeldetuletus, mis on seotud millegi muu kui sinu ees oleva ühendusega.
Parandus ei ole parem hoiatus. See on otsus, millist kella nõue silmas peab, ja seejärel taimeri sidumine objektiga, mis selles kellas eksisteerib.
Mis käivitus ja mida see luges
Kolm tõenäolist allikat annavad sama teate. Kalendrireegel töötab kindlal kohalikul ajal ega tea tunnelitest midagi. Kliendi loendur koguneb seni, kuni mis tahes ühendus püsti on, ja elab üle taasühendused. Gateway-poliitika lõpetab sessiooni serveri poolel ja saadab enne hoiatuse.
Ainult kaks viimast puudutavad sessiooni, ja isegi need ei ole ühel meelel. Kliendi loendur mõõdab, mida kohalik protsess nägi; gateway mõõdab, mida ta autentis ja arvestas. Uni, võrguvahetus või vaatleja taaskäivitamine võivad need tundide kaupa lahku viia, ja seetõttu triivivad hoiatus ja sunnitud aegumine teineteisest eemale.
Kolm kella ühe nõude taga
Alusta selle lause kirjutamisest, mida sa tegelikult tahad. Hoiatada enne, kui gateway selle ühenduse lõpetab, ei ole sama nõue kui meelde tuletada pärast ühte päeva ühendatud aega. See ei ole sama ka selle teatamisega, et see sessioon on püsti olnud 23 tundi. Iga versioon nimetab erinevat sündmust ja erinev komponent peab sellele vastama.
Seejärel kontrolli, kas andmed on olemas. Kohalik algusaeg annab sessiooni vanuse ilma serverist sõltumata. Gateway-poliitika annab allesjäänud eluea, kuid ainult siis, kui gateway selle avaldab. Kasutusaruanne annab kestuse tagantjärele ja see ei saa käivitada eelhoiatust.
Siduge taimer sessiooni, mitte konto külge
Vali esmalt objekt. Konto võib hoida mitut seadet ja mitut samaaegset sessiooni, nii et kasutajanimele seatud meeldetuletus ei saa öelda, milline ühendus vanuse saavutas. Seo see profiili ja selle aktiveerimisega ning tühista ootel teade, kui aktiveerimine lõpeb.
| 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 |
See tabel on leping sinu enda teavitaja jaoks, mitte ühegi kliendi callback-API kirjeldus. Mida iganes paigaldatud toode ühenduse oleku kohta dokumenteerib, on allikas, mille külge kinnituda; kui see avaldab ainult autentimissündmusi, ütle seda valjusti ja lepi jämedama käitumisega, selle asemel et sessiooni oletada.
Katsetage lühikese lävega
Ära kunagi silu ööpäevast taimerit ööpäevase ootamisega. Lisa konfigureeritav lävi, sea see kolmekümnele sekundile ja käivita neli üleminekut järjekorras: ühenda, oota, katkesta, ühenda uuesti. Iga üleminek peaks andma täpselt ühe olekumuutuse ja taasühendus peaks planeerima uue tähtaja, mitte pärima vana.
# 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
Vaata ajatempleid, mitte sõnastust. Teade, mis saabub eelmise sessiooni algusajaga, sidus vale objekti, ja teade, mis saabub ühe tähtaja kohta kaks korda, tähendab, et saadetud lippu ei salvestatud kunagi.
Uni, taasühendus ja kaotsiläinud kohaletoimetamine
Uni murrab mõlemad naiivsed lahendused. Monotoonne loendus peatub, kui masin magab, seinakella tähtaeg liigub edasi ja une ajal käivituv taimer toimetatakse hilja või üldse mitte. Otsusta, millist käitumist sinu nõue vajab, seejärel lase masinal üle läve magada ja kinnita see.
Toimetamine väärib sama hoolt. Kui teadet ei saa näidata, pane see järjekorda ja kontrolli enne lõplikku näitamist uuesti, kas sihtsessioon on veel olemas; muidu hoiatatakse kasutajat ühenduse eest, mis on juba lõppenud. Sunnitud katkestamine ja volituste uuendamine jäävad sellelt teelt välja, sest meeldetuletus, mis vaikselt muudab ühenduse saatust, on poliitikaotsus teate kuues.