Націск «Адключыць» спрацоўвае, і праз дзесяць секунд тунель усё роўна вяртаецца. Гэты цыкл рэдка бывае збоем 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. Гэта значыць, што Пауза павінна абяцаць роўна адно: аднаўленне спыняецца. Яна не павінна моўчкі змяняць тое, што дазваляе сетка.

Вызначце паводзіны трафіку асобна, задокументуйце іх побач з элементам кіравання Паузай і падтрымлівайце іх нязменнымі, ці тунель на паузе, ці сарваўся, ці адсутнічае. Інакш карыстальнік даведаецца, што націск «Адключыць» робіць нешта непрадказальнае, і наступная зваротная заяўка будзе пра сетку, якая «часам перастае працаваць» без бачнай прычыны.

Падобныя артыкулы