Натискането на „Прекъсване“ работи и десет секунди по-късно тунелът се връща. Този цикъл рядко е лошо поведение на VPN клиента; това е скрипт за възстановяване, който е задавал само един въпрос — „паднал ли е?“ — и е отговарял, като се свързва. Щом отделите въпроса, на който е отговорил потребителят, от въпроса, който системата съобщава, поправката става малко количество състояние, а не по-дълго изчакване.

Два въпроса, не един

Трябва ли този профил да е свързан точно сега и какво съобщава системата в момента? Това са различни въпроси с различни собственици и политиката за възстановяване се нуждае от двата, преди да действа. Намерението е нещо, което вашият инструмент решава и помни. Наблюдаваното състояние е нещо, което платформата ви казва.

IntentWhat you observeWhat to do
WantedDropped unexpectedlyAllow one supported recovery attempt
Paused by the userDisconnectedDo nothing until intent changes
WantedAlready connectingWait instead of starting a rival attempt
WantedAuthentication needs a personPrompt, then stop replaying credentials

Четете редовете като политика, а не като списък от случаи. Вторият ред е този, който повечето скриптове пропускат, и е единственият ред, който различава монитор от машина, която държи да е права.

Наблюдаваният статус не е предпочитание

Моделът на състоянието Network Extension на Apple съобщава пет състояния: свързване, свързан, прекъсване, прекъснат и възстановяване. И петте описват връзката. Нито едно не казва „потребителят поиска този профил да остане на пауза“, защото това изобщо не е състояние на връзката. Клиентите, които не са изградени върху тази рамка, предоставят свои собствени поддържани контроли и извиквания на статус и чертаят същата граница със своя речник.

Следствието е, че прекъснат статус никога не може да се тълкува сам по себе си. Той означава едно от поне три неща: тунелът падна, потребителят го спря или системата е между опити. Само вашият собствен запис за намерението може да ги различи. Запишете този запис, пазете го през рестартирания, ако трябва да преживее презареждане, и го обновявайте в момента, в който потребителят действа, вместо да го извеждате по-късно от ред в журнала.

scutil --nc list
scutil --nc status "Office VPN"

Кой друг има право да стартира този профил

Паузата, обещана от вашия помощник, е силна точно колкото другите собственици на същия профил. Правило On Demand, управлявана конфигурация или втори клиент могат да поискат връзка и помощникът ви ще изглежда счупен, докато се държи точно както е написан.

Открийте всеки механизъм, който може да стартира профила преди да обещаете да уважавате пауза, и запишете кой печели. Когато управлявана услуга умишлено отказва лична опция за пауза, това е решение на администратор за политика, а не празнина, която скрипт да запълни, като се бори с управлението.

Направете повторенията скучни

Ограничете броя опити и направете всеки от тях чувствителен към нещо, което се е променило: мрежата се върна, шлюзът отговори, подканата за идентификационни данни приключи. Недостъпен шлюз, изтекъл идентификатор и отхвърлен втори фактор се нуждаят от три различни отговора, а стегнатият цикъл дава на трите един и същ.

Наблюдавайте какво всъщност произвежда бързото повторение на екрана. Повтарящите се диалози, които потребителят затваря, са по-лоши от едно ясно съобщение за грешка и учат хората да щракат през подкани, без да ги четат.

Паузата и политиката за трафик са отделни обещания

Тунел, поставен на пауза от потребителя, често оставя трафика блокиран нарочно и това е целият смисъл на политика от типа kill switch. Това означава, че Пауза трябва да обещава точно едно нещо: възстановяването спира. Тя не бива тихо да променя какво разрешава мрежата.

Решете поведението на трафика отделно, документирайте го до контролата за пауза и го поддържайте последователно, независимо дали тунелът е на пауза, е повреден или липсва. Иначе потребителят научава, че натискането на „Прекъсване“ прави нещо непредвидимо и следващият тикет ще е за мрежа, която „понякога спира да работи“ без видима причина.

Подобни статии