Зошто 23-часовно потсетување за VPN се активира за погрешната сесија
Известувањето од 23 часа треба да следи една сесија, а не сметката. Прикачете го тајмерот на врската што започнала и третирајте го спиењето и повторното поврзување како одделни случаи.
Известувањето се појави дваесет минути по поврзувањето. Бројачот под него работеше од претходното утро, или од последната автентикација на сметката, и ништо во предупредувањето не кажа кое. Тоа е симптомот: потсетување врзано за нешто друго, а не за врската пред вас.
Решението не е подобро предупредување. Тоа е одлука кој часовник го мисли барањето, а потоа врзување на тајмерот за објект што постои во тој часовник.
Што се активираше и што броеше
Три веројатни извори даваат иста порака. Календарското правило работи во фиксно локално време и не знае ништо за тунели. Бројачот во клиентот се собира додека е активна било која врска и ги преживува повторните поврзувања. Политиката на портата ја истекува сесијата на страната на серверот и прво испраќа предупредување.
Само последните две се за сесија, а ни тие не се согласуваат. Бројачот на клиентот мери што забележал локалниот процес; портата мери што автентицирала и пресметала. Спиењето, промената на мрежата или рестартирањето на набљудувачот можат да ги разделат со часови, и затоа предупредувањето и присилното истекување се разидуваат.
Три часовници зад едно барање
Започнете со запишување на реченицата што навистина ја сакате. Предупредување пред портата да ја заврши оваа врска не е исто барање како потсетување по ден поврзано време. Не е исто ни како известување дека оваа сесија работи 23 часа. Секоја верзија именува различен настан, и различен компонент треба да одговори на него.
Потоа проверете дали податоците постојат. Локална почетна временска ознака ви ја дава староста на сесијата без зависност од серверот. Политиката на портата ви го дава преостанатиот животен век, но само ако портата го изложува. Извештајот за користење ви го дава траењето откако ќе се случи, а тоа не може да управува со однапред известување.
Прикачете го тајмерот на сесијата, а не на сметката
Прво изберете го објектот. Сметката може да држи неколку уреди и неколку истовремени сесии, па потсетување врзано за корисничкото име не може да каже која врска ја достигна староста. Врзете го за профилот и тоа активирање, и откажете го известувањето што чека кога активирањето ќе заврши.
| 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 |
Таа табела е договор за вашиот сопствен известувач, а не опис на API за повратен повик на кој било клиент. Што и да документира инсталираниот производ за состојбата на врската, тоа е изворот за кој треба да се врзете; каде што изложува само настани за автентикација, кажете го тоа гласно и прифатете го погрубото однесување наместо да заклучувате сесија.
Тестирајте го со краток праг
Никогаш не отстранувајте грешки во дневен тајмер со дневно чекање. Додадете конфигуриран праг, поставете го на триесет секунди и изведете четири премини по ред: поврзи, чекај, исклучи, поврзи повторно. Секој премин треба да даде точно една промена на состојбата, а повторното поврзување треба да закаже нов рок наместо да го наследи стариот.
# 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
Гледајте ги временските ознаки, а не формулацијата. Известување што пристигнува со почетното време на претходната сесија врзало погрешен објект, а известување што пристигнува двапати за еден рок значи дека знамето за испратено никогаш не било зачувано.
Спиење, повторно поврзување и пропуштена достава
Спиењето ги крши двата наивни дизајни. Монотоното одбројување запира додека машината спие, рокот по ѕидниот часовник продолжува да се движи, а тајмерот што се активира за време на спиење се доставува доцна или воопшто не. Одлучете какво однесување бара вашето барање, потоа заспијте ја машината преку прагот и потврдете.
Доставата заслужува исто внимание. Ако известувањето не може да се прикаже, ставете го во ред и повторно проверете дали целната сесија сè уште постои пред конечно да го прикажете; инаку корисникот е предупреден за врска што веќе завршила. Присилното исклучување и обновувањето на акредитивите остануваат надвор од овој пат, бидејќи потсетување што тивко ја менува судбината на врската е политичка одлука облечена како известување.