Mac VPN се сам поново повезује одмах након притиска на Искључи
Монитор који свако искључено стање третира као квар бориће се против дугмета Искључи. Одвојте намеру од посматраног стања, а затим ограничите поновљене покушаје.
Притисак на Искључи функционише, а десет секунди касније тунел се ипак враћа. Та петља је ретко погрешно понашање VPN клијента; то је скрипта за опоравак која је увек постављала само једно питање, „да ли је пао?“, и одговарала на њега повезивањем. Када одвојите питање на које је одговорио корисник од питања које систем извештава, поправка постаје мала количина стања уместо дужег чекања.
Два питања, не једно
Треба ли овај профил да буде повезан управо сада, и шта систем тренутно извештава? То су различита питања са различитим власницима, а политика опоравка захтева оба пре него што делује. Намера је нешто што ваша алатка одлучује и памти. Посматрано стање је нешто што вам платформа саопштава.
| 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 |
Читајте редове као политику, а не као списак случајева. Други ред је онај који већина скрипти изоставља, и то је једини ред који разликује монитор од машине која инсистира на томе да је у праву.
Посматрано стање није преференција
Модел стања Network Extension компаније Apple извештава о стањима connecting, connected, disconnecting, disconnected и recovery. Свих пет описују везу. Ниједно не каже „корисник је затражио да овај профил остане паузиран“, јер то уопште није стање везе. Клијенти који нису изграђени на том оквиру излажу своје подржане контроле и позиве стања, и повлаче исту границу својим речником.
Последица је да се искључено стање никада не може тумачити само. Оно значи једно од најмање три ствари: тунел је пао, корисник га је зауставио или је систем између покушаја. Само ваш сопствени запис намере може да их разликује. Запишите тај запис, чувајте га између поновног покретања ако мора да преживи поновно покретање, и ажурирајте га у тренутку када корисник делује, уместо да га касније закључујете из линије дневника.
scutil --nc list
scutil --nc status "Office VPN"
Ко још сме да покрене овај профил
Пауза коју обећава ваш помоћник јака је колико и остали власници истог профила. On Demand правило, управљана конфигурација или други клијент могу да затраже везу, и ваш помоћник ће изгледати покварен док се понаша тачно како је написано.
Пронађите сваки механизам који може да покрене профил пре него што обећате да ћете поштовати паузу, и запишите који побеђује. Када управљана услуга намерно ускраћује личну опцију паузе, то је одлука администратора о политици, а не празнина коју би скрипта требало да попуни борећи се са управљањем.
Учините поновљене покушаје досадним
Ограничите број покушаја и учините сваки осетљивим на нешто што се променило: мрежа се вратила, мрежни пролаз је одговорио, захтев за акредитиве је завршен. Недоступан мрежни пролаз, истекли идентитет и одбијени други фактор захтевају три различите реакције, а тесна петља даје свима трима исту.
Погледајте шта брз поновни покушај заиста производи на екрану. Понављани дијалози које корисник затвара гори су од једне јасне поруке о грешци, и уче људе да кликћу кроз захтеве без читања.
Пауза и политика саобраћаја су одвојена обећања
Тунел који је корисник паузирао често намерно оставља саобраћај блокиран, и то је цео смисао политике у стилу kill switch. То значи да Пауза треба да обећа тачно једну ствар: опоравак се зауставља. Не би требало тихо да мења шта мрежа дозвољава.
Одлучите о понашању саобраћаја одвојено, документујте га поред контроле Пауза и држите га доследним без обзира на то да ли је тунел паузиран, неуспешан или одсутан. Иначе корисник научи да притисак на Искључи чини нешто непредвидиво, а следећи тикет за подршку односи се на мрежу која „понекад престане да ради“ без видљивог разлога.