Mac VPN клиент: Network Extension срещу System Extension
Network Extension е възможност, а System Extensions е механизъм за доставяне: разделете ги, за да изберете стъпката на одобрение в macOS и журнала за четене.
Два термина на Apple се използват така, сякаш назовават едно и също нещо, и това объркване изпраща хората в грешен панел с настройки. Network Extension описва възможност: поддържан начин за реализиране на VPN тунели, проксита и филтри. System Extensions описва механизъм за доставяне и одобрение на разширения в потребителското пространство. Съвременният Mac VPN клиент обикновено се нуждае от двете, затова нито един от етикетите сам не обяснява симптом. Разделянето на двете отговаря кой компонент да проверите и каква стъпка на одобрение да очаквате.
Два въпроса, а не един етикет
Питайте какво прави компонентът, преди да питате как е инсталиран. Възможността определя кой клас доставчик съществува и следователно кой код обработва вашите пакети. Механизмът за доставяне определя как пристига двоичният файл, как се одобрява и къде се записва състоянието му. Даден продукт може да реализира пакетен тунел, без да доставя системно разширение на по-стари версии, и може да достави системно разширение, което реализира нещо различно от тунел.
Разширенията на ядрото са третият термин, който хората смесват. Те бяха по-старият начин за изпълнение на привилегирован мрежов код, изискваха различни одобрения и Apple от години насочва разработчиците далеч от тях. Прилагането на рецепта за одобрение на разширение на ядрото към съвременен клиент губи време в диалог, който никога няма да се появи.
Прочетете бележките за внедряване на доставчика за версията на macOS, която използвате вместо публикация във форум от по-ранна версия. Архитектурата се промени повече от веднъж и инструкциите остаряват бързо. Бележка, която споменава одобрение на разширение на ядрото, описва друга епоха на продукта.
Какво предоставя Network Extension
Рамката предоставя типове доставчици за обичайните мрежови задачи: пакетен тунел за VPN трафик, прокси за приложения за потоци по приложение, филтър за съдържание за инспекция на трафика и управление на DNS прокси за поведението на резолвера. Типът доставчик определя какво може да прави разширението и клиент, който доставя два доставчика, може да изпълнява две различни задачи.
Това е важно при диагностика, защото един и същ симптом на свързаност може да идва от тунел, филтър или DNS прокси. Блокирането на уебсайт е решение на филтъра, невъзможността да се достигне частна подмрежа обикновено е решение на тунела, а разрешаването на грешен адрес обикновено е решение на резолвера. Назоваването на типа доставчик стеснява търсенето, преди да е прочетен какъвто и да е журнал.
Нищо в рамката не предполага определена позиция за поверителност. Разширението в потребителското пространство все още има разрешения, конфигурация и оператор зад себе си, затова третирайте архитектурата като детайл по реализацията, а не като сигнал за доверие. Питайте кой управлява крайната точка и какво е конфигурирана да събира.
Какво променя System Extensions
Механизмът премества привилегирования код от ядрото в потребителското пространство и променя начина, по който операционната система иска съгласие. Активирането е отделна стъпка от инсталирането и потребителят или MDM профил трябва да го разреши. Клиент, който се инсталира, но никога не се активира изглежда наличен в папката Applications и не прави нищо за свързаността.
Състоянието се записва от системата, а не от приложението, което е полезно, защото може да се заяви. Командата по-долу изброява разширенията, които системата познава, и състоянието им на активиране.
systemextensionsctl list
scutil --nc list
Първата команда отговаря дали компонентът е инсталиран и активиран. Втората изброява VPN конфигурациите, които системата държи, което е различен въпрос и често е този, който има значение, когато профилът за връзка липсва, а не е счупен.
Кое да проверите при даден симптом
Съпоставете симптома със слоя, преди да отворите панел с настройки. Липсващата конфигурация е въпрос на профил, инсталиран, но неактивен компонент е въпрос на доставяне, а активен компонент, който не пропуска трафик, е въпрос на възможност.
| Symptom | First place to look |
|---|---|
| No VPN entry at all | Configuration profile or scutil list |
| Client installed, nothing happens | Extension activation state |
| Tunnel up, private host unreachable | Tunnel provider routes and policy |
| One app blocked, others fine | Filter or app proxy provider |
Потокът на журнала е общото доказателство за последните два реда. Четенето на подсистемата за мрежови разширения показва кой доставчик е обработил потока, а решението на филтъра изглежда различно от отказ на тунела, дори когато потребителят описва и двете като счупен VPN.
log show --last 10m --predicate 'process == "nesessionmanager"'
Не заключавайте, че разширението е активно, защото има икона в лентата с менюта. Иконите преживяват неуспешни активирания и остарялата икона е една от най-честите причини обаждането до поддръжката да започне на грешното място. Четете вместо това състоянието на активиране, защото точно него записва системата.
Одобрение, MDM и митът за разширението на ядрото
На управлявани Mac стъпката на одобрение принадлежи на MDM профила и потребител, който натисне Allow в System Settings, може все още да бъде блокиран от политика, която не е актуализирана. Питайте екипа за настолни компютри кой механизъм одобрява разширението за тази партида, преди да помолите потребителя да натисне нещо.
За неуправляван Mac подканата за одобрение се появява веднъж и отхвърлянето може да е постоянно, докато разширението не се преинсталира. Това поведение обяснява машината, на която клиентът е работил преди актуализация на ОС и сега съобщава за връзка, която никога не се установява.
Запишете типа доставчик, състоянието на активиране и механизма за одобрение за клиента, който внедрявате. Тези три факта отговарят на повечето бъдещи въпроси за Mac VPN, без да отварят отново спора възможност срещу доставяне.