Удаление VPN на macOS выглядит как одно действие, а на самом деле это как минимум четыре. Кнопка в Системных настройках удаляет одну сетевую службу из хранилища конфигурации системы. Она не удаляет клиентское приложение, установленный им сетевой модуль, учётные данные в вашей связке ключей или профиль, присланный управлением устройствами. Знание того, какому объекту принадлежит каждый симптом, — это то, что не даёт удалённому VPN тихо вернуться.

Что на самом деле удаляет кнопка «Удалить конфигурацию»

Каждый добавленный VPN становится сетевой службой — объектом того же типа, что Wi-Fi или Thunderbolt Bridge. macOS хранит их все здесь: /Library/Preferences/SystemConfiguration/preferences.plist, у каждой есть идентификатор службы, отображаемое имя и словарь конфигурации, описывающий тип туннеля, адрес сервера и способ запуска туннеля.

Когда вы открываете Системные настройки и VPN, нажимаете кнопку информации рядом со службой, выбираете «Удалить конфигурацию» и подтверждаете, macOS останавливает туннель, удаляет этот объект службы и перезаписывает хранилище. Разборка завершена для того, что принадлежит системе: службы больше нет в списке, и ничто не запускает её при входе.

То, до чего кнопка не дотягивается, — всё, что принадлежит другой подсистеме. Пакет приложения находится здесь: /Applications. Клиент NetworkExtension работает как системный модуль, зарегистрированный отдельно от своей конфигурации. Учётные данные — это элементы связки ключей с правами доступа той связки, которая их хранит. Профиль конфигурации принадлежит системе профилей. Удалите службу — и все четыре останутся ровно там, где были.

Перечислите, что Mac всё ещё считает установленным

Составьте опись, прежде чем что-либо удалять. Три команды охватывают три уровня, дающие один и тот же видимый сбой:

scutil --nc list
networksetup -listallnetworkservices
profiles -P

scutil --nc list — авторитетное представление конфигураций VPN со статусом подключения, именем службы и идентификатором службы. Часто он показывает записи, которые никогда не появляются в списке настроек: остатки служб клиента, удалённого месяцы назад, и конфигурации по запросу, которые запускаются молча. networksetup -listallnetworkservices показывает сетевые службы под именами, которых ожидают инструменты командной строки, и именно это нужно для удаления по имени. profiles -P перечисляет установленные профили конфигурации; на управляемом Mac VPN может быть не добавленной вами службой, а полезной нагрузкой внутри одного из этих профилей.

Читайте списки вместе, а не доверяйте первому. scutil но не в настройках обычно означает, что туннелем владеет сторонний клиент и показывает его в своём окне. Служба в обоих представлениях, серая в настройках, означает политику. Имя, которое появляется снова после удаления, означает, что что-то создаёт его заново, и это что-то — настоящая цель.

Удалите службу через её владельца

Для службы, добавленной вами, держитесь документированного пути: Системные настройки, VPN, кнопка информации, «Удалить конфигурацию». Apple документирует этот путь, и он сохраняет хранилище конфигурации согласованным. Ручное редактирование preferences.plist при работающем сетевом стеке — это путь к дублирующимся или зомби-службам, которые не удалит ни один интерфейс.

Из терминала удалите службу по имени с помощью networksetup -removenetworkservice "Service Name", затем подтвердите с помощью scutil --nc list. Команда действует на тот же список служб, что и интерфейс, поэтому имя, которого нет в networksetup -listallnetworkservices, не будет удалено ни одним из путей. Когда туннелем владеет клиент, сначала используйте его путь удаления или удаления программы, потому что клиент пересоздаёт службу при следующем запуске.

Если VPN пришёл из управления устройствами, вы не владелец. Профили, установленные MDM, могут быть помечены как неудаляемые, и даже удаляемый профиль может быть прислан снова при следующей проверке. Подтвердите с помощью profiles -P, затем используйте процесс вывода из эксплуатации вашей организации. Удаление полезной нагрузки локально либо не удаётся, либо вызывает переустановку.

Остатки, которые переподключаются без службы

Обычный отчёт «он вернулся» — это не возвращение службы, а возвращение модуля, который ею владеет. Перечислите зарегистрированные системные модули и модули приложений типа сетевого модуля:

systemextensionsctl list
pluginkit -m -p com.apple.networkextension.packet-tunnel

Клиент NetworkExtension хранит своего поставщика туннеля установленным под собственным идентификатором, отдельно от любой конфигурации. Модуль может оставаться активным после исчезновения конфигурации, а агент в строке меню клиента может создать новую конфигурацию при следующем запуске, иногда повторно используя только что удалённое имя. Проверьте элементы входа и помощник производителя здесь: /Library/LaunchDaemons прежде чем сделать вывод, что удаление не удалось.

Учётные данные — второй остаток. Сохранённый пароль или клиентский сертификат в связке ключей входа не удаляется вместе со службой, а общий секрет IPSec исторически живёт в системной связке ключей, поэтому удаление и повторное добавление иногда пропускают запрос пароля. Если Mac выходит из-под вашего контроля, найдите элемент по имени службы в Keychain Access и отзовите учётную запись, сертификат или парный ключ, которые представляют сохранённые данные. A copied configuration file is a live credential even after local removal.

Проверьте удаление и правильно прочитайте возвращающийся профиль

Удаление завершено, когда службы нет в обоих представлениях и она остаётся отсутствующей после перезагрузки. Проверьте scutil --nc list на идентификатор службы, подтвердите, что разрешение имён использует ожидаемый резолвер, с помощью scutil --dns, затем один раз перезагрузитесь, потому что правила по запросу и агенты входа — это две вещи, которые показывают себя только при чистой загрузке.

Если она всё ещё там, не удаляйте больше объектов. Выясните, какой уровень создал её заново: профиль MDM снова присылает службу, клиентский агент пересоздаёт её, или служба никогда не удалялась, потому что имя не совпало. Этот ответ решает, нужен ли вам деинсталлятор производителя, ваша ИТ-команда или ещё один проход через тот же диалог удаления. Руководство Apple по удалению охватывает поддерживаемый путь для добавленных вами служб; остатки — это часть, которую вы должны проверить сами: remove a VPN configuration.

Похожие статьи