Mengapa peringatan VPN 23 jam berbunyi untuk sesi yang salah
Notis 23 jam harus mengikut satu sesi, bukan akaun. Ikat pemasa pada sambungan yang bermula dan anggap tidur serta sambung semula sebagai kes berasingan.
Notis muncul dua puluh minit selepas menyambung. Pembilang di bawahnya telah berjalan sejak pagi sebelumnya, atau sejak akaun kali terakhir mengesahkan identiti, dan tiada apa dalam amaran yang menyatakan yang mana. Itulah gejalanya: peringatan yang terikat pada sesuatu selain sambungan di hadapan anda.
Pembaikannya bukan amaran yang lebih baik. Ia adalah memutuskan jam mana yang dimaksudkan oleh keperluan, kemudian mengikat pemasa pada objek yang wujud dalam jam itu.
Apa yang berbunyi, dan apa yang dikiranya
Tiga sumber yang mungkin menghasilkan mesej yang sama. Peraturan kalendar berjalan pada waktu tempatan tetap dan tidak tahu apa-apa tentang terowong. Pembilang dalam klien terkumpul selagi mana-mana sambungan hidup dan bertahan melalui sambung semula. Dasar gateway menamatkan sesi di sebelah pelayan dan menghantar amaran dahulu.
Hanya dua yang terakhir berkaitan sesi, dan kedua-duanya pun tidak bersetuju. Pembilang klien mengukur apa yang diperhatikan oleh proses tempatan; gateway mengukur apa yang dia sahkan dan kira. Tidur, perubahan rangkaian atau permulaan semula pemerhati boleh memisahkan kedua-duanya sehingga berjam-jam, dan itulah sebabnya amaran dan tamat tempoh yang dipaksa saling menjauh.
Tiga jam di sebalik satu keperluan
Mulakan dengan menulis ayat yang anda benar-benar mahu. Memberi amaran sebelum gateway menamatkan sambungan ini bukan keperluan yang sama dengan mengingatkan selepas sehari masa bersambung. Ia juga bukan perkara yang sama dengan melaporkan bahawa sesi ini telah hidup selama 23 jam. Setiap versi menamakan peristiwa yang berbeza, dan komponen yang berbeza mesti menjawabnya.
Kemudian semak sama ada datanya wujud. Cap masa mula tempatan memberi anda umur sesi tanpa pergantungan pada pelayan. Dasar gateway memberi anda baki hayat, tetapi hanya jika gateway mendedahkannya. Laporan penggunaan memberi anda tempoh selepas kejadian, dan itu tidak boleh memacu pemberitahuan awal.
Ikat pemasa pada sesi, bukan pada akaun
Pilih objek dahulu. Akaun boleh memegang beberapa peranti dan beberapa sesi serentak, jadi peringatan yang dikunci pada nama pengguna tidak boleh mengatakan sambungan mana yang mencapai umur itu. Kuncikan pada profil serta pengaktifan itu, dan batalkan notis yang menunggu apabila pengaktifan tamat.
| 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 |
Jadual itu ialah kontrak untuk pemberitahu anda sendiri, bukan penerangan API panggilan balik mana-mana klien. Apa sahaja yang didokumenkan oleh produk yang dipasang tentang keadaan sambungan ialah sumber yang perlu diikat; di mana ia hanya mendedahkan peristiwa pengesahan, katakan demikian dengan lantang dan terima tingkah laku yang lebih kasar daripada membuat kesimpulan tentang sesi.
Ujinya dengan ambang yang pendek
Jangan sekali-kali nyahpepijat pemasa sehari dengan penantian sehari. Tambah ambang yang boleh dikonfigurasikan, tetapkan pada tiga puluh saat, dan jalankan empat peralihan mengikut urutan: sambung, tunggu, putus, sambung semula. Setiap peralihan harus menghasilkan tepat satu perubahan keadaan, dan sambung semula harus menjadualkan tarikh akhir baharu dan bukannya mewarisi yang lama.
# 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
Lihat cap masa, bukan perkataan. Notis yang tiba dengan waktu mula sesi sebelumnya telah mengikat objek yang salah, dan notis yang tiba dua kali untuk satu tarikh akhir bermakna bendera dihantar tidak pernah disimpan.
Tidur, sambung semula dan penghantaran yang terlepas
Tidur memecahkan kedua-dua reka bentuk naif. Kira detik menurun monotonik berhenti semasa mesin tidur, tarikh akhir mengikut jam dinding terus bergerak, dan pemasa yang tercetus semasa tidur dihantar lewat atau tidak sama sekali. Tentukan tingkah laku mana yang diperlukan oleh keperluan anda, kemudian tidurkan mesin melepasi ambang dan sahkan.
Penghantaran juga memerlukan penjagaan yang sama. Jika notis tidak dapat dipaparkan, letakkan dalam baris gilir, dan semak semula bahawa sesi sasaran masih wujud sebelum akhirnya memaparkannya; jika tidak, pengguna diberi amaran tentang sambungan yang sudah tamat. Pemutusan paksa dan pembaharuan kelayakan kekal di luar laluan ini, kerana peringatan yang mengubah nasib sambungan secara senyap ialah keputusan dasar yang memakai pakaian pemberitahuan.