MAATRIX / Блог / VPN configuration profile для iPhone через Apple Configurator

VPN configuration profile для iPhone через Apple Configurator

MAATRIX

Когда VPN нужно настроить на одном iPhone, проще сделать это руками за пять минут. Когда телефонов десять и все в разных руках — руки уже не справляются: кто-то ошибётся в PSK, кто-то не туда впишет адрес сервера, а через месяц придётся менять ключ и повторять всё заново. Apple Configurator решает эту задачу иначе: вы один раз собираете конфигурационный профиль (.mobileconfig) с готовыми настройками VPN и накатываете его на все устройства через USB за один проход — без AirDrop, без диктовки паролей по телефону и без ручного набора на экране.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Что такое .mobileconfig и почему не AirDrop

Конфигурационный профиль iOS — это обычный XML-файл в формате property list (plist), подписанный или неподписанный, который система умеет применять целиком: сеть, VPN, Wi-Fi, ограничения, сертификаты. Отправить такой файл можно почтой, через AirDrop, разместить на сайте — вариантов масса. Проблема не в доставке файла, а в контроле процесса на команде устройств:

  • при ручной установке пользователь может отменить установку на середине, пропустить шаг с сертификатом или установить старую версию профиля из переписки;
  • при обновлении VPN (сменился сервер, обновился PSK) нужно раздать профиль заново, и вы не знаете, кто это сделал, а кто нет;
  • профиль, присланный по почте, требует от пользователя открыть вложение и подтвердить установку в Настройках — для нетехнической команды это источник тикетов в поддержку.

Apple Configurator (бесплатное приложение для macOS) убирает человеческий фактор из процесса: вы подключаете iPhone по USB, приложение видит устройство и применяет профиль напрямую, без участия пользователя телефона. Для группы устройств есть режим Blueprint — сохранённый набор действий (профили, приложения, настройки), который применяется к каждому новому устройству одним кликом.

Это не замена MDM (Mobile Device Management) для постоянного удалённого управления паркой телефонов — Apple Configurator работает по проводу и локально. Но для разовой или периодической раздачи VPN-профиля команде из 5–50 устройств это быстрее и надёжнее, чем городить полноценный MDM-сервер.

Что нужно подготовить на сервере

Профиль VPN в .mobileconfig описывает подключение к конкретному серверу и протоколу. Из протоколов, которые Apple поддерживает нативно через свой VPN-payload (com.apple.vpn.managed), для новых профилей практический смысл имеют:

  • IKEv2 — основной вариант для iOS, поддерживает и Shared Secret, и сертификаты, штатно живёт в фоне и переживает свитч Wi-Fi/LTE;
  • L2TP over IPSec — устаревающий, но ещё встречается в корпоративных сетях;
  • Cisco IPSec — для legacy-инфраструктуры.

WireGuard и OpenVPN в нативный VPN-payload Apple не входят — у них собственные приложения в App Store, которые импортируют файл конфигурации (.conf, .ovpn), но это отдельный механизм, не .mobileconfig. Если у вас уже поднят WireGuard-сервер, для массовой раздачи профиля через Apple Configurator придётся либо переключиться на IKEv2, либо распространять конфиг через связку MDM + сторонний VPN-провайдер (App Store управляемое приложение), что выходит за рамки одного .mobileconfig. Ниже — сценарий с IKEv2, как самый совместимый.

Если сервер ещё не настроен, разверните strongSwan — процесс подробно описан в статье про установку IKEv2 на strongSwan для Ubuntu 24.04. Для команды из нескольких человек разумнее сразу делать сертификатную схему, а не общий Shared Secret на всех — про выпуск индивидуальных клиентских сертификатов есть отдельный разбор: IKEv2 multi-user с сертификатами через strongSwan.

Вам понадобятся:

  • публичный адрес или домен сервера;
  • тип аутентификации: Shared Secret (проще, но общий на всех) или сертификаты (безопаснее, но требует PKI);
  • при сертификатах — сам клиентский сертификат в .p12 и корневой CA в .cer, которые тоже упаковываются в профиль как отдельные payload'ы.

Арендуйте сервер под свои задачи!

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Собираем VPN-профиль вручную

