Skip to main content

06 — Сравнение клиентов

Какой клиент чем платит. Контекст: нужен удалённый реконфиг (миграция региона, смена endpoint) без обязательного MDM, и стык с WG-сервером на MikroTik. Главное узкое место — iOS.

Кратко

КлиентУдалённый реконфиг без MDMСтык с MikroTik WGiOSЦена
Штатный WireGuard-appнет (только MDM или ручной импорт)да, нативноограничен MDMминимум усилий, нет автообновления
Свой клиент (NetworkExtension/VpnService)дадаочень тяжелоразработка + поддержка + всё равно MDM для раздачи
sing-boxда (подписка)да (WG как транспорт)да, но фон ненадёженлишнее приложение + ключ в конфиге
IKEv2нет (переустановка профиля)да (нативно на ROS)нативно, без приложенияручной реконфиг на каждое изменение
Headscale/Tailscaleда (через свой координатор)нет (своя модель)да, надёжнозаменяет твой control plane

Подробно

Штатный WireGuard-app

Нативно стыкуется с MikroTik. Но на iOS переконфигурируется только через MDM (песочница не даёт другому приложению трогать его VPN), автообновления по URL нет. Без MDM — ручной импорт пользователем. Годится для управляемого парка как простой вариант, но не даёт удалённого реконфига для BYOD.

Свой клиент

На Linux/Windows свой агент — отличный путь (см. файлы 01, 03): держит device-credential, генерит ключ локально (приватник не едет), применяет конфиг. На Android своё приложение-VpnService реально. На iOS — свой NetworkExtension/WireGuardKit-клиент технически возможен и вернул бы агентский путь, но это тяжело (App Store, поддержка), и распространять на парк всё равно через MDM. Если бы был дешёвый способ сделать своё на всех платформах — это был бы идеал; реальность ломает iOS.

sing-box (выбранный для кросс-платформы)

Аналог «VLESS-подписки», но для WireGuard. Говорит стандартный WG на проводе → стыкуется с MikroTik как обычный пир. Графический клиент по спецификации обязан поддерживать remote-профили по URL с HTTP Basic и автообновлением → твой control plane отдаёт per-device конфиг, приложение само подтягивает обновления. Миграция = обновил отдаваемый конфиг. Платит: (1) приватник лежит в отдаваемом конфиге (URL подписки = bearer-секрет, защищай TLS+токен); (2) на iOS фоновое автообновление ненадёжно → Telegram-пинок; (3) шаткая дистрибуция iOS-приложения. Детали — файл 05.

IKEv2 (резервный/легаси)

Нативный на iOS и Windows, настраивается на ROSv7. Доставляется подписанным .mobileconfig, который пользователь ставит сам без MDM (Safari умеет ставить профиль). Но автообновления нет: любое изменение = переустановка профиля (руками или через MDM). Подходит как простой нативный вариант для директорских устройств, где реконфиг редкий. Грубо: IKEv2 меняет «нативно, без приложения» на «ручной реконфиг на каждое изменение», тогда как sing-box — «лишнее приложение + ключ в конфиге» на «удалённый реконфиг без MDM».

Headscale / Tailscale

Это система, которая «WG как транспорт + свой control plane + iOS-реконфиг без MDM» решает по-настоящему и надёжно (iOS-клиент переконфигурируется через свой координатор). Но она не стыкуется с голым WG-интерфейсом на MikroTik — клиенты Tailscale мешуются только через свой координатор со своей моделью ключей/ACL/DERP. То есть это «выкини свой control plane и возьми наш», а не «вставь в существующую схему». Раз ты осознанно строишь свою BGP/MikroTik-оркестрацию, sing-box ложится в неё, а Headscale бы её заместил. Держать в уме как ориентир/запасной паттерн, если iOS-надёжность станет критичной.

Рекомендованная гибридная раскладка

  • Linux/Windows — свой лёгкий агент (keygen на клиенте, доставка по публичной сети, MDM не нужен).
  • iOS/Android — sing-box с подпиской от control plane; MDM в лёгкой роли (раздать приложение
    • при желании запушить URL подписки как managed-app-config); Telegram-пинок для применения на iOS.
  • Директорские устройства с редким реконфигом — можно оставить IKEv2 (нативно, минимум софта).
  • Headscale — не внедряем, держим как ориентир.