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