Ваш скрыпт запускае VPN, але не настройвае яго
Каманда запуску патрабуе злучэнне, якое ўжо існуе і ўхвалена. Аддзяляйце настройку ад кіравання сеансам, інакш скрыпт працуе толькі на вашым Mac.
Вы пішаце скрыпт, які запускае scutil --nc start з імем злучэння, ён працуе на вашым Mac і не працуе на кожнай новай машыне ў офісе. Скрыпт не зламаны. У яго просяць тое, што ён ніколі не мог зрабіць: запуск існуючага злучэння — не тая ж аперацыя, што стварэнне новага.
Настройка і кіраванне сеансам — дзве працы з двума ўласнікамі, і працэс, які мяркуе інакш, пройдзе ўсе тэсты на машыне, дзе ён быў напісаны.
З чым насамрэч размаўляе каманда запуску
Каманда кіравання сеансам звяртаецца да канфігурацыі, якая ўжо існуе і ўжо ўхвалена. Яна просіць сістэму падняць гэтае названае злучэнне, выкарыстоўваючы параметры сервера, спасылкі на ідэнтычнасць і палітыку, захаваныя раней. Калі гэтага ніколі не ўсталёўвалі, запускаць няма чаго.
Таму збой з'яўляецца на новым абсталяванні, а не на ноўтбуку адміністратара. Ноўтбук быў настроены месяцы таму чалавекам, які з тых часоў забыўся пра гэта. Уявіце каманду запуску як дзвярны званок, які нехта праклаў у мінулым квартале. Націснуць на яго — не тое ж, што пракласці праводку.
Тры ўласнікі канфігурацыі VPN
Профіль, якім кіруе арганізацыя, паходзіць з кіравання прыладамі. Профіль нясе адрасы сервера, схему аўтэнтыфікацыі і палітыку, якой патрабуе арганізацыя, і адміністратар VPN — гэта чалавек, які іх падае. Скрыпт не павінен аднаўляць гэтыя параметры з адлюстраванага імя, знойдзенага ў спісе.
Уласная асабістая канфігурацыя VPN ствараецца праз Network Extension API ад Apple, які ахоплівае ўбудаваныя пратаколы IPsec і IKEv2. Гэта інтэрфейс праграмы з крокам захавання і згодай карыстальніка, а не каманда абалонкі, якая моўчкі стварае любы тып тунелю, які пастаўляе вытворца.
Кліент трэцяга боку — трэці выпадак са сваім фарматам імпарту, сваім інструментам кіравання і часта сваім прывілеяваным памочнікам. Яго сеансам валодае працэс гэтага вытворцы. Знайсці сістэмную службу з падобным імем — не доказ таго, што сістэмная каманда кіруе тунелем, і такое меркаванне стварае скрыпты, якія выглядаюць працоўнымі, пакуль вытворца не абновіць кліент.
Уласная настройка мае захаванне і згоду
Мадэль Apple — загрузіць, змяніць, захаваць. Праграма загружае існуючыя налады перад сваім першым захаваннем пасля запуску, змяняе канфігурацыю і потым захоўвае яе. Захаванне паведамляе пра памылку, калі не можа запісаць, і ігнараванне гэтага выніку ператварае збой настройкі ў збой злучэння праз тры крокі.
Першае захаванне таксама патрабуе, каб карыстальнік ухваліў праграму. Гэта наўмысная мяжа бяспекі, і яна азначае, што першы запуск на новым Mac інтэрактыўны, нават калі кожнае наступнае падключэнне і адключэнне можна аўтаматызаваць. Плануйце першы запуск як чалавечую задачу з прысутным чалавекам. Аўтаматызуйце другі запуск і далей і скажыце пра гэта ў кіраўніцтве, каб ніхто не абяцаў немагчымага. План разгортвання, які абяцае цалкам беспілотны першы запуск, абяцае тое, чаго платформа не прапануе.
Apple таксама рэкамендуе правяраць сумяшчальнасць сервера з профілем канфігурацыі перад тым, як спадзявацца на API. Гэтая праверка спачатку аддзяляе «сервер не прыме гэты кліент» ад «кліент ніколі не захаваў налады», а гэта розныя заяўкі для розных каманд.
Што можа мяркаваць паўторная каманда запуску
Пасля настройкі скрыпт можа бяспечна нацэліцца на існуючае злучэнне праз інтэрфейс яго ўласніка. Дайце яму стабільную ідэнтычнасць злучэння плюс дзеянне, якое хочаце, і нічога болей. Ён не павінен чытаць меркаваны шлях налад і не павінен мяркаваць, што імя ў меню ўнікальнае ва ўсёй сістэме.
Для ўласных злучэнняў названы запыт сеансу, такі як scutil --nc start, — гэта аперацыя кіравання. Ён не ўсталёўвае параметры сервера, не імпартуе ўліковыя даныя і не выконвае аўтарызацыю першага захавання. Стаўцеся да яго як да апошняга кроку ланцуга, ніколі як да ўсяго ланцуга.
Трымайце сакрэты па-за аргументамі каманднага радка і па-за звычайным дыягнастычным вывадам. Які б механізм ідэнтычнасці ні абрала разгортванне, менавіта на яго павінна спадзявацца каманда запуску, а пароль, устаўлены ў гісторыю абалонкі, — знаходка ў любым аглядзе.
Дзве праверкі прыёмкі
Першая праверка — настройка: вазьміце свежа ўсталяваны Mac і дакажыце, што канфігурацыя прысутнічае, належыць правільнаму кіраўніку і цалкам ухвалена. Зрабіце гэта перад праверкай злучэння, бо тэст злучэння на ненастроенай машыне нічога не даказвае пра скрыпт.
Другая праверка — сеанс: падключыцеся, дасягніце дазволенага рэсурсу і чыста адключыцеся. Цяпер у кожнага збою ёсць уласнік, і гэта практычная карысць аддзялення дзвюх прац. Адсутны профіль — праблема дастаўкі, памылка захавання — праблема згоды, адхілены ўваход — праблема аўтэнтыфікацыі, а тайм-аўт пасля паспяховага запуску — узровень сеансу. Ніводзін з іх не «скрыпт зламаны».