Два терміни Apple використовуються так, ніби називають одне й те саме, і ця плутанина відправляє людей до неправильної панелі налаштувань. Network Extension описує можливість: підтримуваний спосіб реалізації VPN-тунелів, проксі та фільтрів. System Extensions описує механізм доставки й схвалення для розширень у просторі користувача. Сучасному VPN-клієнту для Mac зазвичай потрібні обидва, тому жоден із ярликів сам по собі не пояснює симптом. Розділення двох відповідає, який компонент перевіряти і якого кроку схвалення чекати.

Два питання, а не один ярлик

Запитайте, що робить компонент, перш ніж питати, як він встановлюється. Можливість визначає, який клас постачальника існує і, отже, який код обробляє ваші пакети. Механізм доставки визначає, як надходить бінарний файл, як він схвалюється і де записується його стан. Продукт може реалізувати тунель пакетів, не постачаючи системне розширення в старіших версіях, і може постачати системне розширення, яке реалізує щось інше, ніж тунель.

Розширення ядра — третій термін, який люди змішують. Це був старіший спосіб запускати привілейований мережевий код, вони вимагали інших схвалень, і Apple роками відводить розробників від них. Застосування рецепта схвалення розширення ядра до сучасного клієнта витрачає час на діалог, який ніколи не з'явиться.

Прочитайте примітки щодо розгортання постачальника для використовуваної вами версії macOS замість повідомлення на форумі з попередньої версії. Архітектура змінювалася не один раз, і інструкції швидко старіють. Примітка, що згадує схвалення розширення ядра, описує іншу епоху продукту.

Що надає Network Extension

Фреймворк надає типи постачальників для звичайних мережевих завдань: тунель пакетів для трафіку VPN, проксі застосунків для потоків окремих застосунків, фільтр вмісту для перевірки трафіку та обробка DNS-проксі для поведінки розв'язувача. Тип постачальника визначає, що може робити розширення, і клієнт, що постачає двох постачальників, може виконувати два різні завдання.

Це важливо під час діагностики, бо той самий симптом підключення може йти від тунелю, фільтра або DNS-проксі. Блокування сайту — це рішення фільтра, недоступність приватної підмережі зазвичай рішення тунелю, а розв'язання неправильної адреси зазвичай рішення розв'язувача. Називання типу постачальника звужує пошук до читання будь-якого журналу.

Ніщо у фреймворку не передбачає позиції щодо приватності. Розширення в просторі користувача все ще має дозволи, конфігурацію та оператора за ним, тому ставтеся до архітектури як до деталі реалізації, а не як до сигналу довіри. Запитайте, хто керує кінцевою точкою і що вона налаштована збирати.

Що змінює System Extensions

Механізм переносить привілейований код з ядра в простір користувача і змінює те, як операційна система просить згоду. Активація — окремий крок від встановлення, і користувач або профіль MDM має її дозволити. Клієнт, який встановлюється, але ніколи не активується виглядає присутнім у папці Applications і нічого не робить для підключення.

Стан записує система, а не застосунок, що корисно, бо його можна запитати. Команда нижче перелічує розширення, відомі системі, та стан їх активації.

systemextensionsctl list
scutil --nc list

Перша команда відповідає, чи встановлено й активовано компонент. Друга перелічує конфігурації VPN, які зберігає система, — це інше питання і часто саме те, що важливе, коли профіль підключення відсутній, а не зламаний.

Що перевіряти за даного симптому

Зіставте симптом із шаром, перш ніж відкривати панель налаштувань. Відсутня конфігурація — питання профілю, встановлений, але неактивний компонент — питання доставки, а активний компонент, який не пропускає трафік, — питання можливості.

SymptomFirst place to look
No VPN entry at allConfiguration profile or scutil list
Client installed, nothing happensExtension activation state
Tunnel up, private host unreachableTunnel provider routes and policy
One app blocked, others fineFilter or app proxy provider

Потік журналу — спільний доказ для двох останніх рядків. Читання підсистеми мережевого розширення каже, який постачальник обробив потік, і рішення фільтра виглядає інакше, ніж збій тунелю, навіть коли користувач описує обидва як зламаний VPN.

log show --last 10m --predicate 'process == "nesessionmanager"'

Не робіть висновку, що розширення активне, лише тому що в рядку меню є значок. Значки переживають невдалі активації, і застарілий значок — одна з найчастіших причин того, що звернення до підтримки починається не з того місця. Читайте натомість стан активації, бо саме його записує система.

Схвалення, MDM і міф про розширення ядра

На керованих Mac крок схвалення належить профілю MDM, і користувач, який натискає Allow у System Settings, усе ще може бути заблокований політикою, що не оновлювалася. Запитайте команду робочих станцій, який механізм схвалює розширення для цього парку, перш ніж просити користувача щось натиснути.

На некерованому Mac запит на схвалення з'являється один раз, і відмова може бути постійною, доки розширення не переінсталюють. Така поведінка пояснює машину, де клієнт працював до оновлення ОС, а тепер повідомляє про з'єднання, яке ніколи не встановлюється.

Запишіть тип постачальника, стан активації та механізм схвалення для клієнта, який ви розгортаєте. Ці три факти відповідають на більшість майбутніх питань про VPN на Mac, не відкриваючи знову суперечку можливості проти доставки.

Схожі статті