Нехта пытаецца, ці працуе VPN, і тры розныя людзі маюць на ўвазе тры розныя рэчы. Аператар мае на ўвазе, што офісны профіль скончыў аўтэнтыфікацыю. Планавальнік мае на ўвазе, што прыватнае API адкажа. Праверка бяспекі мае на ўвазе, што гэты канкрэтны запыт выйшаў праз абаронены шлях. А скрыпт, які шукае ў табліцы маршрутаў імя інтэрфейса, не дае надзейнага адказу ні на адно з гэтага.

Таму кантрольны спіс пачынаецца раней за выкананне любой каманды: назавіце прадмет праверкі. Усё астатняе — гэта выбар інтэрфейса, які сапраўды можа пра яго паведаміць.

Назавіце прадмет да каманды

Напішыце пытанне як прэдыкат з прадметам. “Ці падключаны офісны профіль” можна праверыць, і ў яго ёсць уласнік, які можа адказаць. “Ці можа гэтая задача дасягнуць унутранага API” — другі прэдыкат з іншым рэжымам збою. “Ці выкарыстоўвае гэты запыт абаронены шлях” — трэці, і ён адзіны, які гаворыць пра адзін паток, а не пра ўсю машыну.

Іх змешванне стварае аўтаматызацыю, якая ўпэўнена хлусіць. Задача, якая правярае стан профілю і потым мяркуе, што API гатовы, выкліча кагосьці не на тым узроўні, а задача, якая пінгуе API і называе гэта доказам тунэля, не адрозніць працоўную VPN ад ноўтбука, які выпадкова знаходзіцца ў офіснай сетцы.

Адзін профіль: спытайце ў таго, хто ім валодае

Для ўласнай службы Mac элементы кіравання сеткавымі злучэннямі ў scutil паведамляюць менавіта гэта. Яны чытаюць стан названай канфігурацыі, а не робяць высновы з інтэрфейса.

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

Імя профілю ў гэтай камандзе павінна быць сапраўдным імем з вываду спіса, а не здагадкай. Гэта шлях толькі для чытання для ўласных службаў, і ён не гарантуе, што кліент трэцяга боку ўвогуле з’явіцца там; пастаўшчык, які кіруе сваім тунэлем, мае патрэбу ў сваім падтрыманым інтэрфейсе стану. Праверце спіс, перш чым пісаць выклік стану, каб адсутнае імя бачна памылялася, а не маўкліва ні з чым не супадала.

Унутры праграмы Network Extension чытайце стан з аб’ектаў мэнэджара і злучэння, а не з сістэмы. Будзьце ўважлівыя да ахопу: загрузка захаваных канфігурацый вяртае толькі створаныя выклікаючай праграмай, таму пусты вынік азначае “нічога майго”, а не “на гэтым Mac няма VPN”. Адрознівайце няўдалы запыт ад пацверджанага стану адключэння і разглядайце пераходныя станы як асобныя вынікі, а не як падставу паўтараць злучэнне, якое ўжо ўзнімаецца.

Адна задача: гатоўнасць — асобны прэдыкат

Калі пытанне ў тым, ці можа задача працягвацца, праверце яе фактычную залежнасць пасля таго, як уласнік злучэння паведаміў мэтавы стан. Абмежаваная праверка гатоўнасці супраць прыватнага рэсурсу — правільная форма: яна даказвае тое, што патрэбна задачы, і нічога болей.

Яна ўсё ж не можа даказаць, што кожны запыт на машыне ідзе праз тунэль, і не павінна падавацца так, быццам можа. Гэтак жа рэсурс, які адказвае праз звычайную сетку, не з’яўляецца доказам VPN, і менавіта таму дзве праверкі застаюцца асобнымі, нават калі абедзве паспяховыя.

Калі задачы сапраўды патрэбны абаронены шлях, гэтае патрабаванне мае патрэбу ва ўласным дызайне забеспячэння разгортвання: маршрутызацыя, выключэнні для падзеленага тунэля, правіла фэйрвола або патрабаванне на ўзроўні праграмы. Даступнасць канчатковай кропкі — гэта факт пра сервер. Забеспячэнне — гэта факт пра канфігурацыю кліента, і адно не даказвае другое.

Адзін паток: аглядзіце абраны маршрут

Для асобнага патоку паглядзіце на прызначэнне, сямейства адрасоў і кантэкст крыніцы праз дыягностыку маршрутызацыі, якая паведамляе абраны шлях для гэтага канкрэтнага прызначэння. Гэты вывад называе інтэрфейс і адрас крыніцы, якія фактычна выкарыстоўваюцца, а гэта значна мацнейшае сцвярджэнне, чым запіс маршруту па змаўчанні.

Шырокія праверкі браўзера адказваюць на зусім іншае пытанне. Вынік публічнага IP апісвае, як выглядаў адзін запыт з пункту гледжання аднаго сервера, і нічога не кажа пра прыватны DNS, выключаныя праграмы або другі сеткавы кантэкст, які выкарыстоўвае іншы працэс.

Вярніце вынік, які можа выкарыстаць выклікаючы

Выберыце форму вяртання, якая адпавядае прэдыкату: названы стан профілю, вырак пра гатоўнасць рэсурсу або яўнае невядомае з доказамі, што яго спарадзілі. Трымайце ідэнтычнасць канфігурацыі і прычыну збою побач з выракам.

Менавіта гэтая апошняя звычка робіць розніцу паміж аўтаматызацыяй, якая дапамагае, і аўтаматызацыяй, якая хавае праблемы. “Офісная VPN: адключана, апошняя спроба не прайшла аўтэнтыфікацыю” паказвае аператару, куды глядзець. “VPN не працуе” запрашае да пераўсталёўкі, а “інтэрфейс знойдзены” запрашае да ілжывага поўнага спакою.

Даведка Network Extension пра загрузку захаваных канфігурацый тунэля — гэта месца, дзе пацвердзіць ахоп выклікаючай праграмы, перш чым нешта на гэтым будаваць.

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