Mac VPN sam se ponovno spaja odmah nakon pritiska na Odspoji
Nadzornik koji svako odspojeno stanje tretira kao kvar borit će se protiv gumba Odspoji. Razdvojite namjeru od promatranog stanja, a zatim ograničite ponovne pokušaje.
Pritisak na Odspoji djeluje, a deset sekundi kasnije tunel se ipak vraća. Ta petlja rijetko je loše ponašanje VPN klijenta; to je skripta za oporavak koja je uvijek postavljala samo jedno pitanje, „je li dolje?“, i odgovarala na njega spajanjem. Kad odvojite pitanje na koje je korisnik odgovorio od pitanja koje sustav izvještava, popravak postaje mala količina stanja umjesto duljeg spavanja.
Dva pitanja, ne jedno
Treba li ovaj profil upravo sada biti spojen, i što sustav trenutačno izvještava? To su različita pitanja s različitim vlasnicima, a politika oporavka treba oba prije nego što djeluje. Namjera je nešto što vaš alat odlučuje i pamti. Promatrano stanje je nešto što vam platforma govori.
| 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 |
Čitajte retke kao politiku, a ne kao popis slučajeva. Drugi redak je onaj koji većina skripti izostavlja, i to je jedini redak koji razlikuje nadzornik od stroja koji inzistira na tome da je u pravu.
Promatrano stanje nije sklonost
Appleov model stanja Network Extension izvještava o stanjima connecting, connected, disconnecting, disconnected i recovery. Svih pet opisuju vezu. Nijedno ne kaže „korisnik je tražio da ovaj profil ostane pauziran“, jer to uopće nije stanje veze. Klijenti koji nisu izgrađeni na tom okviru izlažu svoje podržane kontrole i pozive stanja, i povlače istu granicu svojim vlastitim rječnikom.
Posljedica je da se odspojeno stanje nikada ne može tumačiti samo po sebi. Ono znači jedno od najmanje tri stvari: tunel je pao, korisnik ga je zaustavio ili je sustav između pokušaja. Samo vaš vlastiti zapis namjere može ih razlikovati. Zapišite taj zapis, čuvajte ga kroz ponovna pokretanja ako mora preživjeti ponovno pokretanje, i ažurirajte ga u trenutku kada korisnik djeluje umjesto da ga kasnije zaključujete iz retka dnevnika.
scutil --nc list
scutil --nc status "Office VPN"
Tko još smije pokrenuti ovaj profil
Pauza koju obećava vaš pomoćnik jaka je koliko i ostali vlasnici istoga profila. On Demand pravilo, upravljana konfiguracija ili drugi klijent mogu svi zatražiti vezu, a vaš će pomoćnik izgledati pokvaren dok se ponaša točno kako je napisano.
Pronađite svaki mehanizam koji može pokrenuti profil prije nego što obećate poštovati pauzu, i zapišite koji pobjeđuje. Kad upravljana usluga namjerno uskraćuje osobnu opciju pauze, to je administratorova odluka o politici, a ne praznina koju bi skripta trebala popuniti boreći se s upravljanjem.
Učinite ponovne pokušaje dosadnima
Ograničite broj pokušaja i učinite svaki od njih osjetljivim na nešto što se promijenilo: mreža se vratila, pristupnik je odgovorio, upit za vjerodajnice je dovršen. Nedostupan pristupnik, istekli identitet i odbijeni drugi faktor trebaju tri različita odgovora, a tijesna petlja daje svima trima isti.
Pogledajte što brzi ponovni pokušaj doista proizvodi na zaslonu. Ponavljeni dijalozi koje korisnik odbacuje gori su od jedne jasne poruke o pogrešci, i uče ljude da klikću kroz upite bez čitanja.
Pauza i prometna politika odvojena su obećanja
Tunel koji je korisnik pauzirao često namjerno ostavlja promet blokiranim, i to je cijela poanta politike u stilu kill switcha. To znači da bi Pauza trebala obećati točno jednu stvar: oporavak prestaje. Ne bi trebala tiho mijenjati što mreža dopušta.
Odlučite o ponašanju prometa odvojeno, dokumentirajte ga uz kontrolu Pauza i držite ga dosljednim bez obzira na to je li tunel pauziran, neuspješan ili odsutan. Inače korisnik nauči da pritisak na Odspoji čini nešto nepredvidivo, a sljedeća potpora odnosi se na mrežu koja „ponekad prestane raditi“ bez vidljivog razloga.