Apple Configurator умеет создавать профили в собственном интерфейсе (вкладка Profiles → New Profile → Payload VPN), но для команды удобнее держать профиль как текстовый файл в git и генерировать его скриптом при смене параметров. Минимальный .mobileconfig с IKEv2 и Shared Secret выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>PayloadContent</key>
  <array>
    <dict>
      <key>IKEv2</key>
      <dict>
        <key>RemoteAddress</key>
        <string>vpn.example.com</string>
        <key>RemoteIdentifier</key>
        <string>vpn.example.com</string>
        <key>LocalIdentifier</key>
        <string>team-iphone</string>
        <key>AuthenticationMethod</key>
        <string>SharedSecret</string>
        <key>SharedSecret</key>
        <data>c2VjcmV0LXBoYXNl</data>
        <key>ChildSecurityAssociationParameters</key>
        <dict>
          <key>EncryptionAlgorithm</key>
          <string>AES-256-GCM</string>
          <key>IntegrityAlgorithm</key>
          <string>SHA2-256</string>
          <key>DiffieHellmanGroup</key>
          <integer>19</integer>
        </dict>
        <key>DeadPeerDetectionRate</key>
        <string>Medium</string>
        <key>DisableMOBIKE</key>
        <integer>0</integer>
        <key>EnablePFS</key>
        <true/>
      </dict>
      <key>PayloadDescription</key>
      <string>Configures VPN settings</string>
      <key>PayloadDisplayName</key>
      <string>Team VPN</string>
      <key>PayloadIdentifier</key>
      <string>com.company.vpn.team.ikev2</string>
      <key>PayloadType</key>
      <string>com.apple.vpn.managed</string>
      <key>PayloadUUID</key>
      <string>2E1F0E6A-9C1B-4E9B-8B2A-000000000001</string>
      <key>PayloadVersion</key>
      <integer>1</integer>
      <key>UserDefinedName</key>
      <string>Team VPN (IKEv2)</string>
      <key>VPNType</key>
      <string>IKEv2</string>
    </dict>
  </array>
  <key>PayloadDisplayName</key>
  <string>Company VPN Profile</string>
  <key>PayloadIdentifier</key>
  <string>com.company.vpn.profile</string>
  <key>PayloadRemovalDisallowed</key>
  <false/>
  <key>PayloadType</key>
  <string>Configuration</string>
  <key>PayloadUUID</key>
  <string>2E1F0E6A-9C1B-4E9B-8B2A-000000000000</string>
  <key>PayloadVersion</key>
  <integer>1</integer>
</dict>
</plist>

Значение SharedSecret — это base64 от вашей фразы, получить его просто:

echo -n 'ваш-shared-secret' | base64

PayloadUUID в каждом payload и на верхнем уровне должен быть уникальным (генерируется uuidgen) — если планируете переиздавать профиль при изменении настроек, PayloadIdentifier и PayloadUUID верхнего уровня лучше оставить теми же: тогда обновлённый профиль на устройстве заменит старый, а не добавится вторым.

Для сертификатной аутентификации вместо SharedSecret/AuthenticationMethod: SharedSecret добавляются AuthenticationMethod: Certificate, PayloadCertificateUUID со ссылкой на отдельный payload типа com.apple.security.pkcs12 (клиентский .p12) и, если корневой CA не в системном доверии, ещё один payload com.apple.security.root с сертификатом CA. Про выпуск таких сертификатов под Windows CA есть отдельный разбор: сертификаты для IKEv2/SSTP через Windows CA — логика такая же, просто конечный сертификат упаковывается в профиль, а не раздаётся отдельным файлом.

Импорт профиля в Apple Configurator

  1. Установите Apple Configurator 2 из Mac App Store (только macOS, только на Mac с USB и, желательно, с несколькими портами или хабом).
  2. Откройте приложение, в меню File → New Profile — если хотите собрать профиль в интерфейсе, или File → Add → Profiles → Import — если у вас уже готов .mobileconfig-файл, написанный вручную (это быстрее для повторяемого процесса).
  3. При импорте проверьте вкладку General (имя, идентификатор, будет ли профиль удаляемым пользователем — PayloadRemovalDisallowed) и вкладку VPN — Configurator покажет распарсенные настройки, там же можно поправить их мышкой без правки XML.
  4. Сохранённый профиль появляется в библиотеке Configurator слева, в разделе Profiles — оттуда он применяется к любому подключённому устройству.

Массовая раздача через Blueprint и USB

Ключевая фишка для команды — Blueprint (шаблон подготовки устройства):

  1. На вкладке Blueprints создайте новый: + → New Blueprint.
  2. Добавьте в него ваш VPN-профиль (перетащите из библиотеки Profiles) и, если нужно, приложения из вкладки Apps.
  3. Подключите iPhone по USB. Первый раз Configurator предложит Supervise устройство — это отдельный режим (не полный MDM, но с расширенными правами приложения над телефоном), для корпоративных телефонов его обычно включают; для личных устройств сотрудников Supervise делать не стоит, профиль можно применить и без него через простое Add Profile.
  4. На вкладке Devices выберите подключённые телефоны (можно сразу несколько через USB-хаб), нажмите Apply → [ваш Blueprint] — Configurator прогонит подготовку по очереди, включая установку VPN-профиля, без единого клика на самом iPhone.

