Что содержит экспорт VPN для Mac и что он оставляет после себя
Экспорт VPN для Mac несёт настройки и иногда закрытый ключ, но не пароль связки ключей и не регистрацию устройства. Сначала проверьте каждую часть.
Нажмите Export в клиенте VPN для Mac, и вы получите файл, который описывает подключение, не являясь им. Адрес сервера, порт, протокол и часто сертификаты находятся внутри. Пароль для входа, парольная фраза закрытого ключа и регистрация, авторизующая именно этот Mac, обычно нет. Поэтому профиль может чисто импортироваться, появиться в списке клиента и всё равно отказать при первом запросе аутентификации; разрыв — свойство формата, а не повреждённая загрузка.
| Part of the connection | Where it lives on the old Mac | What an export does with it |
|---|---|---|
| Server, port, protocol, routes | Client profile or managed settings | Usually included when the client exports configuration |
| Client certificate and private key | Inside the package, the login keychain, or issued by MDM | Included only if the format packs it; a keychain-held key stays behind |
| Login password, key passphrase | Login keychain | Left out by design |
| Device authorization or enrollment | Server side, bound to the certificate or the device record | Not transferable; the new device has to enroll |
Что на самом деле содержит экспортированный файл
Экспорт — это контейнер, и расширение файла говорит меньше, чем содержимое. Профили OpenVPN — это текст: директивы плюс необязательные встроенные блоки <ca>, <cert> и <key>. Настройки Tunnelblick — сжатые архивы конфигураций и параметров. Управляемый .mobileconfig — это plist полезных нагрузок. Два листинга отвечают на большую часть вопроса до того, как вы что-то импортируете.
Для текстового профиля посчитайте блоки PEM, которые он несёт: grep -c "PRIVATE KEY" your-profile.ovpn. Ненулевой результат означает, что файл содержит ключевой материал и с этого момента с ним нужно обращаться как с паролем. Для архива перечислите его, не распаковывая: tar -tf export.tbz, или unzip -l export.zip, если клиент создал zip. Файлы ключей, файлы сертификатов и скрипты подъёма или опускания в этом листинге — те части, которые повторная выдача учётной записи пользователя не воссоздаст.
Обратный случай не менее важен. Когда профиль указывает на ключ по имени файла, а не встраивает его, экспорт намеренно неполон, и недостающая половина должна прийти от того, кто его выдал. Копировать этот файл рядом можно, если центр сертификации принадлежит вам; нельзя, если файл пришёл с привязанным к устройству сертификатом, созданным на старом Mac.
Почему половина из связки ключей никогда не путешествует
macOS хранит пароли VPN и парольные фразы ключей в связке ключей входа, и клиенты сохраняют их там, а не в собственных файлах настроек. Tunnelblick говорит об этом в своём руководстве по экспорту и импорту: архив настроек несёт конфигурации и параметры и оставляет за бортом имена пользователей, пароли и парольные фразы, хранящиеся в связке ключей. Пропуск намеренный. Элементы связки ключей защищены для каждого пользователя и каждой машины, поэтому у скопированного элемента нет действительного контроля доступа в месте назначения, что оставляет либо бесполезный файл, либо секрет открытым текстом.
Вы можете подтвердить, где живёт учётная запись, прежде чем планировать перенос. security find-internet-password -s vpn.example.com печатает атрибуты подходящего элемента и завершается с ненулевым кодом, когда такого нет; та же команда с -g запросила бы раскрытие пароля, поэтому запрос без неё — более безопасная проверка. Найденное там означает, что профиль не несёт пароль и его нельзя к этому принудить. Это также означает, что пароль снова запросят на новом Mac, а разрешение «Всегда разрешать» на старом там ничего не значит.
Однако не каждый секрет — элемент связки ключей. Собственная документация пакета Tunnelblick отмечает, что пакет может содержать файлы ключей, сертификатов и скриптов. Поэтому то, что экспорт исключает элементы связки ключей, — не то же утверждение, что экспорт безопасно отправлять почтой; относитесь к архиву как к чувствительному, пока не перечислили, что в нём есть.
У встроенных и управляемых VPN нет пути экспорта
Подключения, настроенные через Системные настройки, не предлагают поддерживаемого экспорта. scutil --nc list показывает службы, известные системе, а scutil --nc show "Work VPN" печатает конфигурацию одной службы, чего достаточно, чтобы прочитать её сервер и протокол. Ни то ни другое не является средством миграции. Идентификаторы служб, хранящиеся в /Library/Preferences/SystemConfiguration/preferences.plist, — это ссылки внутрь того файла, поэтому копирование файла и перезапись идентификаторов не являются поддерживаемым переносом и могут нарушить несвязанные сетевые службы в месте назначения.
Поддерживаемый путь — тот, который документирует Apple: установите файл настроек VPN, предоставленный администратором, или введите настройки, которые даёт оператор. Когда подключение управляется, попросите свежий файл или свежую регистрацию вместо того, чтобы восстанавливать его по снимку экрана старого диалога. Для профиля, рассылаемого MDM, полезная нагрузка сертификата может нести идентичность, пока закрытый ключ создаётся на устройстве, и в этом случае даже безупречная копия старого профиля не сможет аутентифицировать новый Mac.
Проверьте восстановление, а не доверяйте списку
Профиль в списке и работающий туннель — два разных состояния, и только одно из них стоит отчёта. После импорта и подключения проверьте, что интерфейс туннеля существует, затем проверьте, что делает туннель.
ifconfig | grep -A3 utun показывает интерфейс туннеля и его адреса. scutil --dns | grep nameserver показывает, какие резолверы активны после подключения, и именно там профили split-DNS обычно расходятся. Затем дойдите до ресурса, который действительно важен: curl -sS -o /dev/null -w "%{http_code}" https://intranet.example.com. Если все три проходят, настройки, DNS и маршруты прибыли; зелёный значок в клиенте сам по себе не означает ничего из этого.
Два сбоя часто появляются после импорта, и оба ставят в вину файлу. Публичные имена разрешаются, а внутренние нет — это обычно означает, что DNS-серверы профиля потерялись или split-DNS не сохранился. Туннель, который поднимается и не пропускает трафик, обычно означает, что маршруты или авторизация на стороне сервера не последовали за профилем. Повторный импорт того же архива воспроизводит и то, и другое.
Прежде чем списать старый Mac
Удаление экспорта — не отзыв. Если старое устройство аутентифицировалось сертификатом, сервер всё ещё доверяет этому сертификату, пока его не отзовут или не выпустят заново. Если оно аутентифицировалось общей учётной записью, сеансы в ней могут быть ещё живы. Сделайте шаг на стороне сервера, пока оборудование ещё перед вами.
Храните новый профиль вместе с остальными учётными данными, когда он содержит ключ, и введите пароль в клиент, чтобы он попал в новую связку ключей, а не в файл. Последняя проверка: подключитесь с замены при выключенном старом Mac. Передача, которая работает только пока исходная машина в сети, никогда не была полной.