Kāpēc 23 stundu VPN atgādinājums nostrādā nepareizajai sesijai
23 stundu paziņojumam jāseko vienai sesijai, nevis kontam. Piesaistiet taimeri savienojumam, kas sākās, un uzskatiet miegu un atkārtotu savienojumu par atsevišķiem gadījumiem.
Paziņojums parādījās divdesmit minūtes pēc savienojuma. Skaitītājs zem tā darbojās kopš iepriekšējā rīta vai kopš pēdējās konta autentifikācijas, un nekas brīdinājumā nenorādīja, kurš. Tas ir simptoms: atgādinājums, kas piesaistīts kaut kam citam, nevis savienojumam jūsu priekšā.
Risinājums nav labāks brīdinājums. Tas ir lēmums, kuru pulksteni prasība domā, un pēc tam taimera piesaiste objektam, kas pastāv šajā pulkstenī.
Kas nostrādāja un ko tas skaitīja
Trīs iespējami avoti rada vienu un to pašu ziņojumu. Kalendāra noteikums darbojas fiksētā vietējā laikā un neko nezina par tuneļiem. Klienta skaitītājs uzkrājas, kamēr jebkurš savienojums ir aktīvs, un pārdzīvo atkārtotus savienojumus. Vārtejas politika izbeidz sesiju servera pusē un vispirms nosūta brīdinājumu.
Tikai pēdējie divi attiecas uz sesiju, un arī tie nepiekrīt. Klienta skaitītājs mēra to, ko novēroja vietējais process; vārteja mēra to, ko tā autentificēja un uzskaitīja. Miegs, tīkla maiņa vai novērotāja restartēšana var tos šķirt stundām, un tāpēc brīdinājums un piespiedu izbeigšanās attālinās viens no otra.
Trīs pulksteņi aiz vienas prasības
Sāciet ar teikuma pierakstīšanu, ko jūs patiešām vēlaties. Brīdināt pirms vārteja izbeidz šo savienojumu nav tā pati prasība kā atgādināt pēc dienas savienota laika. Tas nav arī tas pats, kas ziņot, ka šī sesija darbojas jau 23 stundas. Katra versija nosauc citu notikumu, un citai komponentei uz to jāatbild.
Pēc tam pārbaudiet, vai dati pastāv. Vietējais sākuma laikspiedols dod sesijas vecumu bez atkarības no servera. Vārtejas politika dod atlikušo mūžu, bet tikai tad, ja vārteja to atklāj. Lietošanas atskaite dod ilgumu pēc fakta, un tas nevar vadīt iepriekšēju paziņojumu.
Piesaistiet taimeri sesijai, nevis kontam
Vispirms izvēlieties objektu. Konts var turēt vairākas ierīces un vairākas vienlaicīgas sesijas, tāpēc atgādinājums, kas piesaistīts lietotājvārdam, nevar pateikt, kurš savienojums sasniedza vecumu. Piesaistiet to profilam un šai aktivizācijai, un atceliet gaidošo paziņojumu, kad aktivizācija beidzas.
| 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 |
Šī tabula ir līgums jūsu pašu paziņotājam, nevis kāda klienta atzvanīšanas API apraksts. Viss, ko instalētais produkts dokumentē par savienojuma stāvokli, ir avots, pie kura jāpiesaistās; kur tas atklāj tikai autentifikācijas notikumus, sakiet to skaļi un pieņemiet rupjāku uzvedību, nevis seciniet sesiju.
Pārbaudiet to ar īsu slieksni
Nekad neatkļūdo diennakts taimeri ar diennakts gaidīšanu. Pievienojiet konfigurējamu slieksni, iestatiet to uz trīsdesmit sekundēm un pēc kārtas izpildiet četras pārejas: savienot, gaidīt, atvienot, savienot no jauna. Katrai pārejai jādod tieši viena stāvokļa izmaiņa, un atkārtotajam savienojumam jāieplāno jauns termiņš, nevis jāmanto vecais.
# 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
Skatieties laikspiedolus, nevis formulējumu. Paziņojums, kas nāk ar iepriekšējās sesijas sākuma laiku, ir piesaistījis nepareizo objektu, un paziņojums, kas nāk divreiz vienam termiņam, nozīmē, ka nosūtīšanas karodziņš nekad netika saglabāts.
Miegs, atkārtots savienojums un zaudēta piegāde
Miegs salauž abus naivos dizainus. Monotonā atpakaļskaitīšana apstājas, kamēr mašīna guļ, termiņš pēc sienas pulksteņa turpina kustēties, un taimeris, kas iedarbojas miega laikā, tiek piegādāts vēlu vai nemaz. Izlemiet, kāda uzvedība nepieciešama jūsu prasībai, pēc tam iemidiniet mašīnu pāri slieksnim un apstipriniet.
Piegāde ir pelnījusi tādu pašu rūpību. Ja paziņojumu nevar parādīt, ievietojiet to rindā un pirms galīgās parādīšanas vēlreiz pārbaudiet, vai mērķa sesija joprojām pastāv; citādi lietotājs tiek brīdināts par jau beigušos savienojumu. Piespiedu atvienošana un akreditācijas datu atjaunošana paliek ārpus šī ceļa, jo atgādinājums, kas klusi maina savienojuma likteni, ir politikas lēmums paziņojuma drēbēs.