Miért indul be egy 23 órás VPN-emlékeztető a rossz munkamenethez
A 23 órás értesítésnek egy munkamenetet kell követnie, nem a fiókot. Rögzítse az időzítőt ahhoz a kapcsolathoz, amely elindult, és kezelje az alvást és az újracsatlakozást külön esetként.
Az értesítés húsz perccel a csatlakozás után jelent meg. Az alatta lévő számláló az előző reggel óta, vagy a fiók utolsó hitelesítése óta futott, és semmi a riasztásban nem mondta meg, melyik. Ez a tünet: egy emlékeztető, amely valami máshoz kapcsolódik, mint az előtted lévő kapcsolat.
A megoldás nem egy jobb riasztás. Hanem annak eldöntése, melyik órát érti a követelmény, majd az időzítő hozzákötése egy objektumhoz, amely abban az órában létezik.
Mi sült el, és mit számolt
Három valószínű forrás ugyanazt az üzenetet adja. Egy naptárszabály rögzített helyi időben fut, és semmit sem tud az alagutakról. Az ügyfélben lévő számláló addig halmozódik, amíg bármely kapcsolat fennáll, és túléli az újracsatlakozásokat. Egy átjáró-szabályzat a kiszolgáló oldalán járatja le a munkamenetet, és előbb figyelmeztetést küld.
Csak az utolsó kettő szól munkamenetről, és még azok sem értenek egyet. Az ügyfél számlálója azt méri, amit a helyi folyamat megfigyelt; az átjáró azt méri, amit hitelesített és elszámolt. Egy alvás, hálózatváltás vagy a megfigyelő újraindítása órákkal elválaszthatja őket, és ezért távolodik el a riasztás és a kikényszerített lejárat.
Három óra egy követelmény mögött
Kezdje azzal, hogy leírja a mondatot, amelyet valóban szeretne. Figyelmeztetni, mielőtt az átjáró befejezi ezt a kapcsolatot, nem ugyanaz a követelmény, mint egy nap csatlakozott idő után emlékeztetni. Az sem ugyanaz, mint jelenteni, hogy ez a munkamenet 23 órája fennáll. Minden változat más eseményt nevez meg, és más összetevőnek kell rá válaszolnia.
Ezután ellenőrizze, hogy léteznek-e az adatok. Egy helyi kezdési időbélyeg megadja a munkamenet korát a kiszolgálótól függetlenül. Egy átjáró-szabályzat megadja a hátralévő élettartamot, de csak akkor, ha az átjáró közzéteszi. Egy használati jelentés utólag adja meg az időtartamot, és az nem tud előzetes értesítést vezérelni.
Az időzítőt a munkamenethez kösse, ne a fiókhoz
Először az objektumot válassza ki. Egy fiók több eszközt és több egyidejű munkamenetet is tarthat, ezért a felhasználónévhez kötött emlékeztető nem tudja megmondani, melyik kapcsolat érte el a kort. Kösse a profilhoz és ehhez az aktiváláshoz, és amikor az aktiválás véget ér, törölje a függőben lévő értesítést.
| 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 |
Az a táblázat a saját értesítője számára készült szerződés, nem egyetlen ügyfél visszahívási API-jának leírása. Amit a telepített termék a kapcsolat állapotáról dokumentál, az a forrás, amelyhez kötődni kell; ahol csak hitelesítési eseményeket tesz közzé, mondja ki hangosan, és fogadja el a durvább viselkedést ahelyett, hogy munkamenetet következtetne ki.
Rövid küszöbbel próbálja ki
Soha ne hibakeressen egy egész napos időzítőt egész napos várakozással. Adjon hozzá egy konfigurálható küszöböt, állítsa harminc másodpercre, és futtasson le négy átmenetet sorrendben: csatlakozás, várakozás, bontás, újracsatlakozás. Minden átmenetnek pontosan egy állapotváltozást kell adnia, és az újracsatlakozásnak új határidőt kell ütemeznie, nem pedig örökölnie a régit.
# 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
Az időbélyegeket nézze, ne a megfogalmazást. Az az értesítés, amely az előző munkamenet kezdő időpontjával érkezik, a rossz objektumhoz kötődött, és az az értesítés, amely egy határidőre kétszer érkezik, azt jelenti, hogy az elküldve jelző soha nem került mentésre.
Alvás, újracsatlakozás és elmaradt kézbesítés
Az alvás mindkét naiv tervet megtöri. A monoton visszaszámlálás megáll, miközben a gép alszik, a falióra szerinti határidő tovább mozog, és az alvás közben elsülő időzítő késve vagy egyáltalán nem érkezik meg. Döntse el, milyen viselkedésre van szüksége a követelményének, majd altassa el a gépet a küszöbön túl, és erősítse meg.
A kézbesítés ugyanazt a gondosságot érdemli. Ha az értesítés nem jeleníthető meg, tegye sorba, és a végleges megjelenítés előtt ellenőrizze újra, hogy a cél-munkamenet még létezik-e; különben a felhasználó egy már befejeződött kapcsolatról kap figyelmeztetést. A kényszerített bontás és a hitelesítő adatok megújítása ezen az úton kívül marad, mert az az emlékeztető, amely csendben megváltoztatja a kapcsolat sorsát, értesítésnek öltözött szabályzatdöntés.