VPN-ul din Mac se reconectează singur imediat după ce apeși Deconectare
Un monitor care tratează fiecare stare deconectată ca pe o defecțiune va lupta cu butonul Deconectare. Separă intenția de starea observată, apoi limitează reîncercările.
Apăsarea butonului Deconectare funcționează, iar zece secunde mai târziu tunelul revine oricum. Acea buclă este rareori clientul VPN comportându-se greșit; este un script de recuperare care punea mereu o singură întrebare, „este căzut?“, și răspundea la ea conectându-se. Odată ce separi întrebarea la care a răspuns utilizatorul de întrebarea pe care o raportează sistemul, corecția devine o cantitate mică de stare în loc de o așteptare mai lungă.
Două întrebări, nu una
Ar trebui acest profil să fie conectat chiar acum, și ce raportează sistemul în acest moment? Sunt întrebări diferite cu proprietari diferiți, iar o politică de recuperare are nevoie de ambele înainte de a acționa. Intenția este ceva ce unealta ta decide și reține. Starea observată este ceva ce platforma îți spune.
| Intent | What you observe | What to do |
|---|---|---|
| Wanted | Dropped unexpectedly | Allow one supported recovery attempt |
| Paused by the user | Disconnected | Do nothing until intent changes |
| Wanted | Already connecting | Wait instead of starting a rival attempt |
| Wanted | Authentication needs a person | Prompt, then stop replaying credentials |
Citește rândurile ca pe o politică, nu ca pe o listă de cazuri. Al doilea rând este cel pe care majoritatea scripturilor îl omit, și este singurul rând care distinge un monitor de o mașină care insistă să aibă dreptate.
Starea observată nu este o preferință
Modelul de stare Network Extension al Apple raportează stările connecting, connected, disconnecting, disconnected și recovery. Toate cinci descriu conexiunea. Niciunul nu spune „utilizatorul a cerut ca acest profil să rămână în pauză“, pentru că aceea nu este deloc o stare de conexiune. Clienții care nu sunt construiți pe acel cadru își expun propriile controale și apeluri de stare acceptate, și trasează aceeași linie în propriul vocabular.
Consecința este că o stare deconectată nu poate fi niciodată interpretată singură. Înseamnă unul dintre cel puțin trei lucruri: tunelul a căzut, utilizatorul l-a oprit sau sistemul este între încercări. Doar propria ta evidență a intenției le poate distinge. Notează acea evidență, păstreaz-o între reporniri dacă trebuie să supraviețuiască unei reporniri și actualizeaz-o în momentul în care utilizatorul acționează, în loc să o deduci mai târziu dintr-o linie de jurnal.
scutil --nc list
scutil --nc status "Office VPN"
Cine altcineva are voie să pornească acest profil
O pauză promisă de ajutorul tău este doar atât de puternică pe cât sunt ceilalți proprietari ai aceluiași profil. O regulă On Demand, o configurație gestionată sau un al doilea client pot solicita o conexiune, iar ajutorul tău va părea stricat în timp ce se comportă exact așa cum este scris.
Găsește fiecare mecanism care poate porni profilul înainte de a promite că vei respecta o pauză, și notează care câștigă. Când un serviciu gestionat reține în mod deliberat o opțiune de pauză personală, aceea este o decizie a administratorului despre politică, nu o lacună pe care un script ar trebui să o umple luptându-se cu managementul.
Fă reîncercările plictisitoare
Limitează numărul de încercări și fă fiecare să răspundă la ceva ce s-a schimbat: rețeaua a revenit, gateway-ul a răspuns, solicitarea de acreditări s-a încheiat. Un gateway indisponibil, o identitate expirată și un al doilea factor respins necesită trei răspunsuri diferite, iar o buclă strânsă le dă tuturor trei același răspuns.
Uită-te la ce produce de fapt o reîncercare rapidă pe ecran. Ferestrele de dialog repetate pe care utilizatorul le închide sunt mai rele decât un singur mesaj clar de eroare, și îi învață pe oameni să dea clic prin solicitări fără să le citească.
Pauza și politica de trafic sunt promisiuni separate
Un tunel pus în pauză de utilizator lasă adesea traficul blocat intenționat, iar acesta este întregul rost al unei politici în stil kill switch. Asta înseamnă că Pauza ar trebui să promită exact un singur lucru: recuperarea se oprește. Nu ar trebui să schimbe în tăcere ce permite rețeaua.
Decide comportamentul traficului separat, documentează-l lângă controlul Pauză și păstrează-l consecvent indiferent dacă tunelul este în pauză, a eșuat sau lipsește. Altfel utilizatorul învață că apăsarea Deconectare face ceva imprevizibil, iar următorul tichet de asistență este despre o rețea care „uneori încetează să funcționeze“ fără un motiv vizibil.