Състояние на VPN на Mac: проверете профила, ресурса или потока
Една булева стойност не може да отговори на три различни въпроса. Първо назовете предмета, после използвайте интерфейса, който наистина го отчита, и запазете причините за отказа.
Някой пита дали VPN работи, а трима различни души имат предвид три различни неща. Операторът има предвид, че офис профилът е приключил удостоверяването. Планировчикът има предвид, че частният API ще отговори. Проверката за сигурност има предвид, че точно тази заявка е излязла по защитения път. А скрипт, който търси в таблицата с маршрути име на интерфейс, не отговаря надеждно на нито едно от тях.
Затова списъкът за проверка започва преди изпълнението на която и да е команда: назовете предмета на проверката. Всичко след това е избор на интерфейса, който действително може да го отчете.
Назовете предмета преди командата
Напишете въпроса като предикат с предмет. “Свързан ли е офис профилът” подлежи на проверка и има собственик, който може да отговори. “Може ли тази задача да достигне вътрешния API” е втори предикат с различен режим на отказ. “Използва ли тази заявка защитения път” е трети и е единственият, който говори за отделен поток, а не за цялата машина.
Смесването им създава автоматизация, която лъже уверено. Задача, която проверява състоянието на профила и после приема, че API е готов, ще извика някого на грешния слой, а задача, която пингва API и нарича това доказателство за тунел, не може да различи работещ VPN от лаптоп, който случайно е в офис мрежата.
Един профил: питайте това, което го притежава
За вградена услуга на Mac контролите за мрежова връзка в scutil отчитат точно това. Те четат състоянието на именувана конфигурация, вместо да правят изводи от интерфейс.
scutil --nc list
scutil --nc status "Office VPN"
Името на профила в тази команда трябва да е истинското от изхода на списъка, а не догадка. Това е път само за четене за вградени услуги и не е гаранция, че клиент на трета страна изобщо ще се появи там; доставчик, който управлява собствен тунел, се нуждае от свой поддържан интерфейс за състояние. Проверете списъка, преди да напишете извикването за състояние, така че липсващото име да се провали видимо, вместо тихо да не съвпадне с нищо.
Вътре в приложение Network Extension четете състоянието от обектите на мениджъра и връзката, а не от системата. Внимавайте с обхвата тук: зареждането на запазени конфигурации връща само създадените от извикващото приложение, така че празен резултат означава “нищо мое”, а не “няма VPN на този Mac”. Различавайте неуспешна заявка от потвърдено изключено състояние и третирайте преходните състояния като собствени резултати, вместо да повтаряте връзка, която вече се установява.
Една задача: готовността е отделен предикат
Ако въпросът е дали дадена задача може да продължи, проверете действителната ѝ зависимост, след като собственикът на връзката отчете желаното състояние. Ограничена проверка за готовност срещу частния ресурс е правилната форма: тя доказва какво е нужно на задачата и нищо повече.
Тя все пак не може да докаже, че всяка заявка на машината използва тунела, и не бива да се отчита, сякаш може. По същия начин ресурс, който отговаря през обикновената мрежа, не е доказателство за VPN, поради което двете проверки остават отделни дори когато и двете успеят.
Когато задачата наистина изисква защитен път, това изискване се нуждае от собствения дизайн за налагане на внедряването: маршрутизация, изключения за разделен тунел, правило на защитна стена или изискване на ниво приложение. Наличността на крайна точка е факт за сървъра. Налагането е факт за конфигурацията на клиента и едното не доказва другото.
Един поток: прегледайте избрания маршрут
За отделен поток погледнете дестинацията, семейството на адресите и контекста на източника с диагностиката за маршрутизация, която отчита избрания път за точно тази дестинация. Този изход посочва интерфейса и адреса на източника, които действително се използват, което е много по-силно твърдение от запис за маршрут по подразбиране.
Широките проверки в браузъра отговарят на съвсем различен въпрос. Резултатът за публичен IP описва как е изглеждала една заявка от гледна точка на един сървър и не казва нищо за частния DNS, изключените приложения или втори мрежов контекст, който друг процес използва.
Върнете резултат, който извикващият може да използва
Изберете форма на връщане, която отговаря на предиката: именувано състояние на профил, присъда за готовност на ресурс или явно неизвестно с доказателствата, които са го породили. Пазете идентичността на конфигурацията и причината за отказа до присъдата.
Този последен навик прави разликата между автоматизация, която помага, и автоматизация, която крие проблеми. “Офис VPN: прекъснат, последният опит се провали при удостоверяване” казва на оператора къде да гледа. “VPN не работи” кани преинсталация, а “намерен интерфейс” кани фалшиво спокойствие.
Справката за Network Extension относно зареждането на запазени конфигурации на тунел е мястото, където да потвърдите обхвата на извикващото приложение, преди да надградите нещо върху него.