VPN за Mac се свързва отново веднага след натискане на „Прекъсване“
Монитор, който приема всяко прекъснато състояние за повреда, ще воюва с бутона за прекъсване. Дръжте намерението и наблюдаваното състояние отделно, после ограничете повторенията.
Натискането на „Прекъсване“ работи и десет секунди по-късно тунелът се връща. Този цикъл рядко е лошо поведение на 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 съобщава пет състояния: свързване, свързан, прекъсване, прекъснат и възстановяване. И петте описват връзката. Нито едно не казва „потребителят поиска този профил да остане на пауза“, защото това изобщо не е състояние на връзката. Клиентите, които не са изградени върху тази рамка, предоставят свои собствени поддържани контроли и извиквания на статус и чертаят същата граница със своя речник.
Следствието е, че прекъснат статус никога не може да се тълкува сам по себе си. Той означава едно от поне три неща: тунелът падна, потребителят го спря или системата е между опити. Само вашият собствен запис за намерението може да ги различи. Запишете този запис, пазете го през рестартирания, ако трябва да преживее презареждане, и го обновявайте в момента, в който потребителят действа, вместо да го извеждате по-късно от ред в журнала.
scutil --nc list
scutil --nc status "Office VPN"
Кой друг има право да стартира този профил
Паузата, обещана от вашия помощник, е силна точно колкото другите собственици на същия профил. Правило On Demand, управлявана конфигурация или втори клиент могат да поискат връзка и помощникът ви ще изглежда счупен, докато се държи точно както е написан.
Открийте всеки механизъм, който може да стартира профила преди да обещаете да уважавате пауза, и запишете кой печели. Когато управлявана услуга умишлено отказва лична опция за пауза, това е решение на администратор за политика, а не празнина, която скрипт да запълни, като се бори с управлението.
Направете повторенията скучни
Ограничете броя опити и направете всеки от тях чувствителен към нещо, което се е променило: мрежата се върна, шлюзът отговори, подканата за идентификационни данни приключи. Недостъпен шлюз, изтекъл идентификатор и отхвърлен втори фактор се нуждаят от три различни отговора, а стегнатият цикъл дава на трите един и същ.
Наблюдавайте какво всъщност произвежда бързото повторение на екрана. Повтарящите се диалози, които потребителят затваря, са по-лоши от едно ясно съобщение за грешка и учат хората да щракат през подкани, без да ги четат.
Паузата и политиката за трафик са отделни обещания
Тунел, поставен на пауза от потребителя, често оставя трафика блокиран нарочно и това е целият смисъл на политика от типа kill switch. Това означава, че Пауза трябва да обещава точно едно нещо: възстановяването спира. Тя не бива тихо да променя какво разрешава мрежата.
Решете поведението на трафика отделно, документирайте го до контролата за пауза и го поддържайте последователно, независимо дали тунелът е на пауза, е повреден или липсва. Иначе потребителят научава, че натискането на „Прекъсване“ прави нещо непредвидимо и следващият тикет ще е за мрежа, която „понякога спира да работи“ без видима причина.