Для устройств без Supervise профиль тоже можно накатить точечно: выделите устройство на вкладке Devices, откройте Add → Profiles, выберите нужный .mobileconfig — установка пройдёт через USB, пользователю останется только один раз подтвердить установку на экране (в отличие от почты, где ему пришлось бы сначала найти вложение и открыть Настройки самому).

Автоматизация через cfgutil

Если телефонов много и раздача повторяется регулярно (обновление ключа, новый сотрудник), в Apple Configurator есть встроенный командный инструмент cfgutil — он ставится вместе с приложением и живёт в /Applications/Apple Configurator 2.app/Contents/MacOS/cfgutil. Базовый сценарий:

# список подключённых по USB устройств
cfgutil list

# установка профиля на все подключённые устройства
cfgutil install-profile team-vpn.mobileconfig

# удаление профиля по PayloadIdentifier перед переустановкой новой версии
cfgutil remove-profile com.company.vpn.profile

Это удобно оформить в простой shell-скрипт, который сначала удаляет старый профиль по идентификатору, затем ставит новый — так на всех устройствах гарантированно окажется актуальная версия, а не смесь из разных дат. Для парка из полутора-двух десятков телефонов скрипт на 10 строк плюс один USB-хаб на 10 портов закрывают задачу быстрее, чем разговор с каждым сотрудником по отдельности.

Подпись профиля и что с безопасностью

Неподписанный .mobileconfig при установке показывает предупреждение «Не заверено» (Unverified) — это не блокирует установку, но выглядит тревожно и в почте может смутить нетехнического сотрудника. Через Apple Configurator профиль подписывается автоматически, если в связке ключей Mac есть сертификат для подписи профилей (можно получить через Apple Developer Program или выпустить свой внутренний CA и добавить его в доверенные корневые на устройствах — второй вариант не требует платной подписки разработчика).

Вручную подписать профиль можно через security:

security cms -S -N "Имя сертификата" -i team-vpn.mobileconfig -o team-vpn-signed.mobileconfig

По содержимому: если используете Shared Secret, помните, что он один на всех получателей профиля — если телефон потерян или сотрудник уходит, менять секрет и переиздавать профиль нужно для всей команды сразу. Сертификатная схема (клиентский сертификат на устройство) в этом смысле надёжнее: отозвать доступ можно точечно, через CRL на сервере, не трогая остальных. Для команды больше пяти человек сертификаты — не излишество, а экономия времени на инцидент.

Отдельно проверьте PayloadRemovalDisallowed — если оставить false (как в примере выше), сотрудник сможет удалить профиль сам через Настройки. Для корпоративных Supervised-устройств это обычно выставляют в true, чтобы VPN нельзя было отключить без ведома администратора; для личных телефонов сотрудников такое ограничение может быть избыточным и юридически спорным — решайте по ситуации.

Арендуйте сервер под свои задачи!

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Можно ли раздать через Apple Configurator профиль для WireGuard?

Напрямую нет — WireGuard не использует нативный VPN-payload Apple, у него отдельное приложение и свой формат .conf. Apple Configurator применяет только .mobileconfig, поэтому для массовой раздачи VPN через него нужен протокол из списка Apple: IKEv2, L2TP/IPSec или Cisco IPSec.

Нужен ли MDM, если у меня всего несколько iPhone?

Нет. MDM оправдан, когда нужно управлять устройствами удалённо и постоянно (через интернет, без физического доступа). Apple Configurator работает по USB и разово — для команды в одном офисе, которая раз в квартал обновляет VPN-профиль, это быстрее и без ежемесячной платы за MDM-сервис.

Что будет, если установить два профиля с одинаковым PayloadIdentifier, но разным содержимым?

Новый заменит старый — iOS ориентируется на PayloadIdentifier верхнего уровня. Это штатный способ обновлять профиль: не гонять пользователя удалять старый вручную, а просто ставить новый с тем же идентификатором.

Обязательно ли Supervised-режим для установки VPN-профиля?

Нет, обычный Add Profile через USB работает и без Supervise, разница в правах приложения над устройством (Supervise даёт больше контроля — принудительная установка без подтверждения, запрет удаления и т.д.), но сам факт установки VPN-конфига возможен в обоих режимах.

Работает ли Apple Configurator на Windows?

Нет, только macOS. Если у команды нет Mac, единственный практичный путь — рассылать подписанный .mobileconfig через почту или MDM-профиль стороннего провайдера, без ускоренной USB-раздачи.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →